六步带你完成博流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 。
六步带你完成博流wifi模组对接华为云流程的更多相关文章
- 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台
摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...
- 博流BL602&BL604开发板介绍
在2020松山湖论坛上,博流智能科技(南京)有限公司销售副总裁刘占领介绍了基于RISC-V核的低功耗.高可靠Wi-Fi+BLE二合一SoC芯片BL602.主要应用领域包括人工智能与工业互联网,特别是电 ...
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
- 第六篇Scrum冲刺博客--Interesting-Corps
第六篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 搜索页面以及音乐详情页面数据导入及测试 各界面数据请求云函数设计及实现 叶学涛 进行页面的优 ...
- 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!
下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...
- NFC模组,开发NFC功能 仅仅要几条指令的事情
特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...
- android wifi P2P CONNECT, INVITE和JOIN流程选择
android wifi P2P CONNECT, INVITE和JOIN流程选择
- MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...
- android camera(一):camera模组CMM介绍
一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...
- 【转】android camera(一):camera模组CMM介绍
关键词:android camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin ...
随机推荐
- docker入门加实战—部署Java和前端项目
docker入门加实战-部署Java和前端项目 部署之前,先删除nginx,和自己创建的dd两个容器: docker rm -f nginx dd 部署Java项目 作为演示,我们的Java项目比较简 ...
- 17.1 隐藏执行CMD命令
本章内容涉及使用Socket API和CMD命令行工具实现本地CMD命令执行.无管道正向CMD和无管道反向CMD三种功能.执行本地CMD实现使用CreateProcess函数创建一个新的CMD进程,并 ...
- DM数据库SQL分页案例
DM一哥们找我优化条分页的SQL语句,结果集很小返回99行数据,废话不说安排一下. 原始SQL语句如下,保密要求,给真实的表名换了别名: SELECT count(*) FROM (SELECT TM ...
- jap复制一条数据插入数据库,报:identifier of an instance of com.kxkd.shop.entity.goods.GoodsSpu was alt
因为修改了jpa实体id 可以先使用springframework的BeanUtils复制一个相同的对象 BeanUtils.copyProperties(source, target); //复制属 ...
- 解决IDEA中.properties文件中文变问号(???)的问题(已解决)
问题背景 构建SpringBoot项目时,项目结构中有一个application.properties文件.这个项目是Spring Boot一个特有的配置文件.内容如下(我写了一些日志的配置): 写到 ...
- Vue源码学习(十六):diff算法(三)暴力比对
好家伙,这是diff的最后一节了 0.暴力比对的使用场景 没有可复用的节点:当新旧虚拟 DOM 的结构完全不同,或者某个节点不能被复用时,需要通过暴力比对来创建新的节点,并在真实 DOM 上进行相 ...
- 高效开发与设计:提效Spring应用的运行效率和生产力
引言 现状和背景 Spring框架是广泛使用的Java开发框架之一,它提供了强大的功能和灵活性,但在大型应用中,由于Spring框架的复杂性和依赖关系,应用的启动时间和性能可能会受到影响.这可能导致开 ...
- 深入理解 BigBird 的块稀疏注意力
引言 基于 transformer 的模型已被证明对很多 NLP 任务都非常有用.然而,\(O(n^2)\) 的时间和内存复杂度 (其中 \(n\) 是序列长度) 使得在长序列 (\(n > 5 ...
- 【Javaweb】Servlet五 | HTTP协议【详解】
什么是HTTP协议 什么是协议? 协议是指双方或多方相互约定好,大家都需要遵守的规则,叫协议. 所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫做HTTP协议. HT ...
- Centos离线安装JDK+Tomcat+MySQL8.0+Nginx
一.安装JDK 注:以下命令环境在Xshell中进行. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep jdk 2.如果显示已安装openjdk则对其进行卸载. #卸载 rpm ...