硬汉嵌入式论坛

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

[STM32H7] 大佬们,H7的DTCM设置默认内存,但是使用USB无法正常工作

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2025-1-25 21:30:12 | 显示全部楼层 |阅读模式
发现使用DTCM的那个0x2000 0000的内存作为默认内存,使用USB FS库(CUMX里开了USB的DMA),USB是无法正常工作的,使用AXI的内存作为默认内存是正常的

原因是因为DTCM只能MDMA访问,而USB的DMA并不是MDMA,所以无法工作么?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-1-26 10:12:04 | 显示全部楼层
对,是这样的,DTCM和ITCM不支持通用DMA,包括外设自带的DMA,比如H7的SDMMC带的IDMA,USB带的DMA和以太网带的DMA
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-1-26 11:09:50 | 显示全部楼层
eric2013 发表于 2025-1-26 10:12
对,是这样的,DTCM和ITCM不支持通用DMA,包括外设自带的DMA,比如H7的SDMMC带的IDMA,USB带的DMA和以太网 ...

谢谢硬汉哥!
也就是说,如果使用这些不支持MDMA的外设,MDK工程选项里,就不能设置DTCM为默认内存,要用AXI的内存,不然就得手动改很多HAL库里的东西,手动指定到AXI内存里,会非常麻烦,DTCM就只能单独通过分散加载文件来指定使用了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-1-27 06:23:53 | 显示全部楼层
lswhome 发表于 2025-1-26 11:09
谢谢硬汉哥!
也就是说,如果使用这些不支持MDMA的外设,MDK工程选项里,就不能设置DTCM为默认内存 ...

可以,也可以attribute指定
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 02:06 , Processed in 0.037950 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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