腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
2
回答
将静态数据结构用于
DMA
、
我有一个用于
linux
kernel (2.6.18)的驱动程序,其中我使用kmalloc(sizeof(my_struct_t),GFP_ATOMIC)来分配
内存
,这些
内存
后来被用于通过某些设备的
DMA
后来我不得不增加my_struct的
大小
。它变得太大了,以至于kmalloc()代码使用静态断言和编译的__you_cannot_kmalloc_that_much符号来通知
内存
区块太大而无法分配。我定义了静态my_struct_t my_struct; 但是
DMA
事务
浏览 3
提问于2009-12-03
得票数 3
回答已采纳
1
回答
Linux
PCIe
DMA
驱动程序
、
、
、
我目前正在为PCIe设备编写一个驱动程序,该驱动程序应该使用
DMA
将数据发送到
Linux
系统。据我所知,我的PCIe设备需要一个
DMA
控制器(
DMA
主),我的
Linux
系统也需要(
DMA
从机)。目前,PCIe设备没有
DMA
控制器,不应该有一个控制器。这让我很困惑。 启动从
内存
映射的PCIe寄存器到的
DMA
传输。从用户空间中的
内存<
浏览 13
提问于2019-07-09
得票数 1
1
回答
Xilinx Zynq平台上使用AXI-
DMA
IP的PCM
DMA
引擎
、
、
、
、
我正在尝试在基于Zynq-7000的平台上使用
DMA
引擎来将PCM流传输到Zynq中的自定义I2S控制器。我的I2S控制器连接到外部放大器。我想通过AXI-
DMA
控制器使用
DMA
。这是我当前的数据路径: 我在Zynq PS上使用的是
Linux
4.10内核。我使用
Linux
的ASoC子系统来产生pcm流和控制我的外部音频放大器。我有512MB的DDR
内存
连接到Zynq。", "
dma
1", "
dma
2&qu
浏览 57
提问于2017-02-24
得票数 3
2
回答
如何解释设备树的这一部分?
.dts中的以下代码片段描述了保留
内存
: #address-cells = <0x2>; ranges; compatible = "shared-
dma
-pool"; size= <0x0 0x1000000>; // 16MB
浏览 13
提问于2018-08-16
得票数 0
2
回答
重新提交
DMA
引擎事务
、
、
、
我正在为嵌入式SoC编写一个自定义的高速
Linux
驱动程序。要向SPI外围设备(
DMA
_MEM_TO_DEV)发送数据,我是
Linux
引擎API。根据这些文档,设置和执行
DMA
事务的步骤如下: 获取事务处理的描述符
DMA
事务。但是我需要基于一些硬件流控制(GPIO)从相同
大小
的
内存
位置(<em
浏览 5
提问于2019-03-06
得票数 1
回答已采纳
3
回答
是否每个
dma
_map_single调用都需要相应的
dma
_unmap_single?
、
、
我正在将一个大的代码库移植到
Linux
内核设备驱动程序。ASIC使用大量的
DMA
通道。 我用GFP_KERNEL|GFP_
DMA
实现了kmalloc
内存
。在启动
DMA
之前,我使用
dma
_map_single获取硬件(物理)
内存
地址,将其提供给硬件。(还会刷新/无效dcache中的
内存
吗?)在
DMA
完成后,我有时需要CPU访问数据,但并不经常。在我通过代码访问数据之前,我做了一个
dma
_unmap_singl
浏览 4
提问于2013-04-23
得票数 5
回答已采纳
1
回答
PCIe内核驱动程序
DMA
写入错误地址
、
、
我目前正在为
Linux
4.19编写一个PCIe内核驱动程序。首先初始化PCIe驱动程序。分配后,我将物理地址推入
DMA
配置并启动传输。我遇到的问题是,当使用虚拟地址读取
DMA
数据时,我只读取零,而不是通过
DMA
写入任何零。我还测试了
内存
区域,首先通过CPU将ramp写入
内
浏览 5
提问于2020-03-30
得票数 0
2
回答
是否可以使用
dma
_set_mask()告诉内核不要在4G下使用
内存
、
、
、
、
我的pcie设备有一个错误,它不能将地址设置在4G以下,我应该用什么掩码和
dma
_set_mask一起告诉内核呢?
浏览 19
提问于2015-03-12
得票数 0
回答已采纳
1
回答
DMA
传输
大小
、
、
、
DMA
将数据传输到
内存
是否有特定的
大小
?例如,在CPU侧,当数据被读或写到物理存储器(DRAM)时,它通常是64字节的粒度(高速缓存块
大小
)。我的问题是:当设备使用
DMA
写入
内存
时,控制器是否使用类似的固定
大小
进行实际数据传输? 请注意,我不是在问
DMA
事务是否可以有不同
大小
的传输,因为更大的数据包总是可以分解为固定
大小
的块。
浏览 1
提问于2013-07-12
得票数 2
回答已采纳
1
回答
用户空间缓冲区与
内存
映射文件之间的
DMA
、
、
、
内存
通过用户空间
DMA
:在
linux
中可以通过用户空间
DMA
实现memcpy吗?我知道有一些方法可以通过
DMA
将内核缓冲区复制到用户空间缓冲区,但是想要在用户空间中通过
DMA
对memcpy进行扩展吗?
浏览 1
提问于2014-04-07
得票数 1
回答已采纳
2
回答
如何处理作为网络的物理地址以及
DMA
如何连接到它?
、
、
、
我正在开发一个网络驱动程序,对
内存
管理有点困惑。在TX路径上,我收到一个skb,因为下层只希望获得物理地址,我想我需要调用*virt_to_phys*并将返回值发送到下层。(这有道理吗?)现在,我知道有函数*
dma
_map_single*和*
dma
_unmap_single*。我仍然不知道他们是如何来到这里的。所以下层想要用
DMA
..。我也不确定我是否理解
dma
_map_single描述的含义会很感激你的帮助。
浏览 4
提问于2013-11-11
得票数 0
回答已采纳
2
回答
获取
Linux
下缓冲区的物理地址
、
、
、
、
我在Xilinx的Microblaze上运行
Linux
内核3.3,带有完整的MMU。之所以需要这样做,是因为我有一个
DMA
引擎,可以从预设的物理
内存
地址流式传输数据,所以我需要强制
Linux
在那个确切的
内存
位置创建缓冲文件,这样当我将数据写入这个文件时,它会立即由
DMA
引擎传输到另一个硬件核心更多详细信息: 我的系统有一个512MB的
DMA
通过“Xilinx的多端口
内存
控制器连接到系统上,这个
内存
控制器的基地址是0x90000000,
浏览 11
提问于2013-06-13
得票数 7
1
回答
pci_alloc_consistent无缓存存储器
、
、
、
公平地说,pci_alloc_consistent分配一个连续的、非缓存的、非分页的内核
内存
块。我问这个问题的原因是,我在一些内核/驱动程序代码(不是在普通内核源代码中)中看到了这样的评论,我认为我理解
内存
是连续的,但是不能确定它是否被分配到非缓存中,因为缓存一致性的思想是保持缓存和
DMA
内存
中的数据一致例如,在Part Ia一节中说:因此,人们无法推断
内存
是非缓存的,所
浏览 6
提问于2015-08-04
得票数 1
回答已采纳
1
回答
为什么我们需要
DMA
池?
、
、
我正在阅读,我不明白为什么需要
DMA
池。什么是<1KB数据传输的最佳性能?
浏览 3
提问于2020-03-07
得票数 0
回答已采纳
1
回答
我可以使用
dma
_map_single()返回的地址在DeviceB上调用DeviceA吗?
、
、
、
、
我正在编写自定义
linux
驱动程序,它需要多个PCIE设备之间的
DMA
内存
。我有以下情况:如果#1是"ok",则仍不确定是否有必要调
浏览 3
提问于2021-07-26
得票数 0
1
回答
如何创建100M字节的缓冲区
我正在测试
Linux
上的一个接口的吞吐量。我正在使用
DMA
进行数据传输。
DMA
需要连续的
内存
位置。但是kmalloc无法分配超过1MB的
内存
。有没有其他方法可以创建高达100M字节的大缓冲区?
浏览 0
提问于2011-05-01
得票数 4
1
回答
DMA
的快速
内存
缓冲器
、
、
我目前正在为
DMA
开发
linux
驱动程序。驱动程序使用
dma
_alloc_coherent分配
内存
区域,我使用_
dma
_mmap_id = (int*) mmap(NULL, buffer_size, PROT_READ | PROT_WRITE我试图为测试目的分配非相干
内存
(使用kmalloc和
dma
_alloc_noncoherent) (只是为了查看这是否加速了
内存
访问),但在这些情况下,我能够分配的
内存
量非常有限(例如,4MB
浏览 1
提问于2016-05-16
得票数 2
1
回答
映射
linux
内核中的
DMA
中断
、
、
我正在为一个包含
DMA
控制器的powerpc SoC编写一个内核模块。我想映射
linux
内核中的
DMA
中断。我的
DMA
结构有两个中断:{ u32
dma
2;
内存
映射了内核中的
DMA
结构。
dma
->
dma
1=irq_of_parse_and_map(ofdev->node,0);
dma
浏览 2
提问于2011-05-18
得票数 3
2
回答
Linux
内核如何决定使用哪个
内存
区域?
、
、
、
当我检查页面时
Linux
如何选择一个
内存
区域来分配一个新页面?
浏览 2
提问于2013-08-05
得票数 3
1
回答
Linux
操作--如何启动传输
、
、
我读过
Linux
设备驱动程序,
DMA
-API.txt,
DMA
-HOWTO.txt也看过驱动程序/
dma
/dmatest.c,但是我不知道您是如何启动
dma
传输的。所有关于映射
内存
的讨论都没有讨论如何启动事务。PCI示例驱动程序有一个传输功能,但是它使用“特定的”
DMA
操作,我正在试图找出一个更通用/可移植的实现,它不依赖于硬件。我试着做些像 中断事
浏览 10
提问于2012-12-04
得票数 2
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
图解|Linux内存碎片整理
[务必收藏] Linux用户空间和内核空间所有15种内存分配方法总结
Linux内存映射mmap原理分析
如何在 Linux 中扩展/增加 LVM 大小
内存不足!该如何压缩pdf文件的大小呢
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
云直播
活动推荐
运营活动
广告
关闭
领券