kings669669 · 2022年08月09日 · 江西

【MM32F5270开发板试用】如何将数据存放在DTCM

【MM32F5270开发板试用】如何将数据存放在DTCM

上两篇文章:
【MM32F5270开发板试用】一、依靠SPI_SD,移植FatFs文件系统
【MM32F5270开发板试用】SysTick+Scheduler轮询
本次所有代码按照以前习惯全部开源:我的Github地址是:https://github.com/kings669/M...

我打算做:MM32F5 系列漫谈 2:吞吐率最大化的总线设计中的播放器,里面就有说到需要将数据放入DTCM中。

一、DTCM

在MM32F5270中有:
– 多达 192KB 的 SRAM,其中包括 32KB 指令 TCM(ITCM), 32KB 数据 TCM(DTCM)和 128KB 的系统 RAM,DTCM地址是从0x20000000开始,大小32KB

TCM=Tightly Coupled Memory,是一种被直接集成在CPU芯片中的高速缓存。DS有两种TCM,分别是ITCM(Instruction TCM)和DTCM(Data TCM)。
DTCM 用于数据存取,特点是跟内核速度一样

image.png
image.png
内置 32K 字节指令 TCM SRAM 和 32K 字节数据 TCM SRAM。指令 TCM(ITCM)起始地址为 0x00000000,数据 TCM(DTCM)起始地址为 0x2000 0000。
TCM SRAM 可以被 CPU 或者 DMA 用最快的系统时钟且不插入任何等待进行访问。

二、使用DTCM

1、我们打开keil魔术棒工具:
image.png
0x300000000 开始是SRAM1的区域,勾选后是给Keil进行管理
2、我们点击 Linker
image.png
点击编辑
3、我们就可以在这里开始编写一部分代码
image.png

  RW_RAM1 0x20000000 0x00008000{                    ;DTCM
    *(.RAM_D1)
  }

image.png
分配一个用户段(section),段的名字是RAM_D1,段的地址是 0x2000000
4、接着,使用_attribute__((section(“name”)))声明变量。定义变量后,一定编译成功,Build Analyzer才会更新。一定保存后要更新!!

测试

image.png
进入debug的watch加入查看
image.png
可以看出在DTCM的地址范围内

总结

这是我第一次了解这个TCM这个概念,学习MM32F527这款芯片,学到了很多东西。给了我很多的探索的机会。在此把我的学习过程会在论坛上分享。如有错误,欢迎指正。😀

推荐阅读
关注数
6151
内容数
276
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息