加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 22:54:54 所属栏目:Linux 来源:网络整理
导读:我正在使用嵌入在具有 Linux内核2.6.33的Virtex4 FPGA中的PowerPC 405进行开发. 到目前为止,我一直在以内核可加载模块的形式编写FPGA中实现的平台设备的驱动程序.使用平面Open Firmware Device Tree文件注册设备.要创建设备文件,我使用OF函数获取设备节点,然
我正在使用嵌入在具有 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结构相关联.

总之,它们是不同的观点,它们不能互相替代.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读