【技术分享】不小心删掉FLASH里面的末尾的几个字节怎么办? 一、为什么这样做 有朋友问我,由于FLASH分了两个区域,0x08008800之前为代码区,0x08008800之后为用户数据存储区域。由于代码更新后超出了2-3个字节到0x08008800之后,然后被代码擦除了,问有没有影响。 二、实验 使用的IDE为stm32cubeIDE 使用的工程为 \STM32Cube_FW_G0_V1.6.0\Projects\NUCLEO-G031K8\Examples\ADC\ADC_ContinuousConversion_TriggerSW\STM32CubeIDE 在代码里面添加一个自定义全局变量,设置为 __IO uint32_t testData = 0x12345678; 防止被优化,在main函数里面加上 testData+=; 三、分析 生成hex文件和map文件,并分析: 如图所示,0x080029f4的位置,执行了loadaddr的一个操作,将从0x080029f4位置开始的FLASH拷贝到RAM里面,拷贝的数据长度刚好为0x080029f4 – 0x08002a0c的长度。 猜想:从这个位置开始的数据为拷贝到RAM中运行的全局变量初始值及代码的数据。 所以,验证交给大家了
|