Ai-WB2系列模组linux开发环境搭建

article/2025/10/19 3:03:45

文章目录

    • 一、Ubuntu安装
        • 1.1 安装VMware Workstation Pro
        • 1.2 安装Ubuntu
    • 二、编译
    • 三、烧录固件到设备
        • 3.1 方式一:用命令行烧录
        • 3.2 方式二:用可视化软件烧录(windows)
    • 三、自定义工程如何修改Makefile
    • 四、开发资料

一、Ubuntu安装

在Linux下编译速度比windows快很多,一般推荐优先使用linux环境开发。Ubuntu是非常常见Linux操作系统。这里介绍下如何快速搭建Ubuntu虚拟机。

1.1 安装VMware Workstation Pro

下载 VMware Workstation Pro 16
安装
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
剩下的一直点下一步直到安装完成即可

激活:
打开VMware Workstation Pro ->帮助->输入许可证密钥。
学习用途:百度一下“vmware workstation 16许可证密钥”。
商业用途:到VMware官网购买正版许可证。

1.2 安装Ubuntu

直接下载安装好的Ubuntu20.04,百度网盘链接:
链接:https://pan.baidu.com/s/1xdTNaDjWQCaK38WbjrbA-A?pwd=z22u
提取码:z22u
下载完成后解压缩。

打开VMware Workstation Pro -> 文件 -> 打开 -> 选择下载并解压好的Ubuntu文件路径
在这里插入图片描述
直接开机即可,用户名和密码都是axk
在这里插入图片描述
Ubuntu虚拟机已经安装好Ai-WB2系列模组的开发环境,sdk位于主目录 -> bl_iot_sdk
在这里插入图片描述

下面括号内内容针对阅读此博文前已安装过Ubuntu的用户
{

  1. 无需重新安装Ubuntu
  2. SDK获取:git clone https://github.com/bouffalolab/bl_iot_sdk.git
  3. 打开终端,安装make,命令:sudo apt-get update、sudo apt-get install make
  4. 安装串口工具,此处选用cutecom,执行命令:sudo apt-get install cutecom
  5. 在 Linux 中添加用户到 dialout,执行命令:sudo usermod -a -G dialout $USER

}

二、编译

进入需要编译的工程目录,如进入hello world工程,命令:cd customer_app/get-start/helloworld,进行编译,命令./genromap
出现以下日志说明已经编译成功
在这里插入图片描述
编译生成的固件在build_out文件夹内: helloworld.bin

三、烧录固件到设备

3.1 方式一:用命令行烧录

  • 模组接线
Ai-WB2-XXUSB to TTL
TXRX
RXTX
IO8DTR
ENRTS
VDD3.3V
GNDGND

注意IO8在模组背面的圆点上

  • 开发板进入烧录模式:
    接USB到电脑,同时按下BURN和EN两个按键,先松开EN按键再松开BURN按键

将设备连接到虚拟机
在这里插入图片描述
设置串口日志波特率 :打开tools/flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_40M.dts,在uart{ }中设置,这里设置为115200
在这里插入图片描述

烧录执行命令行:

make flash_only

出现以下日志表示烧录成功
在这里插入图片描述
烧录完成后打开串口助手:sudo cutecom
在cutecom中设置好波特率后打开串口
在这里插入图片描述
复位模组后打印helloworld
在这里插入图片描述

3.2 方式二:用可视化软件烧录(windows)

下载软件:https://docs.ai-thinker.com/_media/ai-wb2/docs/v1.7.4-release.zip

  • 模组接线:
Ai-WB2-XXUSB to TTL
TXRX
RXTX
ENRTS
VDD3.3V
GNDGND

已验证支持的串口芯片有FT232、CH340。

开发板接线:
直接把usb接到电脑即可。
需要烧录的Parttion Table、Factory Params、Boot2 Bin文件分别位于:
v1.7.4-release\chips\bl602\partition\partition_cfg_4M.toml
v1.7.4-release\chips\bl602\device_tree\bl_factory_params_IoTKitA_40M.dts
v1.7.4-release\chips\bl602\builtin_imgs\boot2_isp_v5.6\boot2_isp_release.bin

编译生成的应用层固件烧录到Firmware Bin
注意
烧录工具和固件不要放到中文路径内
在这里插入图片描述

日志串口默认波特率为2000000,如果需要修改日志串口波特率可以在文件v1.7.4-release\chips\bl602\device_tree\bl_factory_params_IoTKitA_40M.dts内修改,修改后重新下载即可。
在这里插入图片描述

三、自定义工程如何修改Makefile

sdk里面的例程都比较简单,把所有的源文件都放在同一个文件夹里面就可以了,但是当我们的项目比较大的时候,会有很多的.c和.h文件,都放在同一个文件夹里面就会有点乱了,这时候把不同功能模块的代码放在不同的文件夹看起来就舒服很多了,怎么实现呢?

