移植Linux(No MMU)到ESP32-S3

news/2025/10/1 17:12:58/文章来源:https://www.cnblogs.com/jeason1997/p/19122455

主要原理是利用mini-rv32ima,在EPS32上运行一个riscv32模拟器,在模拟器里运行无需MMU版的主线Linux 6.X

这位大佬已经把mini-rv32ima移植到esp32-s3的PlatformIO里的Arduino平台上,代码看着好像很简单,就几个脚本:来了来了,用单片机 ESP32-S3 跑 RISC-V 模拟器运行 Linux,这次启动只要 8 秒 | Architecting Life

主要移植思路参考它的文档即可,我主要是做出一些小修改,让他移植的这个兼容不同版本的EPS32-S3

 

git clone https://github.com/jeason1997/esp32s3-rv32ima.git

vscode安装platformio,建议直接在微软的CodeSpaces里操作,安装快很多

通过platformio打开esp32s3-rv32ima这个项目

在菜单栏底部,选择对应的模板

image

 点击下方的✔开始编译

image

编译完成后,在项目文件夹下的'.pio/xxx(开发板的名字)/‘下面会发现生成的引导,分区表跟固件

image

 

烧录参考官方文档:Flashing Firmware - ESP32-S3 - — esptool latest documentation

esp的程序会生成3个文件,一个引导文件bootloader.bin烧录到0x0处,一个分区表烧录到0x8000处,主程序固件烧录到0x10000处

像NuttX,Arduino,MicroPython等,它们都是在生成ESP32的固件的时候把它们合并到一个bin里了,所以直接烧录到0x0就行

esptool --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 write_flash -z \
0x0 .pio/build/esp32s3/bootloader.bin \
0x8000 .pio/build/esp32s3/partitions.bin \
0x10000 .pio/build/esp32s3/firmware.bin

 

 

移植到Arduno工程:

1.把src目录提取出来即可,然后把main.cpp改为xx.ino(跟文件夹同名),才能被arduino识别

2.把emulator文件夹内的脚本都挪到外面,Arduino好像识别不了文件夹里的代码

3.把mini-rv32ima.c里的 #include <esp32/spiram.h> 改为 #include "esp32-hal-psram.h",否则编译会报错找不到头文件

4.把分区表挪到根目录,并改名为 partitions.csv (这一步骤可选)

image

5.Arduino里的配置

image

需要改的地方:

Flash Mode:选QIO 120MHz(DIO:2脚数据线 较慢 兼容性好,QIO:4脚数据线 中等,OPI:8脚数据线 快速 但我板子上的不是这种Flash)

Flash Size:改为对应的容量

PSRAM:一般集成在芯片里的是8脚数据线的高速SPI,选 OPI 模式,如果是自己焊接连在外面的,例如8个引脚的ESP-PSRAM,这种就是4跟数据线的,选 QSPI 模式

Partition Scheme:可以选里面对应容量的分区模板,也可以选Custom,选Custom的话,要确保根目录有 partitions.csv 分区表来实现自己分区

# 8MB分区表
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,     
otadata,  data, ota,     0xe000,  0x2000,     
app0,     app,  ota_0,   0x10000, 0x3A0000,   
app1,     app,  ota_1,   0x3B0000,0x3A0000,   
spiffs,   data, spiffs,  0x750000,0xB0000,# 16M分区表
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x640000,
app1,     app,  ota_1,   0x650000,0x640000,
spiffs,   data, spiffs,  0xc90000,0x360000,
coredump, data, coredump,0xFF0000,0x10000,

 

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

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

相关文章

关于ws连接coinex偶尔会出现几分钟不更新数据的问题 - Charlie

一、环境 1、语言:go 二、服务概况三、现象 lark告警群中偶尔会出现coinex的btc和eth同时告警,但是他们的最后一次告警时间不相同,代码的告警逻辑是:每隔30s定时从数据库中查询redis中btc和eth的数据updateTime字段…

dz网站后台好的网页制作公司有哪些

智慧公安作为公安信息化开展到高级阶段的一种警务形态&#xff0c;“智慧公安”主要采用物联网、云计算、无线通讯、智能动态感知分析等新一代信息技术,将公安工作IT根底设备与物理设备、人际环境等高度交融,以提供智能化公安决策与效劳。智慧警务大数据云平台开发情报研判系统…

网站建设目标和功能介绍潍坊网站建设方案

华为北向网管NCE开发教程&#xff08;1&#xff09;闭坑选接口协议 华为北向网管NCE开发教程&#xff08;2&#xff09;REST接口开发 华为北向网管NCE开发教程&#xff08;3&#xff09;CORBA协议开发 本文一是记录自己开发华为北向网管遇到的坑&#xff0c;二是给需要的人&…

