写点什么

六步带你完成博流 wifi 模组对接华为云流程

发布于: 2021 年 01 月 21 日

摘要:本文主要采用基于博流 wifi 模组以及我们的 SDK 移植实现华为云的对接,上报数据以及命令下发等,希望对您有所帮助。

1 简介


首先需要研究透彻博流项目的编译运行流程,首先看其根目录中包括 components(组件),customer_app(多个 demo 示例)。以 sdk 根目录的 customer_app 文件夹中存在大量的 demo 示例,以 bl602_demo_wifi 为例,主要看 3 个文件,genromap、Makefile、proj_config.mk。


image


我们知道在运行代码时只需要在控制台输入命令./genromap 即可,分析其内部细节,依旧是采用 make+参数的形式,则会根据其参数调用同文件夹下的 Makefile 文件,在该 makeifle 文件中包含了使用的组件以及对应的头文件名称如我们在 components 中添加的 iot_link 组件文件夹以及相应的头文件。在该 Makefile 中最后一行调用到了主 Makefile 即 $(BL60X_SDK_PATH)/make_scripts_riscv/project.mk 文件,该文件会编译调用使能的组件中的 buffalo.mk 文件,将所有的目标文件链接到一起,生成.bin 文件。


image


接下来看一下一个典型的 buffalo.mk 文件,如下图,按照如下格式进行组件中的代码添加,当然也可以灵活使用宏定义进行统一控制,主要包括一些源文件以及头文件的路径以及名称的添加,以及注释掉的 CPPFLAGS 以及 LDFLAGS 等等。


image


2 适配 osal 层


需要将 FreeRTOS 适配到我们的 SDK 中,首先学习 FreeRTOS 的常用接口以及具体使用功能方式,进行适配,FreeRTOS task 需要手动删除的特点,由于创建 task 使用较少,这里我只做了简单的适配,没有深究该细节,因此在调用 osal 创建任务的时候最好还是手动 delete 一下。


3 添加自动连接 wifi 任务


image


4 添加 lwm2m 使能


首先根据我们 sdk 中的 iot.mk 文件确定哪些文件需要添加进行编译,这里有两种方式一种是依旧采用宏定义方式,将 iot.mk 文件替换为 buffalo.mk 文件,在其中完成一个完整的组件调用包括各种宏定义组件开关配置,对于该方式需要在相应文件中进行宏定义的使能,如 proj__config.mk。还有一种快速方式直接打散原 sdk 提取对应的.c 和头文件,虽然速度快,不易出错,但是打散结构是我们不提倡的,代码结构层次不够清晰,比较适合小白。


(1)源文件列举


image


(2)头文件列举


注意尽量规避同名头文件的使用,否则容易出错,如我们的 sdk 中的 queue.h 需要删除。


image


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()中执行。


image


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()函数,因为该函数不是每个板子都需要适配驱动,如果需要自己实现才进行注释,否则编译报错。


image


如果拷贝完整工程需要如下三步


需要您操作的 3 步


(1)将上述文件 iot_link 组件添加到 bl_iot_sdk 的 component 路径下。


(2) 将 bl602_demo_wifi 中的 demo 删除,之后将文件夹中的 bl602_demo_wifi 拷贝过去。


(3) 该 project.mk 代码我删除了该代码的 264 行的 Werror=all


image


本文分享自华为云社区《博流 wifi 模组对接华为云流程》,原文作者:星辰 27 。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 01 月 21 日阅读数: 26
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
六步带你完成博流wifi模组对接华为云流程