六步带你完成博流 wifi 模组对接华为云流程
摘要:本文主要采用基于博流 wifi 模组以及我们的 SDK 移植实现华为云的对接,上报数据以及命令下发等,希望对您有所帮助。
1 简介
首先需要研究透彻博流项目的编译运行流程,首先看其根目录中包括 components(组件),customer_app(多个 demo 示例)。以 sdk 根目录的 customer_app 文件夹中存在大量的 demo 示例,以 bl602_demo_wifi 为例,主要看 3 个文件,genromap、Makefile、proj_config.mk。
我们知道在运行代码时只需要在控制台输入命令./genromap 即可,分析其内部细节,依旧是采用 make+参数的形式,则会根据其参数调用同文件夹下的 Makefile 文件,在该 makeifle 文件中包含了使用的组件以及对应的头文件名称如我们在 components 中添加的 iot_link 组件文件夹以及相应的头文件。在该 Makefile 中最后一行调用到了主 Makefile 即 $(BL60X_SDK_PATH)/make_scripts_riscv/project.mk 文件,该文件会编译调用使能的组件中的 buffalo.mk 文件,将所有的目标文件链接到一起,生成.bin 文件。
接下来看一下一个典型的 buffalo.mk 文件,如下图,按照如下格式进行组件中的代码添加,当然也可以灵活使用宏定义进行统一控制,主要包括一些源文件以及头文件的路径以及名称的添加,以及注释掉的 CPPFLAGS 以及 LDFLAGS 等等。
2 适配 osal 层
需要将 FreeRTOS 适配到我们的 SDK 中,首先学习 FreeRTOS 的常用接口以及具体使用功能方式,进行适配,FreeRTOS task 需要手动删除的特点,由于创建 task 使用较少,这里我只做了简单的适配,没有深究该细节,因此在调用 osal 创建任务的时候最好还是手动 delete 一下。
3 添加自动连接 wifi 任务
4 添加 lwm2m 使能
首先根据我们 sdk 中的 iot.mk 文件确定哪些文件需要添加进行编译,这里有两种方式一种是依旧采用宏定义方式,将 iot.mk 文件替换为 buffalo.mk 文件,在其中完成一个完整的组件调用包括各种宏定义组件开关配置,对于该方式需要在相应文件中进行宏定义的使能,如 proj__config.mk。还有一种快速方式直接打散原 sdk 提取对应的.c 和头文件,虽然速度快,不易出错,但是打散结构是我们不提倡的,代码结构层次不够清晰,比较适合小白。
(1)源文件列举
(2)头文件列举
注意尽量规避同名头文件的使用,否则容易出错,如我们的 sdk 中的 queue.h 需要删除。
5 sal 层适配
由于了 lwm2m 内部使用 tcpip 因此如果使用 awkka-lwm2m 适配需要适配 tcpip 层,即 sal 层的适配,在我们 sdk 的 network/tcpip/sal,注意其中的源文件要添加到上述 iot_link 的 src 中,之后适配 sal 层,由于博流 sdk 中使用的标准的 lwip,这里我们导入 lwip_imp.c 即可。同时需要在主文件中添加如下代码。同时原来 demo 的 main 函数中的 ticip_init()函数,因为该函数已在 link_tcpip_init()中执行。
6 注释掉虚引用函数
对于本项目中应该包括
oc_lwm2m_al.c 中__attribute__((weak)) int oc_lwm2m_imp_init(void)函数;
osal.c 中的__attribute__((weak)) int os_imp_init(void)函数;
lwm2m.c 中的__attribute__((weak)) int lwm2m_imp_init(void)函数。
sal.c 中的__attribute__((weak)) int link_tcpip_imp_init(void)函数。
注意不要注释掉__attribute__((weak)) int netdriver_install()函数,因为该函数不是每个板子都需要适配驱动,如果需要自己实现才进行注释,否则编译报错。
如果拷贝完整工程需要如下三步
需要您操作的 3 步
(1)将上述文件 iot_link 组件添加到 bl_iot_sdk 的 component 路径下。
(2) 将 bl602_demo_wifi 中的 demo 删除,之后将文件夹中的 bl602_demo_wifi 拷贝过去。
(3) 该 project.mk 代码我删除了该代码的 264 行的 Werror=all
本文分享自华为云社区《博流 wifi 模组对接华为云流程》,原文作者:星辰 27 。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/508623ae0e161329060a00769】。文章转载请联系作者。
评论