购物网站的前台功能网页设计教程书籍推荐

安装 VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads 版本: 6.1和7.0+版本都可以 安装: windows上安装需要admin权限,右键菜单选中 “Run as administrator” 安装 CentOS 6.10 地址:https://vault.centos.org/6.10/isos/x86_64/ 版本: 如果不需要GUI,选择…

【C#】以 BlockingCollection 为核心的多相机 YOLO 检测任务处理框架 - 指南

【C#】以 BlockingCollection 为核心的多相机 YOLO 检测任务处理框架 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南 - 教程

上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南 - 教程2025-10-01 17:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impo…

CAD安装Error 1402权限问题解决

问题描述 由于历史版本卸载不干净,在安装CAD过程中报错 1402,具体如下: Error 1402 Could not open key:UNKNOWN\Components\BCC6186334A64285641057ABAF4A6…Verify that you have sufficient access to that key,…

题解:P9868 [NOIP2023] 词典

原题传送门。 显然,如果我们想要把一个字符串字典序尽量小,我们把这个字符串中的字符从小到大排序就行了;反过来就是把字符串中的字符从大到小排序就行了。 我们可以暴力地对于每个字符串排序,然后对于每一个字符串…

304、渭城曲

304、渭城曲304、渭城曲 唐●王维 渭城朝雨浥轻尘,客舍青青柳色新。 劝君更尽一杯酒,西出阳关无故人。【现代诗意译】 清晨的渭城 下起了一场春雨 沾湿了路边的轻尘 旅店周围 青青柳条越发清新老朋友 再喝一杯饯别酒…

AtCoder Beginner Contest 425

AtCoder Beginner Contest 425 A ~ G 题解A,B H₂O题。 A 题直接模拟,记得 \(-1^x\) 的性质。 B 题构造题,每次往空格里填最小的可用数字即可。 C 这道题就相当于有一个数字圆环,每次求其中的一段区间的和。、 嗯?…

实用指南:MySQL InnoDB表压缩:性能优化全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

采集网站开发网站页面设计和结构的技巧

一、 开始的开始——调研、还是调研、一直在路上…… 在只有关于疫情给老年人的带来的问题大方向下&#xff0c;我去到街上随机的拉老年人进行调研。这是我第一次如此频繁的跟陌生老年人沟通。此期间&#xff0c;跟他们的沟通中我发现除了口音上的差异&#xff0c;还有更多的是…

AT_agc052_b [AGC052B] Tree Edges XOR

考虑边权转点权,让边权满足其为相邻点权的异或和,操作变成交换两个点的点权。 随便钦定一个为根,设 d i ​ 为初始时 i 的点权,f i ​ 是 i 期望得到为多少。如果存在 d,f,满足它们是相同的集合,就有解。 注意到…

pc开奖网站开发绵阳网站建设维护

1. 安装软件准备1.1. 软件准备1.zabbix-2.4.8.tar.gz zabbix-3.0.31.tar.gz下载地址&#xff1a;https://www.zabbix.com/download2.php5.4.16.tar.gz下载地址&#xff1a;https://www.php.net/downloads.php1.2. 注意事项安装过程路径、密码尽量不要出现中文、特殊字符、空格、…

详细介绍:C语言指针进阶(进阶)

详细介绍:C语言指针进阶(进阶)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

背单词 纯英文 2025年10月

2025-10-02coronation, horrific, pal, 2025-10-01quack, dais, notation, replicate, despoil,bizarre, differentiate, banister, intelligible, incest,obligatory, deviate, recourse, delineate, haversack

「Diary Solution Set」October 2025 在凉雨停歇的那天

2025.10.1 国庆节日常被作业包围。将世界最后的空白刻印在斑驳心海 而我等蜉蝣只得抒发不足日的无奈 无名歌者哼唱着积雨云为之落泪的歌在人海发现 ARC 原来有这么多优质计数。

潍坊网站建设小程序公司企业邮箱怎么登陆

转自&#xff1a;http://blog.csdn.net/warrior_zhang/article/details/41453327 机器学习的常用方法&#xff0c;主要分为有监督学习(supervised learning)和无监督学习(unsupervised learning)。 监督学习&#xff0c;就是人们常说的分类&#xff0c;通过已有的训练样本&am…

macOS Tahoe All In One

macOS Tahoe All In OnemacOS Tahoe All In One全新 Liquid Glass 设计,看着亮丽,感觉舒心,一用好熟悉。 连续互通再进化,现已连通 iPhone 上的电话 App 和实时活动功能。 直接用“聚焦”执行数百种操作,敲敲键盘…