硬汉嵌入式论坛

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

[SRAM] STM32H7的ITCM虽然是指令RAM空间,但是用来做通用RAM空间也是没问题的

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2021-7-27 09:13:29 | 显示全部楼层 |阅读模式

ITCM指令RAM空间有64KB,DTCM数据RAM空间有128KB

ITCM除了可以加载代码运行,也可以做通用RAM空间。实际在稍复杂的工程里面测试没问题。



1、AXI SRAM(D1域,200MHz)
地址:0x2400 0000
大小: 512KB


2、AHB SRAM(D2域,200MHz)
SRAM1
地址:0x3000 0000
大小:128KB

SRAM2
地址:0x3002 0000
大小:128KB

SRAM3
地址:0x3004 0000
大小:32KB

3、AHB RAM(D3域,200MHz)
SRAM4
地址:0x3800 0000
大小:64KB

BKUP SRAM
地址:0x3880 0000
大小:4KB


4、TCM RAM(400MHz)
DTCM-RAM
地址:0x2000 0000
大小:128KB

ITCM-RAM
地址:0x0000 0000
大小: 64KB
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2021-12-16 10:24:28 | 显示全部楼层
这个问题困扰我很久了,理论上都是TCM,之前的教程一直说要把Vector 放到DTCM 我就难以理解。还想问一下,我是否可以通过修改SCT ,debug.ini 配置,让程序直接刷在ITCM 里面,然后把钳4KB 用作虚拟rom,后边的60KB当做ram 执行,我理解是没问题的,但是debug 的时候 keil 0x0 读取到的内容根本不是map 上边SP和Reset_handle 的地址。这个是因为STM32 的重映射关系导致的么?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2021-12-16 11:00:46 | 显示全部楼层
xuanyuanjianyun 发表于 2021-12-16 10:24
这个问题困扰我很久了,理论上都是TCM,之前的教程一直说要把Vector 放到DTCM 我就难以理解。还想问一下, ...

H7不需要F4,F1那种重映射,是直接配置启动地址的。

之前做过一个RAM调试的例子,供参考,不过不是用的ITCM

基于STM32H7的内部SRAM程序调试工程模板(512KB的AXI SRAM存程序,DTCM做主RAM)
https://forum.anfulai.cn/forum.p ... 3112&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

219

主题

1109

回帖

1776

积分

至尊会员

More we do, more we can do.

积分
1776
发表于 2021-12-16 11:33:41 | 显示全部楼层
看了系统架构图,ITCM是可以通过系统总线访问,因而也可以当RAM用。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2021-12-16 12:20:34 | 显示全部楼层
eric2013 发表于 2021-12-16 11:00
H7不需要F4,F1那种重映射,是直接配置启动地址的。

之前做过一个RAM调试的例子,供参考,不过不是用的 ...

https://forum.anfulai.cn/forum.p ... d=110125&extra=
刚发现是command 的括号导致pc 指针初始化失败。修改后已经成功。请硬汉哥多指教
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2021-12-16 12:22:15 | 显示全部楼层
emwin 发表于 2021-12-16 11:33
看了系统架构图,ITCM是可以通过系统总线访问,因而也可以当RAM用。

请教下,你说的系统架构图是哪个?我看到的都是直接挂在core 上
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-5-25 17:32:02 | 显示全部楼层
既然ITCM和DTCM的区别不大,那么我的问题来了,程序可不可以直接在DTCM里面运行
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-5-25 22:50:07 | 显示全部楼层
我记得ITCM和DTCM带宽不一样,ITCM是32bit,DTCM是64bit
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2022-5-27 00:53:04 | 显示全部楼层
浮生莫若闲 发表于 2022-5-25 17:32
既然ITCM和DTCM的区别不大,那么我的问题来了,程序可不可以直接在DTCM里面运行

没问题,也可以的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2022-5-27 00:56:20 | 显示全部楼层
Jx13 发表于 2022-5-25 22:50
我记得ITCM和DTCM带宽不一样,ITCM是32bit,DTCM是64bit

https://developer.arm.com/docume ... t-the-memory-system

The ITCM interface is 64-bits wide. The DTCM is divided into two 32-bit wide interfaces, D0TCM and D1TCM. The upper 32-bits of data is on the D1TCM interface and the lower 32-bits of the data is on the D0TCM interface.
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2025-6-18 11:01:57 | 显示全部楼层
PM0253
Programming manual  编码手册中写明了,ITCM 可以用于 数据存储,测试下来ITCM DTCM 用于存储数据,效率差异不大  
微信图片_20250618110012.png
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2025-6-18 11:02:44 | 显示全部楼层
在实际项目中,我把ITCM 用于堆栈了
回复

使用道具 举报

4

主题

90

回帖

102

积分

初级会员

积分
102
发表于 2025-6-18 11:37:03 | 显示全部楼层
heluo1985 发表于 2025-6-18 11:02
在实际项目中,我把ITCM 用于堆栈了

是非 DMA 访问变量放在 DTCM,堆栈放在 ITCM 吗?由 sct 文件配置吗?
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2025-6-18 16:22:03 | 显示全部楼层
Penguins 发表于 2025-6-18 11:37
是非 DMA 访问变量放在 DTCM,堆栈放在 ITCM 吗?由 sct 文件配置吗?

是的
回复

使用道具 举报

4

主题

90

回帖

102

积分

初级会员

积分
102
发表于 2025-6-18 16:28:01 | 显示全部楼层

那 sct 文件如何配置堆栈区呢?
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2025-6-18 18:48:01 | 显示全部楼层
Penguins 发表于 2025-6-18 16:28
那 sct 文件如何配置堆栈区呢?

  RW_IRAM1 0x00000800  0x0000FD00  {  ;ITCM RW data -64K
   .ANY (+RW +ZI)
  }  


  RW_IRAM2 0x20000000 0x00010000  {  ;DTCM RW data -64K
   .ANY (DTCM_DATA)
  }


其他的位置都给他戴上名字,不带名字的就落在了 .ANY (+RW +ZI)
回复

使用道具 举报

4

主题

90

回帖

102

积分

初级会员

积分
102
发表于 2025-6-18 21:29:04 | 显示全部楼层
heluo1985 发表于 2025-6-18 18:48
RW_IRAM1 0x00000800  0x0000FD00  {  ;ITCM RW data -64K
   .ANY (+RW +ZI)
  }  

了解了,相当于让堆栈保留默认,而默认是 ITCM。我现有的是默认 DTCM,需要 DMA 的放在 AXI SRAM,忘记可以改默认了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 03:38 , Processed in 0.050631 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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