当前位置: 首页 > news >正文

移植Linux(No MMU)到ESP32-S3

主要原理是利用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.hskmm.com/?act=detail&tid=22367

相关文章:

  • 关于ws连接coinex偶尔会出现几分钟不更新数据的问题 - Charlie
  • 【C#】以 BlockingCollection 为核心的多相机 YOLO 检测任务处理框架 - 指南
  • CAD安装Error 1402权限问题解决
  • 智能体详解——极简深度研究Agent
  • 题解:P9868 [NOIP2023] 词典
  • 304、渭城曲
  • AtCoder Beginner Contest 425
  • AT_agc052_b [AGC052B] Tree Edges XOR
  • 背单词 纯英文 2025年10月
  • 英语背单词 专八词汇 中英对照 2025年10月
  • 「Diary Solution Set」October 2025 在凉雨停歇的那天
  • macOS Tahoe All In One
  • 风力发电机输出功率模型综述 - 详解
  • 2025年小红书创作者影响力分析报告:基于10.5万条素材构建评估模型,识别高影响力内容特征,优化推荐算法与运营策略,涵盖用户分层、互动数据、地理位置分布,提供内容策略优化与创作者成长建议。
  • MaopaiJD Esp8266 代码
  • 英语_错题集_25-10
  • 公民科学研究奖项众人智慧表彰技术创新项目
  • 25.10.1随笔联考总结
  • C# WPF {x:Reference}的作用
  • Ynoi Easy Round 2015 学习笔记
  • 1数学建模模型分类
  • 数学每日?题
  • 最大公约数和最小公倍数
  • OpenSpeedy最新版下载,夸克百度网盘加速提速|游戏加速工具|官网入口
  • Nginx核心配备详解:访问控制、用户认证与HTTPS部署
  • 5. 最长回文子串
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤
  • 2025 年搅拌机设备厂家 TOP 企业品牌推荐排行榜,盘点磁混凝系统 / 发酵罐 / 刮泥机 / 推进式 / 脱硫侧搅拌机公司推荐!
  • 福州市 2025 国庆集训 Day1 前三题题解
  • Python常用数据类型详解:字符串、列表、字典全解析