BL808 Linux 支持WIFI 固件编译流程

2024-02-20 04:12

本文主要是介绍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 固件编译流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726998

相关文章

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Linux下屏幕亮度的调节方式

《Linux下屏幕亮度的调节方式》文章介绍了Linux下屏幕亮度调节的几种方法,包括图形界面、手动调节(使用ACPI内核模块)和外接显示屏调节,以及自动调节软件(CaliseRedshift和Reds... 目录1 概述2 手动调节http://www.chinasem.cn2.1 手动屏幕调节2.2 外接显

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL