3605|6

46

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

有关片上内存和DMA [复制链接]

如果不考虑热启动的话,0xffff0000处的64KB内存能否用来DMA存数据。如果用的话,有什么需要注意的么?linux系统下用mmap操作好么?
谢谢。
此帖出自FPGA/CPLD论坛

最新回复

没有SMMU,DMA能用虚拟地址操作吗?必须只能物理地址啊,你就算申请到内存拿到虚拟地址了,也得转成物理地址给DMA控制  详情 回复 发表于 2017-8-12 21:31
点赞 关注
 

回复
举报

6423

帖子

17

TA的资源

版主

沙发
 
linux系统下你直接操作绝对地址吗?
此帖出自FPGA/CPLD论坛

点评

嗯,已经避免使用片上内存了 DMA的问题也差不多了 感谢回复的2位网友  详情 回复 发表于 2017-11-10 11:29
没有SMMU,DMA能用虚拟地址操作吗?必须只能物理地址啊,你就算申请到内存拿到虚拟地址了,也得转成物理地址给DMA控制  详情 回复 发表于 2017-8-12 21:31
ioremap或mmap我知道 请问2个固定的物理地址之间DMA数据传输用什么方法比较好? 我想把将768M后的DDR物理内存留下不让linux系统用,作为fpga写数据的缓冲区,因为fpga写间隔比较小,只有二十几微秒,希望能把数据通过  详情 回复 发表于 2017-8-6 17:27
个人签名training
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
白丁 发表于 2017-8-4 18:58
linux系统下你直接操作绝对地址吗?

ioremap或mmap我知道

请问2个固定的物理地址之间DMA数据传输用什么方法比较好?
我想把将768M后的DDR物理内存留下不让linux系统用,作为fpga写数据的缓冲区,因为fpga写间隔比较小,只有二十几微秒,希望能把数据通过网络再传走。可是现在每秒fpga写入总时间大约0.688s,留给linux单独占用768M后DDR内存时间比较少。我想通过DMA把数据搬移到0xffff0000的片上内存,用网络发走,避免读写冲突。

不知道是否可行。还是我直接研究pl330的驱动去,自己实现这个功能?
谢谢
此帖出自FPGA/CPLD论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

4
 
白丁 发表于 2017-8-4 18:58
linux系统下你直接操作绝对地址吗?

没有SMMU,DMA能用虚拟地址操作吗?必须只能物理地址啊,你就算申请到内存拿到虚拟地址了,也得转成物理地址给DMA控制
此帖出自FPGA/CPLD论坛

点评

嗯,已经避免使用片上内存了 DMA的问题也差不多了 感谢回复的2位网友  详情 回复 发表于 2017-11-10 11:29
其实我的情况是这样的 fpga每秒写数据到arm内存0x30000000物理地址,长度16M。再写另一部份数据到0x3C000000物理地址,长度大约也是16M。linux把物理地址通过mmap转换为虚拟地址,通过乒乓方式发送tcp包。 但现在  详情 回复 发表于 2017-8-14 15:26
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

5
 
lelee007 发表于 2017-8-12 21:31
没有SMMU,DMA能用虚拟地址操作吗?必须只能物理地址啊,你就算申请到内存拿到虚拟地址了,也得转成物理 ...

其实我的情况是这样的
fpga每秒写数据到arm内存0x30000000物理地址,长度16M。再写另一部份数据到0x3C000000物理地址,长度大约也是16M。linux把物理地址通过mmap转换为虚拟地址,通过乒乓方式发送tcp包。
但现在发现每秒的fpga不是连续全速写入数据,而是间隔20多微秒写1000多字节。造成linux独占时间不够。
所以我想用片上内存转送,每次fpga写满64KB就用DMA,避免网络读和fpga写有内存冲突。
但是发现0x30000000转为虚拟地址,再从虚拟地址转总线地址后,总线地址只是虚拟地址的一个偏移。
总线地址不是应该和物理地址有关么?好奇怪。
而且不知道0xffff0000的片上内存的总线地址是多少?它的IOMEM对DMA有什么影响么?

我问mmap和ioremap,因为我收到的数据和发送都是在固定的物理地址,我想知道能否跳过将0x30000000转换虚拟地址这一步,提高速度。

谢谢
此帖出自FPGA/CPLD论坛
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

6
 
白丁 发表于 2017-8-4 18:58
linux系统下你直接操作绝对地址吗?

嗯,已经避免使用片上内存了
DMA的问题也差不多了
感谢回复的2位网友
此帖出自FPGA/CPLD论坛
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

7
 
lelee007 发表于 2017-8-12 21:31
没有SMMU,DMA能用虚拟地址操作吗?必须只能物理地址啊,你就算申请到内存拿到虚拟地址了,也得转成物理 ...

嗯,已经避免使用片上内存了
DMA的问题也差不多了
感谢回复的2位网友
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表