以最简单的helloworld工程为例,基于官方helloworld工程修改。
需求:

  1. 更改工程路径,把helloworld路径由bl_iot_sdk/customer_app/get-start/helloworld改为bl_iot_sdk/Ai-WB2-Demo/helloworld
  2. 增加一个文件夹component,component文件夹内新增hello.c和hello.h文件,把helloworld打印放到hello.c内

实现:

  1. 设置SDK路径
    修改helloworld内的Makeflie的sdk路径,由原来的
    BL60X_SDK_PATH_GUESS ?= $(shell pwd)
    BL60X_SDK_PATH ?= $(BL60X_SDK_PATH_GUESS)/…/…/…
    改为
    BL60X_SDK_PATH_GUESS ?= $(shell pwd)
    BL60X_SDK_PATH ?= $(BL60X_SDK_PATH_GUESS)/…/…

  2. 在component组件添加到Makeflie
    INCLUDE_COMPONENTS += component
    EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/component

  3. component文件夹内增加名为bouffalo.mk的Makeflie文件编译hello.c,bouffalo.mk内增加代码:

COMPONENT_OBJS := $(patsubst %.c,%.o, $(COMPONENT_SRCS))

完整工程见:https://gitee.com/chencong_cc/Ai-WB2-Demo.git

四、开发资料

安信可官网docs:https://docs.ai-thinker.com/wifi
bouffalolab官方SDK:https://github.com/bouffalolab/bl_iot_sdk,官方例程位于customer_app文件夹内。
编程指南:https://bouffalolab.github.io/bl_iot_sdk


http://chatgpt.dhexx.cn/article/0NrOWmuN.shtml

相关文章

用js动态显示当前时间

用setTimeout动态显示当前时间&#xff1a; <div class"showTime"></div> <script>var t null;tsetTimeout(time,1000);//开始运行function time(){clearTimeout(t);//清除定时器dt new Date();var y dt.getFullYear();var mt dt.getMonth()1…

js 获取当前gmt时间_javascript怎么获取当前时间?

javascript怎么获取当前时间&#xff1f;下面本篇文章就来给大家介绍一下使用javascript获取当前时间的方法&#xff0c;希望对大家有所帮助。 在JavaScript中可以使用Date对象中的Date()方法来获取当前时间。Date 对象用于处理日期和时间&#xff0c;Date()方法可返回当天的日…

【JavaScript】动态显示当前时间

可以实现动态显示当前时间&#xff0c;年月日时分秒星期几等&#xff0c;用12小时制表示&#xff0c;并能根据时间显示am&#xff08;上午&#xff09;&#xff0c;pm&#xff08;下午&#xff09;。 文章目录 一、基础知识二、动态显示系统当前时间1.代码2.展现效果 一、基础知…

用js显示当前时间

目录 以下是我全部代码 其中&#xff0c;关键代码是js 效果如图所示 关键代码解释如下 setInterval: getElementById: innerHTML: 在初步学习js时&#xff0c;可能会有一些朋友能用上js来显示时间&#xff0c;因此我在此提供一种方法供大家参考。 以下是我全部代码 <…

php js动态显示系统时间,基于javascript实现动态显示当前系统时间

本文实例讲解了javascript实现动态显示当前系统时间的详细代码&#xff0c;具体内容如下 (1)时间日期信息&#xff0c;应该在一个 中来显示 (2)定时器&#xff1a;每隔一秒再次访问系统时间&#xff0c;window对象的setTimeout() (3)时钟显示的时机(事件)&#xff1a;当网页加载…

原生JavaScript实现显示当前系统时间

1.一个html页面实现&#xff0c;js写在html里面 clock.html <!DOCTYPE html> <html> <head><meta charset"UTF‐8"><title>clock</title><style type"text/css">#clock {color: green;font‐size: 30px;}</…

Javascript获得系统当前时间

** 获取系统当前时间 ** 一、步骤与注意事项 首先使用new Date创建时间对象&#xff1b;&#xff08;定义一个Date对象的time&#xff09;分别从time中获取当前年、月、日、分、秒、星期几特别注意&#xff1a;月是从0开始的&#xff08;即1月是0&#xff09; 二、代码实现…

JavaScript动态显示当前时间

前端写项目时, 有时会需要获取当前时间, 虽然使用度不高, 难免有需要的时候. 下面整理获取当前时间代码思路 使用 new Date() 获取 当前时间的时间戳 getFullYear(): 时间戳转换的年份getMonth() 1: 月份getDate(): 日期getHours()getMinutes()getSeconds() 根据需要获取…

JavaScript 当前时间显示(js)

