[STM32F7] 请问DTCM-RAM的空间可以用来存放变量吗?

[复制链接]
3398|13
 楼主| Atom2004 发表于 2017-12-12 10:23 | 显示全部楼层 |阅读模式
STM32F7里面,例如F722里面的256K RAM当中,有64K是用作DTCM。

貌似参考手册里面描述,DTCM是从地址0x20000000往后64K,而SRAM1是从地址0x20010000往后176K。

请问一下,DTCM这一片地址空间,我可以用来存放全局变量吗?
xuanhuanzi 发表于 2017-12-12 19:25 | 显示全部楼层
DTCM的地址范围是0X2000 0000开始的128KB,可以用来做普通SRAM使用,支持所有AHB主总线访问,而ITCM则是映射在0X0000 0000的16KB空间,仅供CPU访问,一般不用来做通用SRAM使用。 实际上,512KB SRAM也没有包含这16KB SRAM。
yiy 发表于 2017-12-12 20:21 | 显示全部楼层
不行的,而且一般你的变量是不会大到RAM放不下吧。
戈卫东 发表于 2017-12-12 22:34 | 显示全部楼层
可以。而且访问速度更快。
戈卫东 发表于 2017-12-12 22:35 | 显示全部楼层
要注意是不是有DMA限制。
 楼主| Atom2004 发表于 2017-12-14 10:04 | 显示全部楼层
yiy 发表于 2017-12-12 20:21
不行的,而且一般你的变量是不会大到RAM放不下吧。

RAM占用接近256K或者接近512K,那是完全有可能的。
否则ST也不需要退出一款512K RAM的芯片了吧。
 楼主| Atom2004 发表于 2017-12-14 10:06 | 显示全部楼层
戈卫东 发表于 2017-12-12 22:34
可以。而且访问速度更快。

那请问一下,CPU内核的缓冲机制,不会在预读Cache的时候将这DTCM里面的内容覆盖掉吗?
戈卫东 发表于 2017-12-14 10:07 | 显示全部楼层
Atom2004 发表于 2017-12-14 10:06
那请问一下,CPU内核的缓冲机制,不会在预读Cache的时候将这DTCM里面的内容覆盖掉吗? ...

不会。
 楼主| Atom2004 发表于 2017-12-14 13:26 | 显示全部楼层
本帖最后由 Atom2004 于 2017-12-14 13:27 编辑

好的,谢谢!那如果我使用的变量已经占用了这个DTCM得地址区间,那DTCM用于缓冲其他区域的变量时,DTCM的性能会不会受影响呢?
戈卫东 发表于 2017-12-14 13:53 | 显示全部楼层
Atom2004 发表于 2017-12-14 13:26
好的,谢谢!那如果我使用的变量已经占用了这个DTCM得地址区间,那DTCM用于缓冲其他区域的变量时,DTCM的 ...

DTCM不会“用于缓冲其他区域的变量”。
xixi2017 发表于 2017-12-15 14:41 | 显示全部楼层
不了解这个。
 楼主| Atom2004 发表于 2017-12-20 22:03 | 显示全部楼层
戈卫东 发表于 2017-12-14 13:53
DTCM不会“用于缓冲其他区域的变量”。

你意思是只有通过代码将变量放到这个特定的地址里面时,才能起到这个高速存储的作用吗?
戈卫东 发表于 2017-12-20 22:56 | 显示全部楼层
Atom2004 发表于 2017-12-20 22:03
你意思是只有通过代码将变量放到这个特定的地址里面时,才能起到这个高速存储的作用吗? ...

他就是RAM。和一般的RAM用法基本相同。
 楼主| Atom2004 发表于 2017-12-26 17:09 | 显示全部楼层
戈卫东 发表于 2017-12-20 22:56
他就是RAM。和一般的RAM用法基本相同。

是不是可以这样理解,那就是一片普通的RAM,只是这一片地址区域可以被CPU直接访问。

一般对运算速度有要求的变量,可以将地址指定到这片区域来,对吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

85

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部