gpt4 book ai didi

linux-kernel - 将现有的 Linux 设备结构与设备文件关联起来

转载 作者:行者123 更新时间:2023-12-02 02:03:50 28 4
gpt4 key购买 nike

我正在使用嵌入 Virtex4 FPGA(采用 Linux 内核 2.6.33)的 PowerPC 405 进行开发。

到目前为止,我一直在为 FPGA 中以内核可加载模块的形式实现的平台设备编写驱动程序。这些设备使用平面开放固件设备树文件进行注册。为了创 build 备文件,我使用 OF 函数获取设备节点,然后注册一个新的 miscdevice,然后它会自动注册次设备号并为我创 build 备文件。这还会创建一个嵌入到 miscdevice 中的 device(即 miscdevice.this_device)

问题是现在我需要执行 DMA 操作。我尝试使用 miscdevice.this_device 调用 dma_alloc_coherent() 函数,但该设备不与任何总线关联,并且始终返回错误。我做了一些挖掘,结果发现 struct of_device 还嵌入了一个 struct device(即 of_device.dev)。当我尝试将其与 dma_alloc_coherent() 一起使用时,效果很好。

现在我有两种不同的 struct device 结构,一种用于管理我的字符设备文件,另一种用于管理底层开放固件系统调用、总线和 DMA 事务。当然,这些设备在 sysfs 中并不相互关联。

我的问题是,是否可以以某种方式请求为我从 OF 层获得的 device 结构创 build 备文件,而不是使用 Misc Device API 创建新设备?这样,所有内容都将与单个 device 结构关联。

最佳答案

我认为您对 dma_alloc_coherent() 的修复是正确的。

但我不认为使用嵌入在结构 of_device 中的设备结构来替换您创建的miscdevice是不对的。 of_device 是开放固件数据库中对象的描述。并且根据Linux设备驱动模型,设备结构被嵌入到Linux内核的各种设备对象中。而且我认为您将 Miscdevice 注册为一种字符设备,应该有关联的 file_operations 结构。

总而言之,这是不同的观点,不能互相替代。

关于linux-kernel - 将现有的 Linux 设备结构与设备文件关联起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846550/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com