作为一名在车机嵌入式耕耘多年的嵌入式工程师,此前我从未接触过蓝牙和无线相关的开发工作。前段时间参与了全志的开发板适用活动,幸运地被免费开发板砸中。到手发现这个板子具有蓝牙5.0和WLAN功能。兴奋之余立马尝试了一下。
开发环境的搭建
受工作环境影响,我习惯Windows开发环境。官方的指导手册对windows下的开发仅给出了依赖于cygwin的方案,实测下来踩坑不少,耗时数小时也未完全解决(linux和windows的tool-chain都会报错)。气恼之余,又尝试在wsl2下进行开发(windows下仅用过这一个虚拟机),可在编译镜像这一步又出现了不明报错,提示缺少config文件。再次气恼,搁置数天,直到今天发现官方给了完整开发环境的docker镜像(吐槽一下官网的资料太分散了,能放到一个页面下吗),才终于顺利进入代码环节。遂写改文,记录从环境配置(水字数啦~~~可能对部分朋友有帮助)到调通WLAN的全过程。
1、运行wsl2
wsl和相应的linux开发板均可在Microsoft Store中免费获取,也可以通过在powershell(管理员)里通过以下命令安装:
wsl --install
我使用的linux发行版为ubuntu-22.04.
安装完成后,在powershell中输入 wsl
即可进入虚拟机,此时可通过bash shell与linux内核进行交互。
此处我已通过 cd
命令进入usr目录(没错,我的用户名就是Mosaic :])
- 获取dockers镜像
首先需要下载docker,百度一下即可。值得好主意的是需要在Dockers Desktop Settings的General中允许在wsl中运行。
现在即可在wsl中拉去官方提供的docker镜像,命令为
docker pull docker pull verdureorange/ubuntu_xr806:v2
注意:FreeRtos对应的版本是V2,V1对应的是OpenHarmony环境。
拉去完成后,执行下面的命令即可创建容器,并以命令行的方式进行交互。
docker pull verdureorange/ubuntu_xr806:v2 bash
3、编译
该镜像没有vi编译器,所以要安装一个以便后续基于example进行代码修改.(不需要sudo,sudo会报错)
apt install vim
然后进入example的目录下
cd ~/xr806_sdk/project/example/wlan
用vim打开main.c文件,将此处的账号密码改为你工作环境下的wifi账号密码。
保存后执行 cd ~/xr806_sdk/
回到项目根目录。然后按照官方的教程依次执行下面的代码进行编译
cp project/example/wlan/gcc/defconfig .config
make build
编译完成后,在wlan目录下的image目录下的xr806文件夹中找到编译好的.img文件。
4、烧录
这又是一个可能踩坑的地方。烧录程序在tools目录下,又windows,linux,mac等多个版本,而官方只给了windows版的教程。为了不踩坑(懒),我们直接将编译好的镜像文件拷贝出来,在wsl下(注意:wsl下)以以下格式执行命令,将镜像文件拷贝到wsl当前目录:
docker cp 容器号: /xr806_sdk/project/demo/hello_demo/image/xr806/*.img ./
*.img为编译后的镜像名称,容器号可在wsl中通过 docker ps -a
查看
然后就可以用windows版烧录工具进行烧录啦,这里又有一个坑,必须安装CP0210xusb驱动才能发现串口。安装驱动并连接后,点击刷新发现串口,再点击升级固件即可。(烧录时没留图,临时补张别的,除了文件名别的区别不大。)
重新上电,登录你的路由器,是不是发现有新设备连接啦!