腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
Linux
PCIe
DMA
驱动程序
、
、
、
我目前正在为PCIe设备编写一个驱动程序,该驱动程序应该使用
DMA
将数据发送到
Linux
系统。据我所知,我的PCIe设备需要一个
DMA
控制器(
DMA
主),我的
Linux
系统也需要(
DMA
从机)。目前,PCIe设备没有
DMA
控制器,不应该有一个控制器。这让我很困惑。 启动从内存映射的PCIe寄存器到的
DMA
传输。B.我需要
调用
哪个系统<em
浏览 13
提问于2019-07-09
得票数 1
1
回答
将驱动程序包括文件复制到
linux
文件夹
、
、
我已经成功地编写了一个驱动程序和一个
应用
程序来测试它,下面是BR用户手册:my_
dma
:
应用
程序我的
应用
程序/my_
浏览 0
提问于2018-07-11
得票数 1
2
回答
是否可以使用
dma
_set_mask()告诉内核不要在4G下使用内存
、
、
、
、
我的pcie设备有一个错误,它不能将地址设置在4G以下,我应该用什么掩码和
dma
_set_mask一起告诉内核呢?
浏览 19
提问于2015-03-12
得票数 0
回答已采纳
1
回答
如何在内核模块中断中触发函数
、
、
我正在尝试编写一个
linux
内核模块,它等待硬件触发,然后通过
DMA
将一些数据移动到外部存储器。 我已经在我的内核模块中识别了硬件触发器,现在我需要让它执行
DMA
。问题是,执行
DMA
的函数涉及一个休眠直到
DMA
完成的点。这在中断中是不允许的,所以我不能在我的中断服务例程中直接
调用
该函数。有没有一种方法可以设置某种信号,使内核模块知道在下次
调用
DMA
函数时
调用
它,而不是在中断上下文中
调用
?
浏览 7
提问于2018-03-08
得票数 0
1
回答
如何在
Linux
中分配大的连续内存区域
、
、
、
是的,我最终会用它来进行
DMA
,但暂时不要考虑一致性。我有64位条形寄存器,因此,AFAIK,所有的RAM (例如高于4G)是可用的
DMA
。 我正在寻找大约64 of的连续内存。是的,那可真多。我注意到,如果设置了这两种方法(在内核构建时),我可以简单地
调用
dma
_alloc_coherent,但是,出于后勤原因,重新编译内核是不可取的。我在网上发现的一切都表明了
dma
_alloc_coherent的使用,但我知道这只适用于CONFIG_CMA=y和CONFIG_
DMA
_CMA=yes。
浏览 16
提问于2019-06-08
得票数 8
回答已采纳
1
回答
如何在
Linux
下访问
DMA
、
、
我正在用
Linux
编写一个设备驱动程序,我需要为它实现
DMA
。 很明显,可以通过
调用
pci_alloc_consistent()来分配
DMA
缓冲区。但是我们如何从用户级别向这些缓冲区写入命令呢?任务包括将值写入特定的寄存器,这些任务是如何使用
DMA
命令实现的?
浏览 12
提问于2012-02-12
得票数 1
1
回答
Linux
:使用DMAengine进行分散收集事务
、
、
、
、
/platform_device.h>#include <
linux
/
dma
-mapping.h>#include <
linux
/of_
dma
.h> #define S
浏览 11
提问于2016-05-09
得票数 4
回答已采纳
3
回答
是否每个
dma
_map_single
调用
都需要相应的
dma
_unmap_single?
、
、
我正在将一个大的代码库移植到
Linux
内核设备驱动程序。ASIC使用大量的
DMA
通道。在我不需要CPU访问的情况下
浏览 4
提问于2013-04-23
得票数 5
回答已采纳
1
回答
我可以使用
dma
_map_single()返回的地址在DeviceB上
调用
DeviceA吗?
、
、
、
、
我正在编写自定义
linux
驱动程序,它需要多个PCIE设备之间的
DMA
内存。现在,我使用从
调用
dma
_map_single的
dma
_alloc_coherent返回的地址
调用
DeviceA来
调用
DeviceA。这在x86_64中似乎运行得很好,但我觉得我违反了规则,因为: 应该使用从kmalloc (“和朋友”)分配的内存来
调用
dma
_map_single。从另一个设备的
dma
_alloc_coherent
调
浏览 3
提问于2021-07-26
得票数 0
1
回答
将JPEG图像发送到AXI4流中并将其读回?
、
、
、
、
我正在Zedboard Zynq评估板上做一个图像处理项目,使用的是构建在上面的FPGA。我已经使用HLS编写了图像处理块,并创建了输入和输出均为宽度为8的AXI4流的IP。有没有现成的IP可以做到这一点?
浏览 5
提问于2017-11-10
得票数 1
2
回答
如何从
linux
用户空间进行数据缓存刷新/失效
、
、
、
、
试图在
linux
用户空间中使用可缓存的映射缓冲区。加速器将访问这些缓冲器。在ARMv7 7-A体系结构中,是否有可能显式地从
linux
用户空间刷新/失效数据缓存?用户空间
应用
程序在用户模式下运行,我们是否需要为缓存操作设置任何特权模式权限。 更多的信息会有帮助。
浏览 4
提问于2015-12-16
得票数 5
1
回答
Linux
dma
设备驱动程序
dma
_request_channel失败
、
、
、
、
我正在尝试编写一个在嵌入式系统上与
DMA
接口的平台驱动程序。我们使用的是Zedboard和Xilinx的AXI
DMA
IP。然而,我相信我们的错误与
Linux
内核有关。为了获得
DMA
的tx/rx通道,
linux
提供了
dma
_request_channel函数。此函数使用需要与
DMA
匹配的过滤器和过滤器参数。此函数获取系统中所有可用
DMA
的列表,并使用过滤器将其与我们想要的匹配。但是,这似乎不能获得所有可用的
DMA
,而只能获
浏览 19
提问于2013-07-30
得票数 0
1
回答
Linux
设备驱动程序可以等待
DMA
在device_remove()函数中终止吗?
、
、
、
、
我为PCI设备编写了一个
Linux
设备驱动程序。这个设备执行
DMA
操作。当程序运行
DMA
操作时,程序崩溃时会出现问题。实际上,当崩溃时,系统会
调用
device_remove()函数(就像
调用
了close()一样)。此功能对PCI设备使用的内存区域进行清理,正确释放分配的内存。我的意思是它在正常情况下正常工作。但是,如果
DMA
正在运行,当它实际终止时,它将无法执行
DMA
清理,因为它不再能够访问已经释放的设备数据。一个简单的解决方案是在close()函数中等待。(这是我的理
浏览 7
提问于2010-05-12
得票数 3
回答已采纳
1
回答
Linux
内核:可以让流式
DMA
映射无限期地打开吗?
、
、
许多关于设备驱动程序编程的指南建议,流式
DMA
映射(即那些由
dma
_map_single()和朋友创建的映射)应保持尽可能短的开放时间,因为它们消耗资源(即IOMMU映射资源,如果平台有资源,或者在需要时使用反弹缓冲区在我的例子中,我使用的是能够进行64位
DMA
的PCIe设备,所以应该不需要反弹缓冲区(在这种情况下,似乎也不需要来自IOMMU的特殊处理,对吧?)。数据来自设备(例如,它与
DMA
_TO_CPU映射),当有新数据可用时,设备通过中断通知我,此时我在访问刚通过
DMA
发送给我的数据之前触发
浏览 3
提问于2014-01-08
得票数 5
3
回答
如何从软件工具向Zynq中的AXI-Stream发送数据?
、
、
、
、
我正在寻找一种方法,将一些数据从我用C编写的软件
应用
程序发送到Zynq的AXI-Stream接口。就像这样send_data(data); 我在Arm部分运行
Linux
,现在我想把它连接到可编程逻辑部分。
浏览 2
提问于2015-06-02
得票数 7
1
回答
尝试将带有挂起
DMA
操作的页面发送到
、
、
这是关于
Linux
(与驱动程序相关的)的问题。假设我们有一些硬件,能够进行大型
DMA
访问(多线程读写,您可以考虑CUDA卡或网卡)。将传送到/从设备的数据分配在用户空间中,并放置在用户空间中。因此,我认为正确的方法是使用
DMA
访问mlock()内存范围。然后用户进程将
调用
我的驱动程序来启动
DMA
传输。在传输启动后,我的用户空间进程仍在其他线程中工作。如果我在实际的
DMA
传输结束之前
调用
munlock()会怎么样? 这个munlock()是成功还是失败?或者它
浏览 2
提问于2013-09-21
得票数 1
回答已采纳
3
回答
从哪里开始学习
linux
DMA
/设备驱动程序/内存分配
、
、
、
我正在移植/调试一个设备驱动程序(由另一个内核模块使用),并且面临着一个死胡同,因为
dma
_sync_single_for_device()由于内核oops而失败。哦,是的,如果它是相关的,代码应该在PowerPC上运行(并且
linux
是OpenWRT) 编辑:最好是在线资源(图书需要几天的时间才能送达:)
浏览 7
提问于2010-03-03
得票数 7
回答已采纳
1
回答
如何从内核空间收缩
Linux
页面缓存?
、
、
、
我在一个系统上工作,它涉及一些自定义硬件和我为硬件编写的自定义
Linux
设备驱动程序。在测试期间,在系统运行测试用例很长一段时间后,我有时会看到
DMA
分配失败,驱动程序中的一个
dma
_alloc_coherent
调用
失败,这导致我的
应用
层软件崩溃。我终于能够追踪到这个问题,我发现当我看到
DMA
分配失败时,
Linux
内核页面缓存非常满。 例如,在我捕获的最后一次失败中,页面缓存填满了系统上32 GB RAM中的27 GB。我怀疑是页面缓存的“满”导致
dma</em
浏览 0
提问于2015-08-11
得票数 4
1
回答
Linux
中的
DMA
memcpy操作
、
我想使用
dma
_async_memcpy_buf_to_buf函数进行
dma
,该函数位于dmaEngin.c文件(
linux
/drivers/
dma
)中。为此,我在dmatest.c文件中添加了一个函数(
linux
/drivers/
dma
),如下所示:{
dma
_cookie_t cookie: %lld\n",(long long)actual_t
浏览 4
提问于2014-08-27
得票数 7
回答已采纳
1
回答
是否有可能在
Linux
中进行内存到内存的
DMA
传输?如果是,什么函数
调用
DMA
开始传输?
、
我们的任务是在我们的驱动程序中
调用
IOCTL,并给它一个充满RGB值的源缓冲区(一个整数数组)、一个空的目标缓冲区和一个长度。我们将
调用
DMA
控制器将源缓冲区的内容传输到目标缓冲区,然后对目标缓冲区中的值
应用
线性转换。 我们已经成功地完成了不使用
DMA
的转换,并且成功地为设备分配了
DMA
信道。我们面临的问题是,我们似乎找不到一个函数anywhere来描述如何使用
DMA
启动传输。我们想让它在完成时引发中断(驱动程序不应该在等待传输完成时旋转)。我们看过
linux<
浏览 4
提问于2017-06-21
得票数 2
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux系统调用实例和功能速查
介绍Linux下的系统调用过程
从 Rust 调用 C 库函数|Linux 中国
Linux的系统调用与函数库的关系
零拷贝技术在 Java 中为何这么牛?
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券