
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情
网上说明一大堆,基本是官网文档复制没有额外解释!
对于ESP32-C3的 risc-v 内核,是我选择他的原因之一,
了解芯片上电后的启动流程,有利于我们更加深入理解芯片。
复制代码
前言
对于ARM内核的STM32的启动流程,我以前的博文详细分析过,搞懂了STM32的启动流程对于芯片的使用和理解来说就会更上一个等级。现在我们新接触的 risc-v 内核的ESP32-C3,如果能够搞明白他的启动流程,就能更深的理解 ESP32-C3。
在写文章之前也看了很多网上的文章,然后官方的说明也看过了,网上绝大多数都是官网文档复制一遍,这倒没什么,毕竟官网权威,问题是,复制一遍过来没有做过多的解释,没有额外的分析,还写个原创,我真是服了。当然不排除我没看到的好的文章,也正是因为基本没有看到更加详细的分析,我决定要自己写一篇记录,一来当做自己记录,二来底层有些地方目前来说我确实不是理解透彻,肯定有不到位的地方,希望大家多提意见,能让文章更加完善。
按照惯例,我把能找到的文章和官方的资料都看了好多遍,官方提到的3大步骤:

对于上述提到的3大步骤,最简单的清晰的是第三步,第二步也有源码,倒是可以查看试着分析一下,但是第一步确实,只是知道这么回事,具体的实现方式因为程序是在ESP32-C3 的内部 ROM 中,确实找不到可以分析的源码和资料。
芯片的启动流程,大多离不开启动文件和链接文件。ESP32-C3应该也是这样,本来按照理解,应该找到底层的启动文件和连接文件开始按照步骤分析,但是查看了一会底层代码,因为对底层架构深入了解得还不够,没有找到= =! 所以想着怎么办?
不能按照从最开始到结束的顺序来,那么就按照从结束到开始的顺序来!我们从app_main 函数反过来一层一层网前看,看看经过了一些什么处理,程序才执行到app_main 函数的!
注意,文章以倒叙的方式说明~ ~
本文是基于 VScode 插件的工程结构来说明(Ubuntu环境)。
一、应用程序启动阶段
1.1 app_main.c
我们从app_main.c的主函数app_main中,我们直接通过转到定义看看上一层:


最低0.47元/天 解锁文章
4598

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



