|
关于stm32 flash写入有两个疑问: 1. 是否每次写操作都需要擦除一个扇区?看到资料说,Flash写入只能由1改成0,因此先要擦除一个整个扇区才能写。 2. 我尝试用HAL_FLASH_Program去写一个代码段的地址时(0x0800194这样的),返回HAL_OK,但实际上没有写成功。在Keli memory区域可以直接修改,但是在代码里面修改不成功。这是为什么? 想通过IAP修改部分代码,实现用patch更新部分函数。求大神能指定一二。 |
微信公众号
手机版
2.必须按照先解锁,再擦除,再写入的顺序。
ST有相当的例程,写入flash还是很简单的。参考一下固件库的例程吧
2、不只是STM32,其他的flash也有最小操作单位,一般是扇区为单位,有4k 8k等等
3、对于STM32的flash写,需要按照先解锁,读出目标地址所在扇区的数据放在内存,直接修改内存的数据再擦除,再写入,注意地址要4字节对其
4、看看写之前的数据对不对
另外代码可以参考例程,每个系列都有相关配套的CUBE库和内部自带例程