打印
[STM32F7]

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

[复制链接]
2657|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 | 只看该作者
可以。而且访问速度更快。

使用特权

评论回复
5
戈卫东| | 2017-12-12 22:35 | 只看该作者
要注意是不是有DMA限制。

使用特权

评论回复
6
Atom2004|  楼主 | 2017-12-14 10:04 | 只看该作者
yiy 发表于 2017-12-12 20:21
不行的,而且一般你的变量是不会大到RAM放不下吧。

RAM占用接近256K或者接近512K,那是完全有可能的。
否则ST也不需要退出一款512K RAM的芯片了吧。

使用特权

评论回复
7
Atom2004|  楼主 | 2017-12-14 10:06 | 只看该作者
戈卫东 发表于 2017-12-12 22:34
可以。而且访问速度更快。

那请问一下,CPU内核的缓冲机制,不会在预读Cache的时候将这DTCM里面的内容覆盖掉吗?

使用特权

评论回复
8
戈卫东| | 2017-12-14 10:07 | 只看该作者
Atom2004 发表于 2017-12-14 10:06
那请问一下,CPU内核的缓冲机制,不会在预读Cache的时候将这DTCM里面的内容覆盖掉吗? ...

不会。

使用特权

评论回复
9
Atom2004|  楼主 | 2017-12-14 13:26 | 只看该作者
本帖最后由 Atom2004 于 2017-12-14 13:27 编辑

好的,谢谢!那如果我使用的变量已经占用了这个DTCM得地址区间,那DTCM用于缓冲其他区域的变量时,DTCM的性能会不会受影响呢?

使用特权

评论回复
10
戈卫东| | 2017-12-14 13:53 | 只看该作者
Atom2004 发表于 2017-12-14 13:26
好的,谢谢!那如果我使用的变量已经占用了这个DTCM得地址区间,那DTCM用于缓冲其他区域的变量时,DTCM的 ...

DTCM不会“用于缓冲其他区域的变量”。

使用特权

评论回复
11
xixi2017| | 2017-12-15 14:41 | 只看该作者
不了解这个。

使用特权

评论回复
12
Atom2004|  楼主 | 2017-12-20 22:03 | 只看该作者
戈卫东 发表于 2017-12-14 13:53
DTCM不会“用于缓冲其他区域的变量”。

你意思是只有通过代码将变量放到这个特定的地址里面时,才能起到这个高速存储的作用吗?

使用特权

评论回复
13
戈卫东| | 2017-12-20 22:56 | 只看该作者
Atom2004 发表于 2017-12-20 22:03
你意思是只有通过代码将变量放到这个特定的地址里面时,才能起到这个高速存储的作用吗? ...

他就是RAM。和一般的RAM用法基本相同。

使用特权

评论回复
14
Atom2004|  楼主 | 2017-12-26 17:09 | 只看该作者
戈卫东 发表于 2017-12-20 22:56
他就是RAM。和一般的RAM用法基本相同。

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

一般对运算速度有要求的变量,可以将地址指定到这片区域来,对吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

85

帖子

0

粉丝