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的时延也很长。

有建议的朋友可在评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nest小结

一 :nest/cli 常见命令 1 生成中间件。 nest g middle name (生成中间件) 2 生成拦截器。 nest g interceptor name xxx 3 生成守卫。 nest g gu name xxx 二: 如何在项目中如何应用多个中间件? import { Injectable, NestMiddleware…

Python学习笔记——认识Python软件包

使用Python编写项目,经常会自定义一些模块文件(函数,类等),组织在不同的文件夹中,在其它Python文件中使用import语句导入使用。Python软件包和普通的文件夹不同之处在于有一个特定文件“__init__.py”。当导…

vue中的this.$emit方法:用于子组件中触发父组件方法并传值

vue中的this.$emit方法 使用一:$emit使用二:$emit update 和 .sync 修饰符 作用:用于子组件中触发父组件方法并传值 注意: $emit传入的事件名称只能使用小写,不能使用大写的驼峰规则命名。 使用一:$emit …

【正点原子STM32连载】 第五十五章 FreeRTOS移植实验 摘自【正点原子】APM32E103最小系统板使用指南

1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第五…

用Python制定旅行计划

编写一个Python脚本,用于制定旅行计划。这个脚本将询问关于旅行的基本问题,并根据回答生成一旅行计划。以下是示例脚本: def create_travel_plan(): # 询问用户目的地 destination = input("请输入您的目的地:") # 询问旅行日期 start_date = input("请…

【Kuiperinfer】笔记02 GoogleTest入门

文章目录 Google Test基本概念 编写测试头文件AssertionTESTTest FixtureInvoking the Tests编写main()函数 参考 Google Test Google Test是用于编写C测试的框架,支持多种类型的测试,而不是只有单元测试(unit test)。 编写测试…

weblogic8版本修改控制台密码

weblogic的8.1老版本在控制台界面上没有修改密码的按钮选项,因此需要通过修改服务器配置文件来更新密码。 步骤1: 备份域目录下的DefaultAuthenticatorInit.ldift文件 通过find /域目录 -name weblogic.jar 查到jar包,通过命令生成文件 …

css3的var()函数

css3的var()函数 变量要以两个连字符--(横杆)(减号)为开头 变量可以在:root{}中定义, :root可以在css中创建全局样式变量。通过 :root本身写的样式,相当于 html,但优先级比后者高。 在CSS3中,var()函数是一个用于插入CSS自定义属性&#xff…

Vulhub 靶场训练 DC-6解析

一、搭建环境 kali充当攻击机 ip地址是:192.168.200.14 DC-6充当靶机 : IP地址暂时未知 注意:让两台机器的使用同一种网络适配器 二、信息收集 1、探索同网段存活的主机 ①第一种方法 arp-scan -l②第二种方法 netdiscover -i eth0 -…

Python内置函数67个语法、参数和用法详解

要获取Python解释器中所有当前可用的内置函数和变量的完整列表,您可以在Python解释器中使用dir(__builtins__)命令。这将返回一个包含所有内置函数、异常和其他内置对象的列表。 分为10类 数学运算(7): abs 绝对值divmod 商和余数max 最大min最小pow 指数幂round 取整sum 求…

npm/nodejs安装、切换源

前言 发现自己电脑上没有npm也没有node很震惊,难道我没写过代码么?不扯了,进入正题哈哈…… 安装 一般没有npm的话会报错: 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称而且报这个错,我们执行…

【骑行新纪元】社交风暴来袭,你准备加入骑友圈了吗?

当你的自行车轮轻轻滑过清晨的露水,你是否曾想与志同道合的骑友分享这一刻的喜悦?骑行,这个曾经只是简单运动的代名词,如今正在悄然转变。随着科技的进步和社交平台的发展,骑行不再只是一种健身方式,它还带…

【机器学习】是什么?——讲解

机器学习 机器学习是人工智能(AI)的一个子领域,它提供了系统通过数据学习并改进其性能的能力,而不需要人为进行显式编程,机器学习模型利用大量的数据样本(训练数据)来学习如何识别模式和关系&a…

C-指针-010

1指针 1.1语法: 【基类型*指针变量名】 【int *p&a】1.2语义: 【基类型】:指针变量指向的目标的数据类型 【*】:表示此时定义的变量是一个指针类型的变量 【&a】:一块存放着int类型数据的空间的地址 【*p】…

slot全局属性 <slot>标签</slot> ::slotted()伪元素 笔记240223

slot全局属性 标签 ::slotted()伪元素 MDN HTML全局属性 MDN HTML全局属性 slot MDN HTML <slot>标签元素 MDN CSS ::slotted()为元素 MDN 使用 templates and slots <slot>标签 <slot>标签是的 display 是 contents 在Web开发中&#xff0c;<s…

【高德地图】Android搭建3D高德地图详细教

&#x1f4d6;Android搭建3D高德地图详细教程 &#x1f4d6;第1章 高德地图介绍✅了解高德地图✅2D地图与3D地图 &#x1f4d6;第2章 搭建3D地图并显示✅第 1 步&#xff1a;创建 Android 项目✅第 2 步&#xff1a;获取高德Key✅第 3 步&#xff1a;下载地图SDK✅第 4 步&…

照片上多余的人怎么处理?这几种方法让你的照片更完美!

照片怎么去掉多余人像&#xff1f;这是许多摄影爱好者经常遇到的问题。有时候&#xff0c;我们拍摄了一张非常美好的照片&#xff0c;但由于某些原因&#xff0c;照片中出现了不希望出现的人物。这时候&#xff0c;我们该如何处理呢&#xff1f;下面&#xff0c;我将分享几种常…

2.5网安学习第二阶段第五周回顾(个人学习记录使用)

本周重点 ①多进程和多线程 1、进程和线程 2、多线程爆破 ②Redis数据库 1、Redis的使用 2、Redis持久化 3、Redis未授权免密登录 ③嗅探和Python攻击脚本 1、嗅探&#xff08;端口扫描和IP扫描&#xff09; 2、SCAPY的应用 3、Python攻击脚本&#xff08;SYN半连接…

【More Effective C++】条款22:采用op+=取代op+优势

采用operator实现operator优点&#xff1a; 降低维护成本&#xff0c;只需要维护operator即可&#xff1b;如果operator为publicoperator不需要称为class的友元&#xff1b;通过模板的方式自动实现operator版本&#xff1b;提供两种操作方式&#xff0c;operator效率高&#x…

计算机网络-局域网

文章目录 局域网局域网拓扑结构以太网以太网传输介质以太网时隙提高传统以太网带宽的途径以太网帧格式 局域网协议IEEE 802参考模型IEEE802.2协议LLC帧格式及其控制字段LLC提供的三种服务 IEEE 802.3协议IEEE 802.4协议IEEE 802.5协议 高速局域网100M以太网千兆以太网万兆以太网…