ESP32 IDF开发 系统篇⑪ 系统启动流程及硬件复位问题分析

ESP32 IDF开发 系统篇⑪ 系统启动流程及硬件复位问题分析


别迷路-导航栏
快速导航找到你想要的(文章目录)

此篇文章如果对你有用,请点赞收藏,您的支持就是博主坚持的动力。

1、博主写这篇技术文章的目的:

(1)、了解 系统启动过程;
(2)、学会 分析常见系统错误问题;

2、 ESP32 系统启动流程分析

1、首先我们先看一下下载程序时打印出来的信息

在这里插入图片描述
我们看到的信息有:FLASH大小4M
•首先是将一个程序下载到flash的0x00001000地址处,程序压缩后的大小为15953bytes;
•将下一个程序下载到flash的0x00010000地址处,程序压缩后的大小为424073bytes;
•将下一个程序下载到flash的0x00008000地址处,程序压缩后的大小为117bytes;

2、系统启动过程中的打印的信息

在这里插入图片描述
我们从打印信息可以看到分区表的信息和大小,分区表的讲解参考
【ESP32 IDF开发 驱动篇⑩ 存储NVS高级应用和自定义分区表】
最后可以看到有这样一天信息
I (394) boot: Loaded app from partition at offset 0x10000
表示从分区0x10000地址处读取应用程序也就是我们常见的app_main()函数对应的程序,从上面的下载程序中正好对应的有下载应用程序在0x10000处,说明0x10000处下载的是我们写的应用程序。
I (85) boot: 2 factory factory app 00 00 00010000 00100000
分区表对应的应用程序地址也必须是0x10000,否则无法启动,应用程序的大小再分区表中定义最大为0x100000=1M字节的大小。
3、参考系统分区表分析系统启动流程
在这里插入图片描述
Flash地址:
•0x1000-0x8000处存放的是bootloader,bootloader的作用就是用来引导系统的启动和程序的下载;
•0x8000-0x9000处存放的是分区表,也就是上一章讲解的partitions_singleapp.csv文件,分区表的作用是用来划分系统资源设置不同程序的地址。
•0x9000-0xF000处存放的是NVS数据,ota分区这里没有用,在使用ota时会使用到
•0xF000-0x10000处存放的是RF 的数据
•0x10000以后的1M内存处存放的是应用程序,core dump ota0 ota1,这里都没有用到。

分析系统启动流程:
在ESP32启动过程中分2个bootloader。
•程序上电之后第一阶段的 bootloader 加载第二阶段的 bootloader,第一阶段的位于 ROM 里面,芯片出厂前固化的程序,第二阶段的位于Flash的 0x1000 地址。
•第二阶段的 bootloader 加载0x8000-0x9000处的分区表然后根据分区表的地址划分分别加载应用程序和其他的数据。
注:ISR handlers 中断处理函数必须放到 IRAM 里面,通过加 IRAM_ATTR 属性就能把代码或者变量放到 IRAM 里面

3、 ESP32 常见复位问题

在这里插入图片描述
有的板子按下rst按键之后会出现,就如到下载模式。解决办法将将G0与3.3V短路即可。

所有文章源代码:https://download.csdn.net/download/lu330274924/88518092

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值