fenglang 发表于 2024-1-4 20:46:01

对MPU配置和解决cache数据一致性问题的疑问

请教大家两个问题:

手上有一块1MB的SRAM,其中400KB给了SRAM1,600KB给了SRAM2。SRAM1想用cache,SRAM2不想用cache。
1、根据手册上RASR寄存器的SIZE位,是不是应该选大于400KB最接近的512KB大小,起始地址已经选择SRAM1的起始地址,但是这样配置的话多出的112KB会不会影响到SRAM2?
2、解决cache数据一致性问题,调用dcache相关的api因为有开销,可能会造成项目中以太网数据的丢包(以太网也是用的DMA)。请问除了调用cache相关的api外,还有什么解决cache数据一致性的方法吗?

eric2013 发表于 2024-1-5 08:36:16

1、大小设置要是2^n.
2、(1)调用API没关系的,因为以太网满速才12.5MB,而SRAM即使不开Cache也远远高于这个速度。
       (2)也可以关闭这个空间的Cache。-

fenglang 发表于 2024-1-5 09:19:41

感谢硬汉哥的回复。
第一个问题大小设置为2^n,n要怎么确定?还有,比如我上面提到的如果设置为512K大小,但SRAM1只有400K,会不会影响到SRAM2?

kou19940827 发表于 2024-1-5 10:39:22

1. 直接调用mpu_armv7.h中的接口即可
2. 如果sram1和sram2地址连续,则会影响到。 想要了解cache和mpu配置相关的操作,可以看DUI0644E_cortex_m7_r1p2_ugrm.pdf中的MPU章节

fenglang 发表于 2024-1-5 12:06:47

kou19940827 发表于 2024-1-5 10:39
1. 直接调用mpu_armv7.h中的接口即可
2. 如果sram1和sram2地址连续,则会影响到。 想要了解cache和mpu配置 ...

感谢回复
这个PDF哪里可以下载到吗?找了一下还没找到

eric2013 发表于 2024-1-6 09:21:19

fenglang 发表于 2024-1-5 09:19
感谢硬汉哥的回复。
第一个问题大小设置为2^n,n要怎么确定?还有,比如我上面提到的如果设置为512K大小, ...

看下教程的这个章节吧:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980




有时间了视频教程也可以看下:

视频教程第13期:系统讲解Cortex-M7内核MPU和Cache,理解通透(2022-04-17)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=111956

视频教程第14期:超干货,MPU和Cache实战,一张图了解所有经典配置案例,争取人人都可以玩溜(2022-05-08)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112268
页: [1]
查看完整版本: 对MPU配置和解决cache数据一致性问题的疑问