miraclexue 发表于 2019-7-6 01:13:17

Flash擦除时必须关闭数据缓存data cache 吗?

如题,stm32F4系列,初始化会开启数据缓存功能,那么在擦除flash的时候,需要关闭吗?不关闭会带来什么后果?FLASH_Unlock();

FLASH_DataCacheCmd(DISABLE);
擦除flash操作;
FLASH_DataCacheCmd(ENABLE);
FLASH_Lock();



标准库貌似没有在擦除时操作data cache,但是cube库在擦除完后会Flush data cache

maxtch 发表于 2019-7-7 15:33:02

不关闭缓存的话会发生缓存不一致现象。这种现象会引发大问题的。

miraclexue 发表于 2019-7-7 21:37:31

maxtch 发表于 2019-7-7 15:33
不关闭缓存的话会发生缓存不一致现象。这种现象会引发大问题的。

如果要擦除的页只是存储一些参数,没有存放程序,那会不会就没有影响呢

maxtch 发表于 2019-7-8 10:47:13

miraclexue 发表于 2019-7-7 21:37
如果要擦除的页只是存储一些参数,没有存放程序,那会不会就没有影响呢 ...

参数读取就是要经过数据缓存的。

toofree 发表于 2019-7-8 16:16:04

擦除未使用的Flash段,应该没有影响吧。

generalcircuits 发表于 2019-7-8 16:54:07

对的,不关闭缓存的话会发生缓存不一致现象。

miraclexue 发表于 2019-7-8 23:20:42

maxtch 发表于 2019-7-8 10:47
参数读取就是要经过数据缓存的。

两个疑问:
1、只要擦除后执行的代码只要和被擦除的页不相关,就没问题吧?
2、假如相关,擦除和写入都要关闭数据缓存吗?

miraclexue 发表于 2019-7-8 23:22:05

toofree 发表于 2019-7-8 16:16
擦除未使用的Flash段,应该没有影响吧。

未使用指的是后面的代码没有在此flash段中,而且也没有访问此flash段?是这个意思?

miraclexue 发表于 2019-7-8 23:22:38

generalcircuits 发表于 2019-7-8 16:54
对的,不关闭缓存的话会发生缓存不一致现象。

擦除和写入都需要关闭?

miraclexue 发表于 2019-7-15 23:18:42

顶一个
页: [1]
查看完整版本: Flash擦除时必须关闭数据缓存data cache 吗?