eric2013 发表于 2022-5-8 00:54:18

STM32H7视频教程第14期:超干货,MPU和Cache实战,一张图了解所有经典配置案例,争取人人都可以玩溜(2022-05-08)

本期视频给大家带来Cortex-M7内核MPU和Cache实战,各种经典常见案例分析。


视频:

https://www.bilibili.com/video/BV1p54y1f7CY

https://www.bilibili.com/video/BV1p54y1f7CY?share_source=copy_web

一张图了解所有常见配置案例(可以点击放大)。

https://img.alicdn.com/imgextra/i1/299314119/O1CN010IKuTl1gIY9PCXNXb_!!299314119.png



eric2013 发表于 2022-5-8 01:16:57

更新完毕。

morning_enr6U 发表于 2022-5-8 10:25:18

{:34:}

hexenzhou 发表于 2022-5-8 10:30:26

{:34:}

ou513 发表于 2022-5-8 10:33:54

非常好,真正的具有项目参考价值

eric2013 发表于 2022-5-8 14:47:21

ou513 发表于 2022-5-8 10:33
非常好,真正的具有项目参考价值

{:33:}

eric2013 发表于 2022-5-9 01:12:02


byccc 发表于 2022-5-9 08:47:18

可以可以,就是我上次建议的那种形式{:34:}

lindahnu 发表于 2022-9-6 11:32:41

对于STM32F4系列的核是M4,没有CACHE,MPU配置是不是就不要打开C,B位了?
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
编程手册里推荐是打开缓存,糊涂了

eric2013 发表于 2022-9-7 01:53:18

lindahnu 发表于 2022-9-6 11:32
对于STM32F4系列的核是M4,没有CACHE,MPU配置是不是就不要打开C,B位了?
MPU_Ini ...
F4没有Cache,开不开C不起作用。

蜗牛 发表于 2023-7-28 15:53:59

如果CPU需要修改一个RAM地址的数据,数据放在Cache中,还没有修改RAM,但是此时如果DMA将另外一个地址的RAM数据覆盖此地址的RAM,用户在启动DMA前使用了SCB_CleanDCache_by_Addr,那么,Cache中的数据会马上发送给RAM,然后DMA直接修改RAM的数据,如果,我说如果用户的程序进入了某个中断然后又调用了一次SCB_CleanDCache_by_Addr,那么此时Cache中的数据就会再次写到RAM,那么此时RAM的数据表现就是DMA传输失败了

蜗牛 发表于 2023-7-28 15:54:17

如果CPU需要修改一个RAM地址的数据,数据放在Cache中,还没有修改RAM,但是此时如果DMA将另外一个地址的RAM数据覆盖此地址的RAM,用户在启动DMA前使用了SCB_CleanDCache_by_Addr,那么,Cache中的数据会马上发送给RAM,然后DMA直接修改RAM的数据,如果,我说如果用户的程序进入了某个中断然后又调用了一次SCB_CleanDCache_by_Addr,那么此时Cache中的数据就会再次写到RAM,那么此时RAM的数据表现就是DMA传输失败了

eric2013 发表于 2023-7-28 18:55:38

蜗牛 发表于 2023-7-28 15:53
如果CPU需要修改一个RAM地址的数据,数据放在Cache中,还没有修改RAM,但是此时如果DMA将另外一个地址的RAM ...

实际上这是两个数据一致性问题了。
1、首先是DMA和CPU操作这个RAM区。
2、然后就是中断抢占修,对于中断抢占修改,这个需要做好互斥操作。因为中断里面和中断外都有操作变量。

xy201207 发表于 2023-8-21 15:04:08

我把SDRAM的图片旋转90度写到内部AXIRAM,sdram连续读AXIRAM跳跃式写。AXIRAM读写cache都打开耗时约7.9ms,如果都不打开或者只打开读耗时约5.2ms,问一下版主这个正常吗?

eric2013 发表于 2023-8-22 08:52:57

