擦除整片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代码分区共存

相关推荐
坏一点19 小时前
Yocto项目构建(3)——构建和部署树莓派镜像
linux·驱动开发·嵌入式硬件
逆小舟19 小时前
【RTOS】任务间通信IPC
单片机·嵌入式硬件
电化学仪器白超19 小时前
《可编程固定阻值电子负载的制作与自动化标定技术》
python·单片机·嵌入式硬件·自动化
三佛科技-1341638421219 小时前
LP3799FAES-B 反激式电源控制器芯片 典型应用电路
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
黑客思维者19 小时前
XGW-9000 网关 DDR4/LPDDR4 内存子系统信号完整性仿真细化设计
开发语言·python·嵌入式硬件·ddr4·信号仿真
风行男孩20 小时前
stm32基础学习——按键的使用
stm32·嵌入式硬件·学习
小热茶20 小时前
浮点数计算专题【五、 IEEE 754 浮点乘法算法详解---基于RISCV的FP32乘法指令在五级流水线的运行分析与SystemC实现】
人工智能·嵌入式硬件·算法·systemc
brave and determined20 小时前
传感器学习(day09):三维手势识别:人机交互的未来革命
嵌入式硬件·手势识别·传感器·tof·嵌入式设计·多角成像技术·光飞时间技术
恒锐丰小吕21 小时前
无锡黑锋 HF5903 40V热插拔、50V耐压、可调限流保护开关技术解析
嵌入式硬件·硬件工程