打印
[技术问答]

HL130 flash写数据被自动修改

[复制链接]
893|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RTX3080|  楼主 | 2023-10-13 11:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

如图,我想要在0xfe00写一个字节到flash中,操作顺序是:关中断,写,读,开中断。写入正常,读取也正常,但是掉电再上电后flash中的内容被自动修改为红框中的00 28 ... 8E 06,不明白为什么,有大佬遇到过这种情况吗,求解决办法。

使用特权

评论回复
沙发
RTX3080|  楼主 | 2023-10-13 17:08 | 只看该作者
本人结贴。如图,因为原程序用的之前项目的代码改的,要做IAP,APP从0x2800开始。



试了原厂源码后,写入读取再掉电上电,值不会变。
所以把boot去掉,这个项目不用做IAP,APP程序直接从0x0开始,一切恢复正常。
ps:话说这算不算个坑。虽然问题解决了,但是仍不明白为啥会这样。
pps:ST的片子,也有此类操作,但是人家的就没问题,国产加油。

使用特权

评论回复
板凳
wubangmi| | 2023-10-17 13:13 | 只看该作者
RTX3080 发表于 2023-10-13 17:08
本人结贴。如图,因为原程序用的之前项目的代码改的,要做IAP,APP从0x2800开始。

我认为跟有没有BOOT没有任何关系,只要你合规操作都不会有问题。
但是用户手册有一句话说明了,FLASH擦写操作的函数必须要放在0x8000之前的FLASH地址,不然有万分之几的FLASH操作失败,这句失效率是我加的,手册上没说。
另外还有一点,也是用户手册里讲的很明白的,升频的时候有两种模式,一种是一步一步往上升,另外一种是先切换到低频再加载完高频后切过去。两种方式可选任意一种。不然都是不合规的。

使用特权

评论回复
地板
martinhu| | 2023-10-19 11:42 | 只看该作者
你的boot里面是不是有代码会往0x0000FE00地址写数据的?因为看FE00地址的的数据,就是0x00002800,很像是APP起始地址啊

使用特权

评论回复
5
tpgf| | 2023-11-2 14:11 | 只看该作者
如果有的地址不然用户使用 会自动报错吗

使用特权

评论回复
6
nawu| | 2023-11-2 14:41 | 只看该作者
高频还升频为什么比较容易失败呢

使用特权

评论回复
7
zljiu| | 2023-11-2 15:32 | 只看该作者
这个地址里边的内容并没有受到保护

使用特权

评论回复
8
tfqi| | 2023-11-2 19:01 | 只看该作者
如果在定义的时候把这些地址定义为不可初始化的可以不

使用特权

评论回复
9
gwsan| | 2023-11-2 19:32 | 只看该作者
看来如果想要操作flash,需要注意的事项还是很多的

使用特权

评论回复
10
aoyi| | 2023-11-2 19:58 | 只看该作者
这个0x0会不会只是一个相对地址  一个用户能操作的相对的地址呢

使用特权

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

本版积分规则

9

主题

46

帖子

0

粉丝