本文以stm32f103vb-fmse平臺,fm1280(國密芯片)SE芯片為例介紹在第三方OS上適配ID2-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(); }
使能ID2載體為SE。
ID2 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": [{ ....... }] }
在服務端驗證調試結果。
文檔內容是否對您有幫助?