platformio中arduino框架下esp32 flash信息修改问题

问题描述:

购买的esp32-wroom-32E的flash明明是16MB,但是为什么在烧录的时候只能显示1MB?

回答:

在platformio中选择板子的时候,给的模板默认是4MB的模板。4MB又会被分成5个区。下图是flash的一个分区表,用arduino的话,代码是存放在app0区的,也就是你的代码区仅有0x140000大小。

问题描述:

我希望我的代码区尽可能的大,不需要其他分区,应该怎么做?

回答:

在工程目录文件夹下,新建一个userFlash.csv文件,文件名随便,格式是csv。然后打开,你可以直接用vscode打开,把下面这个粘贴进去,官方给出了常见的分区。arduino-esp32/tools/partitions at master · espressif/arduino-esp32 · GitHub。一定要注意如果使用excel打开,不用逗号。因为csv文件本身是以逗号作为表格分割符的。但是你用vscode打开,他其实跟你用txt打开csv文件是一样的,一定要加逗号。分区的数值总的来说是你的实际flash大小,当然比他小也没事。

# 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,0x370000,

之后在platformio.ini中添加 board_build.partitions = partitions.csv

此时你再次编译就不会出现问题了。(烧录还是会有问题的)

问题描述:

已经修改了flash分区表,编译也没问题了,但是就是烧录不了

回答:

是编绎时没接入板,与板的flash大小没关。修改配置无效,是因为编绎程序首先认为板是默认4M大小的。而pio run -t menconfig 只是修改配置项,只能在编绎成功时才能将配置一起并入目标码,可能这个编译顺序错误或提示错误。所以就要了解从哪里读到的是4M大小。plaftfromio 新建项目时,要选择板,其实每种板子都有它的配置文件。plaftfromio 先读取的是配置文件。由与是选的板子是esp32 dev module ,所以 配置文件是 esp32_dev.json。

解决: 修改 板的配置文件,这里是 esp32_dev.json.windows 一般位于{userProfile}.platformio\platforms\espressif32\boards 目录下。环境重装时记得这里要改过来,否则项目又会报错~。

"upload": {

    "flash_size": "16MB",

    "maximum_ram_size": 327680,

    "maximum_size": 4194304,

    "require_upload_port": true,

    "speed": 460800

  },

至此,保存重启vscode 就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值