先设置一个空的div <div id"app"></div> js&#xff1a; <script>let _appdocument.getElementById("app");//计时调用let idsetInterval("test()",1000);function test() {let date new Date(); //当前时间let year dat…

大数据应用及其解决方案(完整版)

目录 1、大数据概述 1.1. 概述 1.2. 大数据定义 1.3. 大数据技术发展 2、大数据应用 2.1. 大数据应用阐述 2.2. 大数据应用架构 2.3. 大数据行业应用 2.3.1. 医疗行业 2.3.2. 能源行业 2.3.3. 通信行业 2.3.4. 零售业 3、大数据解决方案 3.1. 大数据技术组成 3.…

干货!大话EXT4文件系统完整版

一&#xff1a;VFS 我们知道SSD是一场存储革命&#xff0c;设计和制造一个好的SSD固然重要&#xff0c;但如何正确使用以充分发挥SSD性能同样重要。SSD内在的并行性和先擦再写的特性决定了它不同于机械硬盘简单的LBA和存储块一一对应&#xff0c;要充分挖掘SSD的并行性&#xf…

对话腾讯云专家工程师常青,聊一聊全真互联网的“小小”变化

点击上方“LiveVideoStack”关注我们 三年时间&#xff0c;从“懵懂少年”到能从容应对客户需求&#xff0c;拥有更加成熟和成体系的业务线&#xff0c;覆盖更多场景的产品线&#xff0c;不仅有音视频的传输&#xff0c;还有实时消息的通讯&#xff0c;以及视频内容的制作。这背…

PM到SM,个人蜕变组织转型

转自本人运营的公众号“ 携程技术中心PMO”&#xff08;ID&#xff1a;cso_pmo&#xff09; 作者简介 李卫红&#xff0c;曾在博世工作13年&#xff0c;从项目经理&#xff0c;到项目管理流程&#xff0c;考核&#xff0c;培训&#xff0c;教练体系的构建&#xff0c;再到项目…

BCI2008中文翻译版

BCI2008中文翻译版 转载来源 转载来源 https://blog.csdn.net/shenshikexmu/article/details/51251769 如论文[1]发表的那样&#xff0c;数据包含9个被试的脑电EEG数据。被试都是右利手&#xff0c;有正常或者矫正正常视力&#xff0c;并且领取实验报酬。所有被试坐在有扶手的…

阿里P9专家右军:以终为始的架构设计

P 右军 读完需要 17分钟 速读仅需 6 分钟 右军(于君泽)&#xff0c;蚂蚁金服P9技术专家&#xff0c;在 IT 领域从业超过十五年。对 高并发、分布式架构、内建质量、研发管理有一些心得。维护公众号“技术琐话”&#xff0c;合著有《深入分布式缓存》、《架构宝典》、《程序员的…

精准测试系列产品白皮书2020版

上篇【星云精准测试】 &#xff08;附精准测讲解视频和白皮书下载&#xff09; 第一章 精准测试诞生的背景 20年前&#xff08;2000年&#xff09;&#xff0c;上网是一件很酷的事&#xff0c;叫做“网上冲浪”&#xff0c;主要是几个门户网站占据绝大多数注意力&#xff1b…

Camtasia2020mac喀秋莎中文免费密钥

Camtasia 2020 for Mac是一款非常专业的屏幕录像编辑软件&#xff0c;它不仅能够为您录制屏幕还可以为您进行音频、视频编辑&#xff0c;设置插图&#xff0c;缩放局部画面&#xff0c;画中画效果以及设置过渡效果等等&#xff0c;非常的强大。 Camtasia 2020for Mac是TechSmi…

暴风转码转超清文件_暴风影音16破解版下载-暴风影音16多开精简版(附怎么用) v9.4.1029.1111...

暴风影音这款播放神器相信有些年头的人基本上都用过&#xff0c;想当初那在播放器界可谓是一霸&#xff0c;功能十分的好用而且还基本上是免费的&#xff0c;那会别的播放器看不了的视频&#xff0c;它可以看&#xff01;别的播放器下载不了的视频。它可以下载&#xff01;总之…

算法应该怎么“玩”?

特别提示 本课程为王晓华老师达人课课程&#xff0c;需要购买训练营课程的同学请点击下方链接&#xff1a; 28 天玩转算法-第02期 课程介绍 市面上关于算法的书可谓琳琅满目&#xff0c;有经典但难啃的、也有简单入门的、更有独辟蹊径的&#xff0c;不过这些大多数都是偏理…

区块链全景课

课程介绍 区块链和数字货币的浪潮已经席卷全球&#xff0c;其火爆程度无需多言。越来越多人渴望跟上时代趋势&#xff0c;快速学习区块链&#xff0c;以指导自己的投资和创业。在频繁的演讲中&#xff0c;我能深切感受到各行各业的朋友对区块链的热情&#xff0c;包括 IT 圈、…