HL130 flash写数据被自动修改
如图,我想要在0xfe00写一个字节到flash中,操作顺序是:关中断,写,读,开中断。写入正常,读取也正常,但是掉电再上电后flash中的内容被自动修改为红框中的00 28 ... 8E 06,不明白为什么,有大佬遇到过这种情况吗,求解决办法。
本人结贴。如图,因为原程序用的之前项目的代码改的,要做IAP,APP从0x2800开始。
试了原厂源码后,写入读取再掉电上电,值不会变。
所以把boot去掉,这个项目不用做IAP,APP程序直接从0x0开始,一切恢复正常。
ps:话说这算不算个坑。虽然问题解决了,但是仍不明白为啥会这样。
pps:ST的片子,也有此类操作,但是人家的就没问题,国产加油。
RTX3080 发表于 2023-10-13 17:08
本人结贴。如图,因为原程序用的之前项目的代码改的,要做IAP,APP从0x2800开始。
我认为跟有没有BOOT没有任何关系,只要你合规操作都不会有问题。
但是用户手册有一句话说明了,FLASH擦写操作的函数必须要放在0x8000之前的FLASH地址,不然有万分之几的FLASH操作失败,这句失效率是我加的,手册上没说。
另外还有一点,也是用户手册里讲的很明白的,升频的时候有两种模式,一种是一步一步往上升,另外一种是先切换到低频再加载完高频后切过去。两种方式可选任意一种。不然都是不合规的。 你的boot里面是不是有代码会往0x0000FE00地址写数据的?因为看FE00地址的的数据,就是0x00002800,很像是APP起始地址啊 如果有的地址不然用户使用 会自动报错吗 高频还升频为什么比较容易失败呢 这个地址里边的内容并没有受到保护 如果在定义的时候把这些地址定义为不可初始化的可以不
看来如果想要操作flash,需要注意的事项还是很多的
这个0x0会不会只是一个相对地址一个用户能操作的相对的地址呢
页:
[1]