《阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录》
在上一篇文章我们分析了C-SDK的移植流程一级程序框架, 为了快速的体验一下这个移植流程,本文按照上篇文章提供2 种移植方式分别举例如何移植。官方的快速 移植案例为:Quick_start, 我对移植案例进行整理和修改,为了快速的体验,我们使用ubuntu来运行示例程序,原因是SDK中已经提供了HAL_XXX接口函数的实现。
移植环境:
SDK版本:v3.0.1
程序运行环境:ubuntu18.04.2 64bit
物联网设备类型:高级版+物模型,物模型使用SDK提供的 \src\dev_model\examples\model_for_examples.json, 具体如何使用,物联网的文档中有详细的说明。
在阿里云物联网上创建的自己设备四元组(具体内容做了隐藏):
{
"ProductKey": "xxxxxxxxxxx", //隐藏
"ProductSecret":"xxxxxxxxxxxxxxxx" //隐藏
"DeviceName": "20190810001",
"DeviceSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" //隐藏
}
一、使用SDK自带的编译系统进行移植
1、修改源码中 wrappers/os/ubuntu/HAL_OS_linux.c
由于我们选择的是物联网高级版+物模型,所以将我们在阿里云上创建的产品设备的四元组信息填到上图的位置,这里可能会有一个疑惑:难不成以后每次 移植都要这么改,那岂不是很不灵活,答案:否,SDK提供了设备四元组设定的API函数,这里只是为了快速的体验,因为SDK的编译系统会默认编译该文件和 linkkit_example_solo.c 示例代码。
2、在源码目录下,执行 make menuconfig。
注意必须是Ubuntu 16 版本以上。如果版本不够,可以在Windows下执行相应的脚本,执行该命令的目的是 选择 我们要使用的 SDK中的 功能,毕竟SDK支持的功能很多,我们不需要全都选择。如下图所示:
SDK中默认就是物联网设备 高级版+物模型,所以这里其实不用做任何修改,直接save就可以了,然后就会在目录下生成make.setting,其中罗列了我们选择的功能。这个make.setting尽量不要自己编写,还是用make menuconfig比较方便,也不容易出错,make.setting不仅仅是为了让我们检查我们选择了那些功能,它更是 “提取脚本extract.sh”的输入文件,提取脚本根据make.setting中选择的内容,提取对应功能的源码,输出到output的eng下。
3、执行 make 命令。
SDK自带的编译系统(gcc)会对整个源码进行编译,编译完成后,会显示编译了哪些文件,选择了哪些功能,以及各功能的ROM、RAM等所需大小,如下图所示:
make 指令还会自动运行extract.sh ,将我们选择的功能对应的源码抽取到 output/eng目录下,所以 执行make 后会有下面几个结果:
(1)编译 我们选择的功能对应的代码。
(2)执行extract.sh,将我们所选的功能的相关代码抽取到output目录 下。
(3)生成库文件 output/release/lib ,对于我们有用的就是
libiot_sda.a -- iot 核心软件功能静态库。
libiot_hal.a -- iot HAL层 静态库,可以理解为底层硬件驱动接口驱动,这里使用的默认Ubuntu对应的HAL案例。