首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESP32 MicroPython调整分区大小

ESP32 MicroPython调整分区大小
EN

Stack Overflow用户
提问于 2021-05-07 19:09:20
回答 3查看 172关注 1票数 0

我正在使用带有Mu的MicroPython的ESP32。我需要更多的闪存空间来存放我的代码,通常我会在Arduino菜单中选择“巨型应用程序”,这样就可以删除OTA和spiffs。

如何使用MicroPython固件执行此操作?我可以想象,可以通过终端,使用esptool.py或Ampy,但无法弄清楚。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2021-05-07 23:39:57

我一直在做同样的事情,只是还没有真正做到。

我在这里找到了不同固件的选项:https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo

有一些预置固件选项可供选择,我发现它们中的大多数都非常有用。

如果这不是您想要的,我认为您需要使用esptool中的一个选项来更改分区布局。

首先,确保您正在使用的ESP具有正确的闪存大小分配。(有些可能有我发现的外部芯片,不确定您使用的是哪块板)

我以前从来没有这样做过,所以我没有资格给你关于它的信息。

票数 1
EN

Stack Overflow用户

发布于 2021-09-22 03:33:50

在MicroPython中没有简单的方法来更改分区。您将需要修改分区表并从源代码编译MicroPython。下面是如何使用Ubuntu20.04.2设置MicroPython构建环境。您也可以将Windows子系统用于Linux版本2的Ubuntu 20.04.2。

如果您正在使用新安装的Ubuntu或Windows Subsystem for Linux,请使用apt-get更新和升级Ubuntu。

代码语言:javascript
复制
sudo apt-get -y update
sudo apt-get -y upgrade

使用apt-get安装所需的构建工具。

代码语言:javascript
复制
sudo apt-get -y install build-essential libffi-dev git pkg-config cmake virtualenv python3-pip python3-virtualenv

使用git克隆esp-idf SDK存储库并安装--这将需要一段时间。

代码语言:javascript
复制
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf/
./install.sh

获取esp-idf export.sh脚本以设置所需的环境变量。使用./export.sh作为源文件而不是运行它是很重要的。在编译MicroPython之前,您需要获取该文件的源文件。

代码语言:javascript
复制
source export.sh
cd ..

使用git克隆MicroPython存储库。

代码语言:javascript
复制
git clone https://github.com/micropython/micropython.git

更新git子模块并编译MicroPython交叉编译器

代码语言:javascript
复制
cd micropython/
git submodule update --init
cd mpy-cross/
make
cd ..
cd ports/esp32

您可以通过编辑ports/esp32中的partitions.csv文件来更改ESP32分区大小。在更改partitions.csv文件时,您应该注意一些事情。MicroPython应用程序驻留在factory分区中。此分区必须足够大,可容纳MicroPython固件,并且必须放置在与0x10000 (64K)对齐的偏移量处。vfs分区是虚拟文件系统所在的位置。

为4MB闪存设备配置的通用partitions.csv文件如下所示:

默认partitions.csv文件内容

代码语言:javascript
复制
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 0x180000,
vfs,      data, fat,     0x200000, 0x200000,

factory分区从0x10000开始(根据需要对齐到64K ),大小为0x180000。这将把factory分区的末尾放在(0x10000 + 0x180000)或0x190000。下一个分区是vfs分区,它从0x200000 (2MB)开始,大小为0x200000 (2MB)。这会在factory分区的末尾和vfs分区的开头之间留下0x200000 - 0x190000 = 0x70000或448K字节的未使用闪存。将未使用的闪存添加到factory分区会导致新的factory分区大小为0x180000 + 0x70000 = 0x1F0000或64K小于2MB。

修改的partitions.csv文件内容

代码语言:javascript
复制
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 0x1F0000,
vfs,      data, fat,     0x200000, 0x200000,

如果需要更多的“工厂”闪存空间,你可以减小vfs分区的大小,增加相同数量的偏移量,然后将新释放的空间添加到工厂分区。

已修改3MB出厂分区和960K虚拟文件系统分区的partitions.csv文件内容。

代码语言:javascript
复制
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 0x300000,
vfs,      data, fat,     0x310000, 0xF0000,

计算出分区大小后,构建MicroPython固件。

代码语言:javascript
复制
make all

构建文件将位于firmware.bin -GENERIC目录中。如果您一直在运行其他固件或修改了分区表,则必须在将新固件刷新到设备之前进行擦除。将PORT=设置为esp32的usb串行端口。

代码语言:javascript
复制
make PORT=/dev/ttyUSB0 erase
make PORT=/dev/ttyUSB0 deploy

此时,您应该已经在使用新分区大小的ESP32设备上运行了MicroPython。您可以使用以下命令通过usb端口连接到REPL:

代码语言:javascript
复制
make PORT=/dev/ttyUSB0 monitor
票数 1
EN

Stack Overflow用户

发布于 2021-06-15 02:50:02

最简单的选择是使用带有SPIRAM的ESP32,并使用支持它的固件之一。

虽然LoBo是第一个,但现在大多数MicroPython家族都很好地支持它。

https://micropython.org/download/esp32/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67433856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档