摘要:本文主要采用基于博流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. [ABC205E] White and Black Balls 题解

    White and Black Balls 题目大意 将 \(n\) 个白球,\(m\) 个黑球排成一列,要求满足 \(\forall i\in[1,n+m],w_i\le b_i+k\),问存在多少 ...

  2. NOI 2023 春季测试 游记

    开坑,待填. upd: 摆,不想填,但还是来填坑了. \(Day -1\) 看板子,什么都不会.发现自己已经不会写十二月刷了一整个题单的线段树合并了,感慨了一下自己连鱼都不如的记忆力,不过反正春测不考 ...

  3. WC 2023 冬眠记

    打得很烂,果然还是太菜了. Day -? 连第二课堂都听不懂,我选择冬眠. Day 1 发压缩包时看大小猜测今年又有交互题.果不其然. 那就只剩下两道可做题了(悲) 通读题面,尝试思考 T1,无果,周 ...

  4. 一个基于Vue模型的表单生成器

    哈喽,我是老鱼,一名致力于在技术道路上的终身学习者.实践者.分享者! Vuetify Form Base是一个基于模型的表单生成器,目的是提供一个工具,以便以较少的努力从任何模型数据生成可编辑的表单, ...

  5. File --JAVA

    File --JAVA 构造方法 方法 说明 public File (String pathname) 根据文件路径创建对象 public File (String parent, String c ...

  6. Golang 面向对象深入理解

    1 封装 Java 中封装是基于类(Class),Golang 中封装是基于结构体(struct) Golang 的开发中经常直接将成员变量设置为大写使用,当然这样使用并不符合面向对象封装的思想. G ...

  7. windows上时间项目时间正常,Ubuntu16.04上时间错误

    项目本次测试时间正常,放到服务器上时间差8个小时 1.查看Ubuntu系统时间,发现时间设置错误 date -R 该命令会把我们系统的时间还有时区显示出来,我们是属于东八区,如下图: 如果不是 +08 ...

  8. .NET快速对接极光消息推送

    什么是消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息推送& ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (139)-- 算法导论11.4 3题

    三.用go语言,考虑一个采用均匀散列的开放寻址散列表.当装载因子为 3/4 和 7/8 时,试分别给出一次不成功查找和一次成功查找的探查期望数上界. 文心一言: 在开放寻址法中,当散列表的装载因子超过 ...

  10. Django学习(一) 之 环境搭建

    写在前面 最近比较迷AI绘图,那就上个图吧,我感觉还挺好看的. 可能会有人说,之前不一致分享的是flask吗,怎么突然改到django了? 这个问题问得好,开发环境遇到了一些小困难! 不过django ...