到目前为止,我一直在以内核可加载模块的形式编写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结构相关联.
总之,它们是不同的观点,它们不能互相替代.
总结以上是内存溢出为你收集整理的linux-kernel – 将现有的Linux设备结构与设备文件相关联全部内容,希望文章能够帮你解决linux-kernel – 将现有的Linux设备结构与设备文件相关联所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)