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
不关闭缓存的话会发生缓存不一致现象。这种现象会引发大问题的。
如果要擦除的页只是存储一些参数,没有存放程序,那会不会就没有影响呢 miraclexue 发表于 2019-7-7 21:37
如果要擦除的页只是存储一些参数,没有存放程序,那会不会就没有影响呢 ...
参数读取就是要经过数据缓存的。 擦除未使用的Flash段,应该没有影响吧。 对的,不关闭缓存的话会发生缓存不一致现象。 maxtch 发表于 2019-7-8 10:47
参数读取就是要经过数据缓存的。
两个疑问:
1、只要擦除后执行的代码只要和被擦除的页不相关,就没问题吧?
2、假如相关,擦除和写入都要关闭数据缓存吗? toofree 发表于 2019-7-8 16:16
擦除未使用的Flash段,应该没有影响吧。
未使用指的是后面的代码没有在此flash段中,而且也没有访问此flash段?是这个意思? generalcircuits 发表于 2019-7-8 16:54
对的,不关闭缓存的话会发生缓存不一致现象。
擦除和写入都需要关闭? 顶一个
页:
[1]