完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F7系列芯片集成了L1高速缓存,即L1 CACHE,包括D-CACHE和I-CACHE。它能够提升CPU访问数据或指令的速度,改善MCU的性能。关于STM32F7 L1 CACHE的应用,有个数据一致性问题需要注意,不然编程时可能会遇到些奇怪的现象。 在聊这个话题之前,先说几个基本概念或术语。 1、芯片复位后,I-CACHE,D-CACHE默认是关闭的。可以分别打开或关闭以及配置各自大小。 2、对于STM32F7来说,只有经过AXI总线接口访问时才用到L1 CACHE。换句话,通过其它总线【TCM/AHBP/AHBS】做数据或指令访问时是不涉及到L1 CACHE的。 3、回写【WRITE BACK】:在写数据时,只是把数据写进D-CACHE而未写入二级存储器,并将缓存行里的数据标识为DIRTY,直到执行CACHE的清除操作才将D-CACHE里的内容写进二级存储器。 3、透写【WRITE THROUGH】:在写数据操作时同时将数据写入D-CACHE和二级存储器。这对于保持数据的一致性有好处,代码编写也相对简单。不过它需要消耗更多的写数据时间。当然,下次访问相同内容时还是可以直接从缓存里读取。跟回写相比,算是一种折衷处理办法。 4、STM32F7片内外各个存储单元的存储属性是通过MPU来配置的。在芯片复位之后,MPU是默认关闭的,此时各存储单元的存储属性遵照如下的默认配置。 好,那什么时候会发生数据一致性问题? 当有CPU和其它主设备【如DMA】共同访问某可缓存的二级存储器比方SRAM1,同时该存储器又具有回写属性,此时就可能发生数据一致性问题。因为该存储器的回写属性,导致通过CPU欲写入存储器的数据只是缓冲在CACHE里,而没有及时写入存储器。如果此时DMA访问该二级存储器的话,读到的数据可能跟预期不一致。 为了避免数据不一致的问题,我们需要做D-CACHE维护操作。一般有如下四种方法: 1、当对一个可缓存的二级存储器做了写数据操作之后,通过软件对D-CACHE进行清除操作,即运行SCB_CleanDCache()。这样将CACHE里的缓存内容写回到二级存储器,比如把那些DIRTY CACHE行的数据写进SRAM1。 2、通过MPU调整可缓存存储器的存储属性,将其CACHE使用方式改为透写模式。这样保证每次写入CACHE里的内容也同时写入二级存储器,比如写进SRAM1。 3、通过MPU调整可缓存存储器的存储属性,将其共享属性改为可共享的【SHAREABLE】。此后该二级存储器将变为不可缓存。 4、通过配置CACR寄存器中的D-CACHE位,强制将所有写操作配置为透写属性。 当然,跟上面描述相对应的还有一种情形。那就是DMA更新了可缓存存储器比如SRAM1的数据后,CPU再去读SRAM1,此时也会发生数据不一致的问题。因为CPU此时读的数据还是之前CACHE里的旧数据。为了避免这个问题,保证数据的一致,就得在CPU读SRAM1之前通过软件执行CACHE失效操作,这样保证CPU直接从二级存储器比方SRAM1读取数据。 下面有个关于数据一致性的实例供大家思考。 首先CPU从片上FLASH存储块aSRC_Const_Buffer的128字节常量数据拷贝到SRAM1里的一个名为pBuffer的缓存区。 然后CPU配置并使能DMA执行从内存到内存的传输,将SRAM1里pBuffer缓存区的数据传输到DTCM RAM的另一个aDST_Buffer缓存区。 最后,CPU将aDST_Buffer缓存区的数据与flash存储块aSRC_Const_Buffer的常量数据进行比较是否一致。 最后小结下,对于STM32F7系列MCU来说,可能发生数据一致性问题需要的几个因素: 1、有CPU和DMA参与数据访问; 2、有被CPU和DMA共同访问的可缓存的带回写属性的物理存储块; 3、开启了D-CACHE; |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1117 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1143 浏览 1 评论
575 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
430 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1032 浏览 2 评论
1619浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
283浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
293浏览 3评论
278浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
255浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-21 08:28 , Processed in 0.796797 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191