硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3054|回复: 4
收起左侧

[Cache] STM32H7 的 Cache 使用

[复制链接]

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2021-6-29 21:56:52 | 显示全部楼层 |阅读模式
请教:
      参照《第24章 STM32H7 的 Cache解读》,分别使能了 I-Cache 和 D-Cache。
      其实代码和数据都可以放入到TCM中,只是因为UART1使用DMA的缘故,不得不使用0x24000000的空间来存放UART DMA收发数据,有2点疑惑:
       1、使能 I-Cache ,代码能正常工作,但是效率提高不大,必须使能D-Cache,代码效率提高将近5倍,按说0X24000000空间也是240M的频率,不应该差别这么大呀?
       2、使能 D-Cache 后,串口的收发数据都不对,尝试用SCB_InvalidateDCache_by_Addr()函数取消0x24000000空间的DCache功能,收发数据还是不对。

       其实象这种情况,可以用不着开D-Cache吧,因为除了UART DMA收发区,其它数据都分配到了DTCM中了,DMA数据缓冲区又不能使用DCache吧?

谢谢!!!



回复

使用道具 举报

2

主题

62

回帖

68

积分

初级会员

积分
68
发表于 2021-6-30 09:10:33 | 显示全部楼层
1、ICACHE 跟指令命中相关,D-cache 有可能差这么多,因为本身总线速度就差1倍
2、 我的串口buf 配置在 sram4 中 工作OK :  
    MPU_InitStruct.Enable = MPU_REGION_ENABLE;
    MPU_InitStruct.Number = MPU_REGION_NUMBER5;
    MPU_InitStruct.BaseAddress = 0x38000000;
    MPU_InitStruct.Size = MPU_REGION_SIZE_64KB;
    MPU_InitStruct.SubRegionDisable = 0x0;
    MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
    MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
    MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
    MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
    MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
    MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
    HAL_MPU_ConfigRegion(&MPU_InitStruct);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2021-6-30 09:36:11 | 显示全部楼层
1、说明你的程序优化空间很大。
2、使用SCB_CleanInvalidateDCache

发送前后都调用下。

3、串口这种低速设备,开不开都行
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-6-30 10:10:41 | 显示全部楼层
@heluo1985 @eric2013
感谢2位的解答,分别用这2种方法都测试,都能正常工作,而且效率基本一样。谢谢!

不过还是有疑问:
1、用F407来跑这段代码(168M),只需要50us;用H7来跑(480M+240M),如果不开Icache和Dcache,需要110us,其实代码段此时还是放在ITCM上的。

2、 MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
这个硬汉好像说共享是个坑,不能开的,但是发觉开与不开都可以。

谢谢!
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2021-6-30 10:42:41 | 显示全部楼层
非常感谢armfly,为大家做了这么多基础工作,从F4到H7都是沿着armfly的脚印,少了很多周折。

祝armfly越来越好,这应该是广大嵌入式开发人员的心愿,也是福分
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 18:16 , Processed in 0.318634 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表