ESP32xxx烧录

1.模式

​编辑

运行模式会加载存储在Flash应用程序分区中的固件

下载模式通过。。。将固件烧录到Flash的应用程序分区中

2.如何下载

ESP-S3芯片gpio0默认1,GPIO46默认0

想进入下载模式就将gpio0拉成0 ---对应reset

3.烧录平台(flash)

【ESP32 固件烧录教程】https://www.bilibili.com/video/BV1MG411X7zB?vd_source=6e91ae407f255e8d3966b0a7e6d0a1e9

应用启动流程 - ESP32 - --- ESP-IDF 编程指南最新文档

应用程序偏移地址看你分区表是如何规划的,一般默认0x10000

donotchgbin = Do Not Change Binary (不要更改二进制文件)

在生成最终可烧录的固件文件时,工具链通常会对编译出来的原始 .bin 文件进行一系列"后处理",例如:

  1. 添加校验和:在文件头部或尾部添加CRC32等校验码,确保烧录后数据的完整性。

  2. 添加文件头:加入自定义的魔数、版本号、文件长度等信息。

  3. 分区重组:将多个.bin文件合并成一个镜像。

  4. 加密签名:对固件进行加密或添加数字签名。

donotchgbin 的作用就是跳过这些后处理步骤,告诉工具:"直接用我给你的这个.bin文件,不要对它做任何改动。"

固件之间的非数据区会以0xff填充

为什么是 0xFF

这完全是由 Flash存储器的物理特性决定的:

  1. 擦除状态:Flash存储器在擦除后,每一个存储单元(Cell)的所有位(Bit)都会变成 1。因此,一个擦除后的字节(Byte)的数值就是 0xFF(二进制 11111111)。

  2. 写入(编程)规则:你只能将Flash中的位从 1 改变为 0,而不能从 0 改回 1(除非擦除整个扇区/块)。这个操作叫做"编程"。

    • 例如:将 0xFF (11111111) 编程为 0x3F (00111111),就是让某些位从1变成0。

    • 你无法直接将 0x00 (00000000) 变成 0x3F,除非先擦除整个区域变回 0xFF

因此,用 0xFF 填充是最高效、最自然的选择,因为它代表了存储器的"空白"状态。

  1. HAL_Init();

  2. 复位所有外设:将除特定系统控制寄存器(如时钟控制寄存器)外的所有外设寄存器重置为默认值。

  3. 初始化Flash接口:设置Flash的预取指功能、指令缓存和数据缓存等,以优化CPU从Flash读取指令和数据的性能。

  4. 初始化系统滴答定时器(SysTick):配置SysTick定时器,使其每1毫秒产生一次中断(默认配置),为HAL库提供时间基准(时基)。这对于HAL_Delay()等函数的正常工作至关重要。

  5. 设置中断优先级分组 :默认情况下,HAL_Init()会将中断优先级分组设置为组4(即4位抢占优先级,0位子优先级)。当然,你也可以在之后调用HAL_NVIC_SetPriorityGrouping()来更改。

  6. 初始化底层硬件:为HAL库所使用的资源(如定时器、中断等)进行基础配置。

相关推荐
泡泡糖的中文规格书11 小时前
STM32G030F6P6中文规格书开放获取(完整中英对照/ARM Cortex-M0+ MCU)
stm32·单片机·嵌入式硬件·pcb设计·硬件设计·中文数据手册
MARIN_shen12 小时前
Marin说PCB之电源PI仿真之PDN---DK值的影响
嵌入式硬件·硬件工程·信号处理·pcb工艺
正点原子12 小时前
《ESP32-S3使用指南—IDF版 V1.6》第十章 ESP32-P4存储器类型
单片机·物联网·嵌入式
Mao_Hui13 小时前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
吉哥机顶盒刷机15 小时前
晶晨芯片机顶盒与海思芯片机顶盒刷机区别详解
经验分享·嵌入式硬件·刷机
森利威尔电子-15 小时前
SL4011:2.7V-12V输入,12.8V输出高效率升压型DC-DC转换器
单片机·嵌入式硬件·集成电路·芯片·电源芯片
想搞嵌入式的小白15 小时前
LDO和DC-DC的异同
单片机·嵌入式硬件
EVERSPIN16 小时前
RGB显示驱动MCU单片机—CH643键盘应用方案
单片机·嵌入式硬件·mcu·计算机外设·mcu单片机
edjxj17 小时前
PFC电路学习
单片机·学习
电气_空空17 小时前
基于 Labview/Matlab 的人脸识别系统设计与实现
单片机·嵌入式硬件·毕业设计·labview