本文以stm32f103vb-fmse平台,fm1280(国密芯片)SE芯片为例介绍在第三方OS上适配ID²-SE的方法。
步骤一:适配OSA层
适配日志打印。
下面以通用Linux OS系统函数为例进行说明。
a.实现ls_osa_print。
void ls_osa_print(const char *fmt, ...) { va_list va_args; va_start(va_args, fmt); vprintf(fmt, va_args); va_end(va_args); }
b.实现ls_osa_snprintf。
int ls_osa_snprintf(char *str, size_t size, const char *fmt, ...) { va_list args; int rc; va_start(args, fmt); rc = vsnprintf(str, size, fmt, args); va_end(args); return rc; }
适配内存管理。
a.实现ls_osa_calloc。
void *ls_osa_calloc(size_t nmemb, size_t size) { return calloc(nmemb, size); }
b.实现ls_osa_free。
void ls_osa_free(void *ptr) { free(ptr); }
适配时间相关信息。
a.实现ls_osa_msleep。
void ls_osa_msleep(unsigned int msec) { usleep(msec * 1000); }
b.实现ls_osa_get_time_ms。
long long ls_osa_get_time_ms(void) { struct timeval tv; long long ret = 0; gettimeofday(&tv, NULL); ret = tv.tv_sec * 1000 + tv.tv_usec / 1000; return ret; }
步骤二:设置编译工具链
修改make.rules,设置CROSS_COMPILE为用户平台对应的交叉工具链,例如:
CROSS_COMPILE := /usr/bin/arm-linux/arm-linux-
步骤三:编译并运行示例程序
在SDK根目录,执行make命令,完成样例程序的编译。
$ make clean
$ make
生成./out/bin/id2_app
后运行id2_app。
如果出现以下日志,说明上述的OS接口和编译环境设置正确。
<LS_LOG> id2_client_get_id 649: ID2: 000FFFFFDB1D8DC78DDC****
<LS_LOG> id2_client_generate_authcode 170:
============ ID2 Validation Json Message ============:
{
"reportVersion": "1.0.0",
"sdkVersion": "2.0.0",
"date": "Aug 23 2019 18:17:13",
"testContent": [{
.......
}]
}
<LS_LOG> id2_client_generate_authcode 186: =====>ID2 Client Generate AuthCode End.
步骤四:SE驱动适配
适配SE芯片驱动接口。
根据SE芯片驱动的控制方式,需要适配以下3个驱动接口。
a.适配se_open_session。
irot_result_t se_open_session(void** handle) { // 示例代码:SE 初始化,打开SE芯片电源 fm_open_device(); fm_device_init(); fm_dev_power_on(); }
b.适配se_transmit。
irot_result_t se_transmit(void* handle, const uint8_t* cmd_apdu, const uint32_t cmd_len, uint8_t* rsp_buf, uint32_t* rsp_len) { // 示例代码:发送apdu指令,并获取response result = pfm_SeFunc->fm_apdu_transceive(xxx) }
c.适配se_close_session。
irot_result_t se_close_session(void* handle) { // 示例代码:关闭设备,关闭SE芯片电源 fm_close_device(); fm_power_off(); }
使能ID²载体为SE。
ID² Client SDK编译时默认选择Demo为载体。适配好SE芯片后,需要将配置工程的载体切换为SE芯片。请进入make.settings修改CONFIG_ID2_KM_SE为y。
#Link ID2 Config CONFIG_ID2_DEBUG := n CONFIG_ID2_OTP := n CONFIG_ID2_KM_SE := y ----> 修改为y
重新编译运行。
$ make clean && make $ ./out/bin/id2_app
如果移植正确,会生成和Demo示例相同格式的测试结果。测试结果为JSON格式。
============ ID2 Validation Json Message ============: { "reportVersion": "1.0.0", "sdkVersion": "2.0.0", "date": "Aug 23 2019 18:17:13", "testContent": [{ ....... }] }
在服务端验证调试结果。
文档内容是否对您有帮助?