xy201207 发表于 2023-8-21 15:04
我把SDRAM的图片旋转90度写到内部AXIRAM,sdram连续读AXIRAM跳跃式写。AXIRAM读写cache都打开耗时约7.9ms, ...

SDRAM的读写Cache是不是没开。

然后这个没理解“我把SDRAM的图片旋转90度写到内部AXIRAM,sdram连续读AXIRAM跳跃式写” 这个是两个操作还是一个操作。

xy201207 发表于 2023-8-22 14:59:19

SDRAM的MPU属性为Write through, read allocate,no write allocate。p_des是内部AXIRAM,p_src是外部SDRAM.修改内部AXIRAM的MPU属性WB或者WT或者关闭读写cache,发现WB属性耗时最长约8ms,WT和关闭读写cache差不多耗时5ms.

eric2013 发表于 2023-8-23 08:29:40

xy201207 发表于 2023-8-22 14:59
SDRAM的MPU属性为Write through, read allocate,no write allocate。p_des是内部AXIRAM,p_src是外部SDRAM. ...
差的有点多
1、你的WB是这么配置吗,最高性能配置MPU_TEX_LEVEL1:

      /* 配置AXI SRAM的MPU属性为Write back, Read allocate,Write allocate */
      MPU_InitStruct.Enable         = MPU_REGION_ENABLE;
      MPU_InitStruct.BaseAddress      = 0x24000000;
      MPU_InitStruct.Size             = MPU_REGION_SIZE_512KB;
      MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
      MPU_InitStruct.IsBufferable   = MPU_ACCESS_BUFFERABLE;
      MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
      MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
      MPU_InitStruct.Number         = MPU_REGION_NUMBER0;
      MPU_InitStruct.TypeExtField   = MPU_TEX_LEVEL1;
      MPU_InitStruct.SubRegionDisable = 0x00;
      MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;

      HAL_MPU_ConfigRegion(&MPU_InitStruct);

2、WB会有个回写,更新到实际RAM空间,还会回写到Cache中。WT和关闭Cache是直写。

你这个测试实际差距有点多,可以考虑测试前后关闭全局中断。测试100次看看

xy201207 发表于 2023-8-23 10:22:46

1.WB是按照例程配置的,只是最后一个参数我是用的MPU_INSTRUCTION_ACCESS_DISABLE。
2.我关闭中断再试试。
会不会是CPU一直在分配cahce,然后我又是在跳跃式写,又无法命中导致还慢来了一点。:lol

eric2013 发表于 2023-8-23 10:38:04

xy201207 发表于 2023-8-23 10:22
1.WB是按照例程配置的,只是最后一个参数我是用的MPU_INSTRUCTION_ACCESS_DISABLE。
2.我关闭中断再试试。 ...

可以考虑使用MDMA或者DMA2D做数据复制粘贴。在AXI SRAM比CPU快
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109765&highlight=%B5%BD%B5%D7%2B%BC%D3%CB%D9

https://img.alicdn.com/imgextra/i4/299314119/O1CN01ScqQdH1gIY7Dqmv5S_!!299314119.png

qq1646544 发表于 2023-10-31 11:53:49

不开启 Cache,不开启MPU 此时内存属性是什么样的?,,是normal模式吗??

eric2013 发表于 2023-10-31 14:53:21

qq1646544 发表于 2023-10-31 11:53
不开启 Cache,不开启MPU 此时内存属性是什么样的?,,是normal模式吗??
芯片上电后的默认属性


https://img.anfulai.cn/dz/attachment/forum/201811/09/023853o2rwsw2vzwn85p2s.png
https://img.anfulai.cn/dz/attachment/forum/201811/09/023854uc74rzk4cslxmj97.png

亮晶晶 发表于 2024-4-6 16:29:37

大佬,讲得真好{:8:}
页: [1]
查看完整版本: STM32H7视频教程第14期:超干货,MPU和Cache实战,一张图了解所有经典配置案例,争取人人都可以玩溜(2022-05-08)