本文主要是介绍BL808 Linux 支持WIFI 固件编译流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概述
接上一篇文章《BL808 Linux支持WIFI》,里面提供了了一个demo固件下载,固件中有几个问题:
1、LP核没有被拉起来
2、wifi热点连接接和xram_net模块都需要通过命令来拉起, 自己编译可改为自动执行。
3、D0核的loader代码中加了调试延时,过10秒左右才启动的内核
4、D0核的xram_net编译成内核模块,且没自动加载,IP配置也是固定的
5、LP核运行起来后会使M0核运行变慢。
目前对LWIP暂未做深入研究,大致思路是将Linux的从虚拟网口发送的包通过xram共享内存转发给rt-thread,然后再调用wifi驱动发送出去,在rt-thread侧收到wifi包时将其通过xram转发给Linux的虚拟网口,核心是围绕网络包的传递。我理解应该也可以在rt-threa侧实现一个虚拟网卡来应对Linux侧的虚拟网卡,然后利用LWIP的转发功能来实现包转发,欢迎懂的朋友可以评论区交流下。
编译M0核固件
拉取rt-thread代码
git clone https://gitee.com/daiyinger/rt-thread -b xram_net
M0核和LP核代码编译的详细步骤可参考bsp/bouffalo_lab/bl808/README.md文件,以下是简要步骤:
进入BL808 M0核代码编译目录
cd bsp/bouffalo_lab/bl808/m0
首次编译需执行
source ~/.env/env.sh
scons --menuconfig
pkgs --update
编译时执行
scons
最后会在当前目录下生成rtthread_m0.bin用于烧写
编译LP核固件
进入BL808 LP核代码编译目录
cd bsp/bouffalo_lab/bl808/lp
首次编译执行
scons --menuconfig
pkgs --update
编译时执行
scons
最后会在当前目录下生成rtthread_lp.bin用于烧写
目前发现LP核启动后M0核执行速度会变慢,除非在idle任务hook函数中加入WFI指令,知道原因的朋友欢迎留言。
编译D0核Loader
执行如下命令拉取loader仓库代码。
git clone https://github.com/daiyinger/Low-Starup-BL808 -b load_linux
将编译工具链路径加到环境变量PATH中,具体路径需根据自己存放位置做调整。
Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1工具链下载地址,也可参考下面Linux编译工具链下载步骤。
linuxtoolchain_gcc_t-head工具下载链接:百度网盘 请输入提取码 提取码:mqbe
export PATH=$PATH:/mnt/BL808/toolchain/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
export PATH=$PATH:/mnt/BL808/toolchain/linuxtoolchain_gcc_t-head/bin
执行 ./build.sh
编译结束后生成的out目录下的spl_bl808_d0.bin用于引导Linux,可将其替换到下面M1s_BL808_Linux_SDK/pre_build_bin目录下
编译D0核Linux Image
拉取Linux仓库代码
git clone git@github.com:daiyinger/M1s_BL808_Linux_SDK.git -b xram_net
进入M1s_BL808_Linux_SDK目录,参考readme文件下载工具链
mkdir -p toolchain/cmake toolchain/elf_newlib_toolchain toolchain/linux_toolchain
curl https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz | tar xz -C toolchain/cmake/ --strip-components=1
curl https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142243961/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz | tar xz -C toolchain/elf_newlib_toolchain/ --strip-components=1
curl https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz | tar xz -C toolchain/linux_toolchain/ --strip-components=1
如果上面的loader有更改,可将spl_bl808_d0.bin替换到pre_build_bin目录下
执行 ./build.sh all
编译完后在out目录下生成whole_img_d0.bin用于烧写
如需更改xram_net驱动,路径位于linux-5.10.4-808/drivers/net/xram_net/
如不需要每次都重新打包rootfs,可注释掉build.sh中的./mk_rootfs.sh
目前测试WIFI带宽不高,UDP往返测试也就200K左右,ping的时延也很长。
有建议的朋友可在评论区留言。
这篇关于BL808 Linux 支持WIFI 固件编译流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!