参考资料:
应用程序的启动流程 - ESP32-C3 - — ESP-IDF 编程指南 latest 文档
一,芯片复位运行的流程
1,上电复位执行一级引导程序(固化在芯片ROM,无法修改)
2,一级引导程序工作:
根据芯片boot启动模式判断是否SPI,或下载启动模式
如果是spi启动模式,则从flash 0x0处加载二级引导程序到IRAM中运行。
如果是下载启动模式,则等待UART0/USB(jtag)接口
Boot启动模式
获取bootstrap 3个引脚的状态(寄存器GPIO_STRAP_REG 0x0038 ):
GPIO2 GPIO8 GPIO9(弱上拉)
1 x 1 SPI启动 (加载flash中的程序)
1 1 0 下载启动 模式(UART0 或 USB )
Note: 启动时,一般是将程序加载到IRAM运行;但是 寄存器(地址:0x42000000)= 0xaebd041d时,直接在flash运行.
eFuse存储器控制一级引导程序启动打印:
eFuse 的 EFUSE_UART_PRINT_CONTROL
=0 默认,打印
=1 GPIO8=0 上电打印 GPIO8=1 上电不打印
=2 GPIO8=1 上电打印 GPIO8=0 上电不打印
=3 不打印
3,二级引导程序: 从flash加载分区表信息,加载主程序(app_main)到RAM,并处理主程序所有数据和代码段,flash高速映射只读段(从flash运行时)。
二级引导程序路径:(build/bootloader/bootloader.bin)
二,分析启动流程相关信息
0,分析前准备工作
0.1 硬件连接
1,开发板 USB-jtag 接电脑 USB
2,开发板UART0 接 USB-TTL, 再接 电脑USB (UART0是ESP32C2调试信息默认输出接口。
0.2 打开三个终端:helloworld项目终端,openOCD终端,telnet终端。
开始分析:
获取固件信息(二级引导程序、