打印
[STM32G0]

不小心删掉FLASH里面末尾的数据怎么办?

[复制链接]
1002|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sunwaz|  楼主 | 2022-11-4 14:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【技术分享】不小心删掉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中运行的全局变量初始值及代码的数据。
      
       所以,验证交给大家了

使用特权

评论回复
沙发
LLGTR| | 2022-11-4 16:48 | 只看该作者
数据变了呗,如果数据是配置,那就对程序有影响。

使用特权

评论回复
板凳
天天向善| | 2022-11-4 16:49 | 只看该作者
不太理解这个实验。要说明什么?

使用特权

评论回复
地板
Sunwaz|  楼主 | 2022-11-6 12:26 | 只看该作者
天天向善 发表于 2022-11-4 16:49
不太理解这个实验。要说明什么?

就是说明一个现象而已。当你的产品已经生产出去,而又不小心这样操作了。给出一个说明而已

使用特权

评论回复
5
失物招領| | 2022-11-14 17:54 | 只看该作者
这个程序有没有影响,不好说,不知道最后几个字节是什么作用

使用特权

评论回复
6
一只眠羊| | 2022-11-14 17:55 | 只看该作者
肯定会有影响的,不知道运行到哪一步程序就跑飞了

使用特权

评论回复
7
在曼谷的春| | 2022-11-14 18:30 | 只看该作者
你这预留的空间不足,导致的这个问题,需要扩一下空

使用特权

评论回复
8
温室雏菊| | 2022-11-14 19:02 | 只看该作者
这个倒是没测试过,但是我知道基本上程序会跑飞或者运行不正常

使用特权

评论回复
9
风凉| | 2022-11-14 19:34 | 只看该作者
看你存的是啥数据吧,如果就一个全局变量还没用到也许就没事儿

使用特权

评论回复
10
Undshing| | 2022-11-14 19:43 | 只看该作者
这程序应该会不正常吧

使用特权

评论回复
11
未说出口的像你| | 2022-11-14 20:38 | 只看该作者
这其实就可以用jlink直接修改程序里最后两个字节试试,没必要自己搭建个程序环境测试的

使用特权

评论回复
12
月亮一键变蓝| | 2022-11-14 21:10 | 只看该作者
有机会试试呗,我觉得如果擦除的数据不重要,也许程序影响就不会很大

使用特权

评论回复
13
我吃小朋友| | 2022-11-14 21:42 | 只看该作者
这种问题可能就是IAPAPP这种方式上,会容易出现这问题,就是IAP预留的空间搞小了

使用特权

评论回复
14
她已醉| | 2022-11-14 22:14 | 只看该作者
楼主好像还比较习惯用HAL库啊?看截图好像是用的cubemx生成的工程

使用特权

评论回复
15
春日负喧| | 2022-11-14 22:46 | 只看该作者
没啥意义的,修改肯定会有问题,就是问题随机出现还是不能运行的问题,最好的办法就是编译之后看一下map,看看存储都用了多少,给自己留点余量才能让程序跑的长久

使用特权

评论回复
16
Sunwaz|  楼主 | 2022-11-23 16:40 | 只看该作者
失物招領 发表于 2022-11-14 17:54
这个程序有没有影响,不好说,不知道最后几个字节是什么作用

如我帖子上讲的。这部分为你加载到RAM里面的数据。主要是全局变量的数据或RAM运行数据。如果你不小心擦除了,但是又复位了。那么就会出问题了。

使用特权

评论回复
17
Sunwaz|  楼主 | 2022-11-23 16:41 | 只看该作者
失物招領 发表于 2022-11-14 17:54
这个程序有没有影响,不好说,不知道最后几个字节是什么作用

我这个帖子讲的就是后面几个字节的作用。如果多了,那要对应map文件来看。

使用特权

评论回复
18
Sunwaz|  楼主 | 2022-11-23 16:41 | 只看该作者
我吃小朋友 发表于 2022-11-14 21:42
这种问题可能就是IAP和APP这种方式上,会容易出现这问题,就是IAP预留的空间搞小了
...

我那个朋友就是在这个应用上误操作的。

使用特权

评论回复
19
Sunwaz|  楼主 | 2022-11-23 16:42 | 只看该作者
她已醉 发表于 2022-11-14 22:14
楼主好像还比较习惯用HAL库啊?看截图好像是用的cubemx生成的工程

方便,快捷的搭好实验环境

使用特权

评论回复
20
Sunwaz|  楼主 | 2022-11-23 16:43 | 只看该作者
春日负喧 发表于 2022-11-14 22:46
没啥意义的,修改肯定会有问题,就是问题随机出现还是不能运行的问题,最好的办法就是编译之后看一下map, ...

是没啥意义。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