载体为软件沙箱的设备接入自建设备管理系统
本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍了ID²设备端SDK的集成方法。
本文介绍了ID²设备端SDK的集成方法,适用于以下场景:
没有使用阿里云物联网平台。
载体类型为软件沙箱。
烧录方式为动态下发。
设备端必须预留50K ROM、4K RAM、4K存储分区(用于ID²的安全存储,需保证系统升级时该分区数据不被破坏)。
设备端SDK介绍
ID² SDK打包集成了阿里云IoT在设备端的安全框架和安全组件,下载并解压后,在id2目录中您将得到以下文件:
目录 | 说明 |
libs | 根据您在控制台选择的参数,编译好的库文件,包括debug和release两个版本,调试阶段请使用debug版本,正式产品请使用release版本。 |
src | 包括3部分代码: port:适配层相关代码,需要根据实际情况做适配修改。 sample:API调用的参考代码。 test:测试代码,用于集成调试。 |
inc | 头文件。 |
demo | 一个完整的示例项目,可以直接编译运行。 |
Makefile | 编译脚本。 |
README | 使用说明。 |
设备端SDK集成
- 实现ID²适配层代码
针对不同的操作系统和硬件平台,ID²抽象出统一的OSA层接口和HAL层接口,这些接口需要您根据使用的具体操作系统和硬件平台来实现,ID² SDK中的其他模块会调用这些接口。
(1)OSA层
OSA层是操作系统适配层,需要适配的代码在inc/ls_osa.h中定义,并非所有接口都需要实现,具体参考下表,您可以直接在src/port/ls_osa.c中实现。
接口 | 说明 | 是否必须 |
ls_osa_print | 格式化打印 | 是 |
ls_osa_snprintf | 字符串格式化 | 是 |
ls_osa_malloc | 内存分配 | 是 |
ls_osa_calloc | 内存分配 | 是 |
ls_osa_free | 内存释放 | 是 |
ls_osa_net_connect | 创建网络连接 | 否 |
ls_osa_net_disconnect | 断开网络连接 | 否 |
ls_osa_net_send | 发送数据 | 否 |
ls_osa_net_recv | 接收数据 | 否 |
ls_osa_get_time_ms | 获取系统当前时间戳 | 是 |
ls_osa_msleep | 睡眠函数 | 否 |
ls_osa_mutex_create | 创建互斥锁 | 否 |
ls_osa_mutex_destroy | 销毁互斥锁 | 否 |
ls_osa_mutex_lock | 互斥锁上锁 | 否 |
ls_osa_mutex_unlock | 互斥锁解锁 | 否 |
(2)HAL层
HAL层是软件沙箱使用的与具体硬件相关的接口,需要根据实际情况适配,具体参考下表。接口定义在inc/ls_hal_km.h,实现代码请放在src/port/ls_hal_km.c。
接口 | 说明 | 是否必须 |
ls_hal_get_dev_id | 获取设备唯一ID | 是 |
ls_hal_open_rsvd_part | 打开存储分区,如不支持文件系统,直接返回0即可 | 是 |
ls_hal_write_rsvd_part | 向指定的分区中写入数据 | 是 |
ls_hal_read_rsvd_part | 从指定的分区中读出数据 | 是 |
ls_hal_close_rsvd_part | 关闭打开的存储分区,如不支持文件系统,直接返回0即可 | 是 |
OSA层和HAL层的详细接口定义参见:
https://help.aliyun.com/document_detail/117166.html
动态下发和烧录
参考src/sample/otp.c,完成ID²动态下发逻辑的集成,动态下发的详细流程如下:
(1)设备端调用id2_client_get_otp_auth_code接口生成动态下发认证码;
(2)服务端调用otpGetId2接口请求动态下发ID²数据;
(3)设备端调用id2_client_load_otp_data接口解析、验证和烧录ID²数据到设备中。
第(1)(3)步操作必须在同一进程中执行,否则无法正常烧录。动态下发需要服务端配合完成,请先完成ID²服务端的对接,参考文档:
调试验证
调试验证前,需要确保设备中已经正常烧录ID²,之后按如下流程调试:
(1)将src/test目录下源码和头文件加入项目工程中,编译运行;
(2)运行结果如下图所示:
(3)按照IoT安全中心-资产管理-直连设备- ID²接入指引-集成安全SDK-设备端集成验证的指引,将运行结果复制到设备端适配验证工具中,进行验证。
业务代码集成
参考src/sample/runtime.c,完成ID²设备认证、数据解密相关逻辑的集成。
- 本页导读 (0)