首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux dma设备驱动程序dma_request_channel失败

Linux dma设备驱动程序dma_request_channel失败
EN

Stack Overflow用户
提问于 2013-07-30 05:18:46
回答 1查看 1.9K关注 0票数 0

我正在尝试编写一个在嵌入式系统上与DMA接口的平台驱动程序。我们使用的是Zedboard和Xilinx的AXI DMA IP。然而,我相信我们的错误与Linux内核有关。

为了获得DMA的tx/rx通道,linux提供了dma_request_channel函数。此函数使用需要与DMA匹配的过滤器和过滤器参数。此函数获取系统中所有可用DMA的列表,并使用过滤器将其与我们想要的匹配。但是,这似乎不能获得所有可用的DMA,而只能获得一个。ARM内核自带PL330 hard IP DMA。这是它唯一能看到的。

内核代码如此复杂,以至于我被困在列表头文件here

谁能解释一下LIST_HEAD_INIT是做什么的?这是什么C语法?

我是否需要使硬件外围设备对操作系统可见?我认为设备树可以解决这个问题,我们已经将其包含在设备树中。我们也可以通过使用get_platform_resources应用编程接口来获取它的基地址。

EN

回答 1

Stack Overflow用户

发布于 2013-07-30 12:48:58

Could someone explain what LIST_HEAD_INIT does? What C syntax is that?

LIST_HEAD_INIT是在LIST_HEAD宏中初始化struct list_head成员的宏。

代码语言:javascript
复制
#define LIST_HEAD_INIT(name) { &(name), &(name) }

#define LIST_HEAD(name) \
          struct list_head name = LIST_HEAD_INIT(name) 

//Taken from scripts/kconfig/list.h    
struct list_head {
          struct list_head *next, *prev;
  };

这里的prev和next都是用同一个成员初始化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17934382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档