ESP32-P4 --- 启动流程
执行一级引导程序(内含复位向量代码) |
根据复位原因及 GPIO_STRAP_REG 寄存器的值确定启动模式,比如 UART 下载模式、从 FLASH 加载二级引导程序执行 |
加载二级引导程序,执行入口函数call_start_cpu0() | 根据分区表的配置,加载应用程序 |
通过应用程序二进制文件的头部找到入口地址 call_start_cpu0() ,并跳转到该地址执行 |
固化在芯片ROM 一级引导程序 在 PRO CPU 执行 |
程序位于 components/bootloader 二级引导程序 |
程序位于 components\esp_system\port\cpu_start.c 应用程序:硬件和基本 C 语言运行环境的端口初始化 |
||
在 call_start_cpu0() 内调用 start_other_core() 启动 APP CPU,APP CPU 随即执行 call_start_cpu1()
|
call_start_cpu1() 自旋, 等待变量 s_resume_cores 置一后才能往下执行 |
call_start_cpu0() 函数最后执行 start_cpu0_default() - 最后执行freertos task
call_start_cpu1() 函数最后执行 start_cpu_other_cores() - 最后一直delay
|
start_cpu0_default() 的 do_secondary_init() 设置全局变量致使 APP CPU 退出自旋 | 启动调度器,执行第一个task(main_task),其内调用app_main |
APP CPU 启动,从 call_start_cpu1() 开始执行 |
应用程序:软件服务和 FreeRTOS 的系统初始化 | 应用程序:运行主任务并调用 app_main |
一级引导程序的 log
ESP-ROM:esp32p4-20230811 Build:Aug 11 2023 rst:0xc (SW_CPU_RESET),boot:0x31f (SPI_FAST_FLASH_BOOT) SPI mode:DIO, clock div:1 load:0x4ff2bbd0,len:0x73c load:0x4ff2dbd0,len:0x20ec load:0x4ff34cd8,len:0x1748 entry 0x4ff2bc40
标签:
ESP32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2023-03-29 struct inode
2018-03-29 Qt ------ WAV 音频文件播放
2017-03-29 JavaScript包括什么