【FreeRTOS(零)】ESP32应用程序的启动流程
创始人
2024-02-17 04:34:32
0

文章目录

  • ESP32应用程序的启动流程
    • 应用程序启动阶段
      • 运行主任务

ESP32应用程序的启动流程

宏观上,该启动流程可以分为如下 3 个步骤:

  1. 一级引导程序 被固化在了 ESP32 内部的 ROM 中,它会从 flash 的 0x1000 偏移地址处加载二级引导程序至 RAM (IRAM & DRAM) 中。
  2. 二级引导程序 从 flash 中加载分区表和主程序镜像至内存中,主程序中包含了 RAM 段和通过 flash 高速缓存映射的只读段。
  3. 应用程序启动阶段 运行,这时第二个 CPU 和 RTOS 的调度器启动。

函数调用流程
(esp_system)call_start_cpu0 -> SYS_STARTUP_FN -> g_startup_fn -> start_cpu0 -> start_cpu0_default -> (freertos)esp_startup_start_app -> esp_startup_start_app_common -> main_task -> app_main ->


应用程序启动阶段

应用程序启动包含了从应用程序开始执行到 app_main 函数在主任务内部运行前的所有过程。可分为三个阶段:

  • 硬件和基本 C 语言运行环境的端口初始化。
  • 软件服务和 FreeRTOS 的系统初始化。
  • 运行主任务并调用 app_main

通常不需要了解 ESP-IDF 应用程序初始化的所有阶段。如果需要仅从应用程序开发人员的角度了解初始化,请注重 运行主任务


运行主任务

在所有其他组件都初始化后,主任务会被创建,FreeRTOS 调度器开始运行。

做完一些初始化任务后(需要启动调度器),主任务在固件中运行应用程序提供的函数 app_main

运行 app_main 的主任务有一个固定的 RTOS 优先级(比最小值高)和一个 可配置的堆栈大小。

主任务的内核亲和性也是可以配置的,请参考 CONFIG_ESP_MAIN_TASK_AFFINITY。

与普通的 FreeRTOS 任务(或嵌入式 C 的 main 函数)不同,app_main 任务可以返回。如果app_main 函数返回,那么主任务将会被删除。系统将继续运行其他的 RTOS 任务。因此可以将 app_main 实现为一个创建其他应用任务然后返回的函数,或主应用任务本身。

相关内容

热门资讯

功率1比8 智能化生产赋能山区... (来源:百姓关注)8月18日,随着最后一片30米T梁浇筑完成,沪昆高速公路扩容工程安盘段土建3标山区...
融创中国拟重组债务规模达95.... 8月18日,融创中国(企业简称)宣布拟进行一系列重组相关交易,包括发行强制可转换债券、向主要股东发行...
王忠林调研汉江国家实验室建设工... 8月18日下午,省委书记、省人大常委会主任王忠林在武汉调研汉江国家实验室建设工作并召开推进会。他强调...
时间调整!国泰海通将于9月实施... 21世纪经济报道记者 孙永乐 上海报道8月18日晚间,国泰海通(601211.SH)发布公告,宣告将...
嘉必优2025半年报解读:筹资... 嘉必优生物技术(武汉)股份有限公司2025年半年报显示,公司在上半年虽有亮眼成绩,但部分财务指标变动...
湖南发展2025半年报解读:信... 湖南能源集团发展股份有限公司(简称“湖南发展”)于2025年上半年在复杂的市场环境下,财务数据呈现出...
亚萨合莱收购云端安防平台Sit...   总部位于瑞典斯德哥尔摩的知名锁具公司亚萨合莱(Assa Abloy,ASAZF)周一宣布收购云端...
光启技术半年报出炉:营收净利双... (来源:北京商报)北京商报讯(记者 张茜琦)8月18日晚,光启技术发布2025年半年度报告。报告期内...
Avalanche 与波摩合作... (来源:吴说)吴说获悉,苏格兰知名威士忌品牌波摩(Bowmore)宣布与 Avalanche 合作推...
近日辽宁部分地区仍有强降雨,各... (来源:东北新闻网)  据天气预报显示,近日我省部分地区仍有强降雨,伴有短时强降水、雷电、大风、冰雹...