摘要:本文主要采用基于博流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 。

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

六步带你完成博流wifi模组对接华为云流程的更多相关文章

  1. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  2. 博流BL602&BL604开发板介绍

    在2020松山湖论坛上,博流智能科技(南京)有限公司销售副总裁刘占领介绍了基于RISC-V核的低功耗.高可靠Wi-Fi+BLE二合一SoC芯片BL602.主要应用领域包括人工智能与工业互联网,特别是电 ...

  3. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  4. 第六篇Scrum冲刺博客--Interesting-Corps

    第六篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 搜索页面以及音乐详情页面数据导入及测试 各界面数据请求云函数设计及实现 叶学涛 进行页面的优 ...

  5. 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  6. NFC模组,开发NFC功能 仅仅要几条指令的事情

    特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...

  7. android wifi P2P CONNECT, INVITE和JOIN流程选择

    android wifi P2P CONNECT, INVITE和JOIN流程选择

  8. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率

    1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...

  9. android camera(一):camera模组CMM介绍

    一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...

  10. 【转】android camera(一):camera模组CMM介绍

    关键词:android  camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210)  作者:xubin ...

随机推荐

  1. 虹科案例 | 丝芙兰xDomo:全球美妆巨头商业智能新玩法

    全球美妆行业的佼佼者丝芙兰,其走向成功绝非仅依靠品牌知名度和营销手段.身为数据驱动型企业,2018年以来,丝芙兰就率先在行业内采用虹科提供的Domo商业智能进行数据分析和决策,并首先享受了运营优化.效 ...

  2. 8.13 分治&二分&倍增&快速幂模拟赛总结

    今天太悲惨了qaq 考试概况: 总之疯狂挂分((( 根据题目说的四个算法,猜想每个算法按顺序对应一道题. \(T1\) 看起来不难,数据范围小,感觉应该就是把地图拆成四块来递归计算答案,不过分类讨论属 ...

  3. html5学习内容-5

    (一)文字环绕排版 文字环绕图形 shape-outside属性 margin-box:外边距环绕 padding-box:内边距环绕 border-box:边框环绕 content-box:内容环绕 ...

  4. 🔥🔥TCP协议:三次握手、四次挥手,你真的了解吗?

    什么是TCP网络分层 应⽤层 应用层是网络协议栈中的最顶层,主要负责应用程序之间的通信.其中一种常见的应用层协议是HTTP协议,它定义了应用程序之间如何传递报文. 传输层 传输层是为两台主机之间的应用 ...

  5. "拍牌神器"是怎样炼成的(二)--- 键鼠模拟之AutoIt

    不同于上一篇的WinAPI方法,这次让我们来看另一个更简单.有效的键鼠模拟方案,即通过COM组件AutoItX实现键鼠模拟. AutoIt AutoIt是一个免费软件,它使用一种类似BASIC的脚本语 ...

  6. 编写高性能C#代码 —— Span<T>

    Span 提供任意内存的连续区域的类型安全和内存安全表示形式.它是在堆栈而不是托管堆上分配的ref结构,是对任意内存块的抽象 . 1.关于Span 在NET Core 2.1中首次引入 提供对任意内存 ...

  7. gametime

    这道题是动态调试的考点,看了wp才有思路 像这样的游戏题一定要搞清楚他的具体游戏流程才能更好的做出来,然后根据他的思路去改掉相关的判断就可以了 攻防世界逆向高手题之gametime_攻防世界 game ...

  8. python列表之部分列表——切片

    目录 切片 全索引 半索引 负数索引 遍历切片 复制列表 切片 全索引 我们平常可能需要使用一个列表中的子列表,也就是部分元素,这个时候我们就需要用到切片这个功能啦 要创建切片,就如同range()函 ...

  9. 洛谷4159 [SCOI2009] 迷路(矩阵快速幂,拆点)

    题意:该有向图有 n 个节点,节点从 1至 n 编号,windy 从节点 1 出发,他必须恰好在 t 时刻到达节点 n.现在给出该有向图,你能告诉 windy 总共有多少种不同的路径吗?答案对2009 ...

  10. vertx 的http服务表单提交与mysql验证

    1.依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...