ESP32-C3手动烧录bin文件
一、应用程序的启动流程
宏观上,该启动流程可以分为如下 3 个步骤:
一级引导程序 被固化在了 ESP32-C3 内部的 ROM 中,它会从 flash 的 0x0 偏移地址处加载二级引导程序至 RAM (IRAM & DRAM) 中。
二级引导程序 从 flash 中加载分区表和主程序镜像至内存中,主程序中包含了 RAM 段和通过 flash 高速缓存映射的只读段。
应用程序启动阶段 运行,这时第二个 CPU 和 RTOS 的调度器启动。
(摘自:应用程序的启动流程 - ESP32-C3 - — ESP-IDF 编程指南 latest 文档 (espressif.com))
二、烧录内容
共需要烧录三部分内容:
1. bootloader.bin
ESP-IDF 软件引导加载程序 (Bootloader) 主要执行以下任务:
- 内部模块的最小化初始配置;
- 如果配置了 Flash 加密 和/或 Secure,则对其进行初始化。
- 根据分区表和 ota_data(如果存在)选择需要引导的应用程序 (app) 分区;
- 将此应用程序镜像加载到 RAM(IRAM 和 DRAM)中,最后把控制权转交给此应用程序。
引导加载程序位于 flash 的 0x0 偏移地址处。
(摘自:引导加载程序 (Bootloader) - ESP32-C3 - — ESP-IDF 编程指南 latest 文档 (espressif.com))
2. partition-table.bin
分区表(partition table )是 ESP-IDF 框架中实现的一种分配 flash 的方式 ,对 spiflash{read|write|erase} 等接口进行了封装,增加了越界检查,同时尽量避免了直接操作 flash 地址,所以更加简单安全,但分区表擦写操作本身不具备擦写均衡,如果希望使用分区表存储用户数据,只建议存储不会频繁更改的数据。
3. 应用程序.bin
应用程序对应bin文件。
三、烧录对于地址与指令
内容 | 起始地址 |
---|---|
bootloader.bin | 0x0000_0000 |
partition-table.bin | 0x0000_8000 |
应用程序.bin | 0x0001_0000 |
其中COM3为对应的COM口,要根据实际进行修改
1 | python -m esptool --chip esp32c3 --port COM3 --baud 460800 write_flash -z 0x0 bootloader.bin |
1 | python -m esptool --chip esp32c3 --port COM3 --baud 460800 write_flash -z 0x8000 partition-table.bin |
1 | python -m esptool --chip esp32c3 --port COM3 --baud 460800 write_flash -z 0x10000 应用程序.bin |
四、总结
这样的烧录结果与调用idf.py -p COM3 flash
的效果一致。
五、附件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HUII's Blog!
评论