擦除整片flash后,程序下载到单片机,单片机不运行

擦除整片Flash后,将地址0x8004000改为0x8000000重新下载,就可以运行了。

你是不是做了全片擦除? 把0x8000000地址开始自带的boot代码给擦除掉了? 若擦除了boot, 把下载首地址从0x8004000改为0x8000000。。。。。让KEIL把下载app_hex放到0x8004000首地址,是因为0x8000000有boot代码上电后会跳入0x8004000执行app代码。

若全片擦除了boot代码,需把app下载地址改为0x8000000。。。。或先烧入boot程序,再把app代码下载到0x8004000即可。 这里KEIL下载地址不同,与有没有boot代码有关系

一、Boot代码的定义与作用

​Boot代码​​(引导加载程序)是嵌入式系统中一段固化在非易失性存储器(如Flash)中的底层程序,其核心功能包括:

  1. ​硬件初始化​:配置时钟、内存控制器、外设等基础硬件模块
  2. ​启动模式选择​:根据硬件引脚或寄存器配置,决定从Flash、系统存储器(如STM32的BootLoader)或RAM启动
  3. ​程序加载​:将应用程序(App)从存储介质(如Flash、网络)加载到内存(如RAM)并跳转执行
  4. ​OTA升级支持​:接收新固件并更新到App区域,同时校验数据完整性

在STM32等MCU中,Boot代码通常位于Flash的起始地址(如0x08000000),占用少量扇区(如32KB),与用户App代码分区共存

相关推荐
SUNNYSPY00115 小时前
65R135 -ASEMI超结MOS管TO-220封装
单片机
jacklood16 小时前
基于STM32的车载振动曲线摆件创意设计
stm32·单片机·嵌入式硬件
jomoly17 小时前
星闪NL002开发板测评+匆匆
单片机·嵌入式硬件
17(无规则自律)18 小时前
【Linux驱动实战】:标准的按键控制LED驱动写法
linux·驱动开发·嵌入式硬件
森利威尔电子-20 小时前
森利威尔SL3180替换LM5013 100V降压3.3V 5V 12V恒压芯片
单片机·嵌入式硬件·集成电路·芯片·电源芯片
Net_Walke20 小时前
ESP32开发:5分钟之内添加ST7735驱动构建LVGL模板工程
单片机·物联网·iot
qq_401700411 天前
5V防过压电路
单片机·硬件
小昭在路上……1 天前
AHB和APB总线概念
单片机·嵌入式硬件
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(三十):IIC 通信深度实战 —— 软件模拟 IIC + 光照传感器(BH1750)全解析(底层时序 + 代码落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
Zarek枫煜1 天前
zig与C3的算法 -- 桶排序
c语言·嵌入式硬件·算法