搜索
bottom↓
回复: 11

STM32H7 SRAM->SDRAM->SD CARD 写入速度极慢

[复制链接]

出0入0汤圆

发表于 2019-3-22 16:21:53 | 显示全部楼层 |阅读模式
最近在搞STM32H753的东西, 然后让ST的FAE 帮我们写代码, 他们的硬度工程师告诉我他需要13uS 把512byte的数据从SRAM MDMA传到SDRAM,虽然说SRAM SDRAM共享一个32bit的FMC但是这个速度, 我真的一口血吐在了屏幕上

我能想到的原因可能是他没有用internal SRAM 做buffer, 直传的话需要不停的来回切BUS 和片选,但是我看他给我的示波器图像,传512 byte 数据的时候,SDRAM和SRAM的片选得切了几百次, DMA的buffer不应该这么小吧

还有一个原因就是可能SDRAM需要不停地刷新cell,会把bus抢过去

想问一下各位大佬有没有什么别的看法

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入22汤圆

发表于 2019-3-22 16:30:47 来自手机 | 显示全部楼层
512byte,cache应该装的下把?

出0入0汤圆

 楼主| 发表于 2019-3-22 16:34:28 | 显示全部楼层
zxq6 发表于 2019-3-22 16:30
512byte,cache应该装的下把?

我也觉得是,H7的Cache 有足足16KByte的 Cache,问题是SDRAM的BANK ADDRESS是NON-cacheable 的

出0入442汤圆

发表于 2019-3-22 21:59:50 来自手机 | 显示全部楼层
sunnylyvoune 发表于 2019-3-22 16:34
我也觉得是,H7的Cache 有足足16KByte的 Cache,问题是SDRAM的BANK ADDRESS是NON-cacheable 的 ...

我晕,貌似fae是dma直接片外对片外传输,当然要频繁切换了。dma控制器又没有cache。你要先dma传到tcm里面,再dma往sdram里面写,这样就是两次连续操作了。

出0入0汤圆

发表于 2019-3-22 23:00:02 | 显示全部楼层
512Byte为啥要到SDRAM里去兜一圈?直接从SRAM->SD CARD不行?

出0入0汤圆

 楼主| 发表于 2019-3-23 00:14:19 来自手机 | 显示全部楼层
sblpp 发表于 2019-3-22 23:00
512Byte为啥要到SDRAM里去兜一圈?直接从SRAM->SD CARD不行?

SRAM 是个fpga , 只是把fpga当成sram 来读, 512byte 只是单次传输,频率是50Khz 等效速率25MByte/s 直接写sd 卡buffer 不够大数据就没了

出0入0汤圆

 楼主| 发表于 2019-3-23 00:16:11 来自手机 | 显示全部楼层
wye11083 发表于 2019-3-22 21:59
我晕,貌似fae是dma直接片外对片外传输,当然要频繁切换了。dma控制器又没有cache。你要先dma传到tcm里面 ...

我感觉也是,但是他怎么做到512byte 来回切几百次的........

出0入442汤圆

发表于 2019-3-23 07:50:56 来自手机 | 显示全部楼层
sunnylyvoune 发表于 2019-3-23 00:16
我感觉也是,但是他怎么做到512byte 来回切几百次的........

dma每次只能读一个字-你16位sram就要256次,8位sram就要512次。

出0入93汤圆

发表于 2019-3-23 09:35:12 | 显示全部楼层
LZ,您知道ST的DMA是什么意思吗?
我没用过这个高级的片子,我只用过F1和F0的,用过了之后,使我对DMA的印象大大改观。DMA从来就没有保证过它的速度,他只是保证了内存(和外设)直接传输而不用经过CPU。但是对于数据直接拷贝来说,比memcpy都慢了不知道多少。
借用编程语言的术语来说,DMA就是提供了一个异步的解决方案,但是要用到同步的情形却用异步来解决,那就是跟自己过不去。

出0入0汤圆

 楼主| 发表于 2019-3-24 01:53:09 来自手机 | 显示全部楼层
takashiki 发表于 2019-3-23 09:35
LZ,您知道ST的DMA是什么意思吗?
我没用过这个高级的片子,我只用过F1和F0的,用过了之后,使我对DMA的印 ...

对,你说的没错,dma 最大的好处就是不需要cpu 干涉,实际上也是保证速度的一种方式嘛,而且我这个确实需要异步,cpu 还要干其他事情。问题是我不知道st的fae 为什么要这么写,sdram sram 来回切的cost 是相当的可怕的

出0入0汤圆

 楼主| 发表于 2019-3-24 01:54:38 来自手机 | 显示全部楼层
wye11083 发表于 2019-3-23 07:50
dma每次只能读一个字-你16位sram就要256次,8位sram就要512次。

st 的mdma 我看介绍是可以做mutiple beats 的,最高好像是128beats 但是我一开就挂

出0入442汤圆

发表于 2019-3-24 02:55:33 来自手机 | 显示全部楼层
sunnylyvoune 发表于 2019-3-24 01:54
st 的mdma 我看介绍是可以做mutiple beats 的,最高好像是128beats 但是我一开就挂 ...

那你得找手册了,我没用过,当时做vga摄像头接收时只是用dma收数据,然后再用串口慢慢往pc传。。。那个dma是非常快的,因为我直接往片内sram里传。片内sram可以保证带宽和延时。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 14:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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