珠海金盾电子科技有限公司

联系我们

13482583038

技术资料

您的当前位置:首页 > 新闻中心 > 技术资料

DX8加密芯片应用开发手册(四)

发布时间:2017-09-01浏览次数:载入中...来源:珠海金盾电子科技有限公司

芯片 www.oldsongmovie.cn

7.??? DX8_API库函数详细介绍

这章节主讲DX8_API函数的详细介绍的第一部分系统函数


7.1. 系统函数:


7.1.1. 获取API版本


u8_x *DX8_Version(void);

功能描述: 获取DX8_API版本

参数:? ? ? ?void

返回值:?? 字符串指针

示例代码:

char *apiVersion = DX8_Version();

printf(“Version = %s\n”, apiVersion);


7.1.2. 复位设备


u8_x? DX8_Reset(void);

功能描述:复位DX8芯片,并获取芯片的配置信息

参数:? ? ? void

返回值:? 成功返回0,否则返回错误代码

示例代码:

u8_x rv;

rv = DX8_Reset();

if (rv) {

?? printf(“Reset device failed, rv = 0x%.2x\n”, rv);

?? return rv;

}

DX8_Reset获取DX8芯片的配置信息存储在CHIP_INFO dx8_info结构体中,dx8_info在库中已经定义,在DX8_API.h头文件extern 出来了,用户可以直接访问dx8_info来获取芯片的信息,如SNUIDZone的配置模式等:

? ? ? CHIP_INFO结构体C定义:??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHIP_INFO结构体Java类定义:

? ? ? ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ??? ? ? ? ? ? ? ?


DX81/DX82芯片基本信息列表:


Product

Type

PageSize

(Bytes)

ZoneNum

ZoneSize

(Bytes)

EEPROM

(Bits)

DX81系列芯片

DX81C01

0x10

16

4

32

1K

DX81C02

0x11

4

64

2K

DX81C04

0x12

4

128

4K

DX81C08

0x13

32

8

128

8K

DX81C16

0x14

16

128

16K

DX81C32

0x15

16

256

32K

DX81C64

0x16

16

512

64K

DX81C128

0x17

64

16

1024

128K

DX81C256

0x18

16

2048

256K

DX82系列芯片

DX82C01

0x20

16

4

32

1K

DX82C02

0x21

4

64

2K

DX82C04

0x22

4

128

4K

DX82C08

0x23

32

8

128

8K

DX82C16

0x24

16

128

16K

DX82C32

0x25

16

256

32K

DX82C64

0x26

16

512

64K

DX82C128

0x27

64

16

1024

128K

DX82C256

0x28

16

2048

256K


SN:? 8个字节,每颗芯片有全球唯一的序列号,永远无法修改

UID7个字节,用户可以对每个产品自行设置ID号,设置后可锁定,永远无法修改,出厂时为全0xff

MID6个字节,厂商代码,只读

ZoneMode16个字节,每个字节对应一个Zone的配置信息,配置完成后将锁定,将永远无法修改,每个字节定义如下:


ZoneMode字节定义


Fuse1OTP字节,该字节每bit只能从1写成0 0永远无法再变成1该字节每bit代表相应配置信息的锁定状态,定义如下:


Fuse字节定义

说明:DX8芯片经专用烧录器个人化后,Fuse字节为0x00,即配置全部锁定。


7.1.3. 睡眠


u8_x? DX8_Sleep(void);

功能描述:使DX8芯片进入睡眠状态

参数:???? void

返回值:? 成功返回0,否则返回错误代码

示例代码:

u8_x rv;

rv = DX8_Sleep();

if (rv) {

?? printf(“Sleep device failed, rv = 0x%.2x\n”, rv);

?? return rv;

}


7.1.4. 唤醒


u8_x? DX8_Wakeup(void);

功能描述:唤醒DX8芯片进入工作状态,DX8_Reset()函数也可以唤醒DX8芯片

参数:???? void

返回值:? 成功返回0,否则返回错误代码

示例代码:

u8_x rv;

rv = DX8_Wakeup();

if (rv) {

?? printf(“Wakeup device failed, rv = 0x%.2x\n”, rv);

?? return rv;

}


7.1.5. 获取随机数


u8_x DX8_GetRandom(u8_x *random, u8_x len);

功能描述:从DX8芯片中获取真随机数,长度必须不大于32

参数:??? random?? 返回的随机数存储buffer

????????? len??????? 获取随机数的长度,最小为1,最大为32

返回值:? 成功返回0,否则返回错误代码

示例代码:

u8_x rv;

u8_x random[32];

rv = DX8_GetRandom(random, 32);

if (rv) {

?? printf(“Get Random failed, rv = 0x%.2x\n”, rv);

?? return rv;

}


7.1.6. 验证PIN


u8_x DX8_VerifyPin(u8_x *seed, u8_x *buf);

功能描述:验证PIN,主机对DX8进行验证,同时DX8对主机进行验证

参数:? ? ? seed? 输入32个字节的随机数,主机对DX8进行认证

? ? ? ? ? ? ? ? buf?? 输入8个字节PIN码,DX8对主机进行认证

返回值:? 验证通过返回0,否则返回错误代码

说明该函数不会将用户PIN码暴漏在传输线上,PIN码本身是对芯片配置权限作认证的,当芯片配置被全部锁定后,该函数任然可以用作Passwords Checking双向认证功能,芯片出厂PIN码为80xff

示例代码:

u8_x rv;

u8_x seed[32];

GetSoftRandom(seed,32);

rv = DX8_VerifyPin(seed, pin_value);

if (rv) {

?? printf(“Verify PIN failed, rv = 0x%.2x\n”, rv);

?? return rv;

}

说明:pin_value是在使用Dx8Configuration.exe时产生的dx8_engineer.h中定义,需要将dx8_engineer.h包含到应用程序中


待续......

【返回列表】
AbYHjaply8S5x5ledM7tz2qB9B021S0kq1j2mEGzBrQ8R5Az6d/r5ZgqNQxlfmVOn2RUFVv3ntFBFkEKscPnyW26UV8vfSC020l/FRswnB6JLyOcBP9x2toJ5+w0Gk1o
ag8 | 博狗 | 真人娱乐 | 真人娱乐 | 亚洲城 | 环亚娱乐 | 澳门金沙 | 澳门金沙 | 真人娱乐 | 澳门葡京 | bet | 博狗 | 葡京娱乐 | 澳门葡京 | 365bet | 亚游集团 | 真人游戏 | 原创漫画 | 公务员网 | 28杠 | 网上彩票 | 北京快乐8 | 优德 | ag8 | 金沙 | ag8 | 韦德 | 开奖 | bet |