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

相关文章

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的