1.系统f复位阶段需要关注的GPIO
ESP32-S2 系列芯片共有 3 个 Strapping 管脚(GPIO0,GPIO45,GPIO46),这几个IO口默认都是内部上拉/下拉的,在芯片的系统复位(上电复位、RTC 看门狗复位、欠压复位、模拟超级看门狗 (analog super watchdog) 复位、晶
振时钟毛刺检测复位)过程中,这3个GPIO的状态会被写入锁存器中,直到MCU关机。

- GPIO45:用来选择外部flash的供电电源,此外如果flash是1.8V的话,那么其它信号线也要做一下电平转换。

- GPIO0:用串口下载时,需要提前将此IO短接到GND,然后在上电,即可进入下载模式。
- GPIO46:用来关闭日志的操作,关闭日志打印,可以节约部分功耗。此外datasheet中说可以由 eFuse 位控制切换到 DAC_1 管脚(这个后面在研究)
2.片上存储
ESP32-S2 系列芯片片上存储包括:
- 128 KB ROM:用于程序启动和内核功能调用,(乐鑫把常用的函数封装到ROM中,这里也有BL0,第一阶段boot)
- 320 KB 片上 SRAM:用于数据和指令存储
- RTC 快速存储器:为 8 KB SRAM,可被主 CPU 访问,在 Deep-sleep 模式下可以保存数据
- RTC 慢速存储器:为 8 KB SRAM,可被主 CPU 或协处理器访问,在 Deep-sleep 模式下可以保存数据
- 4 Kbit eFuse:其中 1792 位保留给用户使用,例如用于存储密钥和设备 ID
3.地址映射
更详细的可以查看官方文档
下图中的灰色部分为ROM预留的内存,不是开发给客户的。灰色地址不可用

同时从esp-idf中发现,这些常用的c库函数都 已经赋予了指针,所以大胆猜测,这些函数已经集成进ROM中了
.....
memccpy = 0x4001ab00;
memchr = 0x4001ab24;
memcmp = 0x4001ab40;
memcpy = 0x4001aba8;
memmove = 0x4001acb0;
memrchr = 0x4001acec<

本文详细解读ESP32-S2芯片的系统复位阶段GPIO设置,包括Strapping管脚作用、片上存储结构、地址映射、时钟配置,以及如何编写入口函数和理解分区表。特别关注GPIO在不同功能中的应用和内存布局优化。
最低0.47元/天 解锁文章
1906

被折叠的 条评论
为什么被折叠?



