linux-kernel – 将现有的Linux设备结构与设备文件相关联
我正在使用嵌入在具有
Linux内核2.6.33的Virtex4 FPGA中的PowerPC 405进行开发.
到目前为止,我一直在以内核可加载模块的形式编写FPGA中实现的平台设备的驱动程序.使用平面Open Firmware Device Tree文件注册设备.要创建设备文件,我使用OF函数获取设备节点,然后注册一个新的miscdevice,然后自动注册一个次设备号并为我创建设备文件.这也会创建一个嵌入miscdevice的设备(即miscdevice.this_device) 问题是现在我需要执行DMA操作.我尝试使用miscdevice.this_device调用dma_alloc_coherent()函数,但此设备未与任何总线关联并始终返回错误.我做了一些挖掘,结果发现struct_device还有一个嵌入在其中的结构设备(即of_device.dev).当我尝试使用dma_alloc_coherent()时,它运行得很好. 所以现在我有两种不同的结构设备结构,一种用于管理我的角色设备文件,另一种用于管理底层的Open Firmware系统调用,总线和DMA事务.当然,这些设备在sysfs中并不相互关联. 我的问题是,是否有可能以某种方式请求为我从OF层获得的设备结构创建设备文件而不是使用Misc设备API创建新设备?这样一切都将与单个设备结构相关联. 解决方法
我认为你对dma_alloc_coherent()的修正是正确的.
但我不认为使用嵌入在结构of_device中的设备结构来替换您创建的miscdevice是不对的. of_device是Open Firmware数据库中对象的描述.并且根据Linux设备驱动程序模型,设备结构嵌入在Linux内核中的各种设备对象中.我认为你将miscdevice注册为一个字符设备,应该有file_operations结构相关联. 总之,它们是不同的观点,它们不能互相替代. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |