社区
Linux/Unix社区
帖子详情
设备文件节点是怎么回事,每次都需要手动创建吗?怎么让多个应用程序使用同一个驱动?
wzw409
2013-07-08 09:59:12
1.对于设备文件节点,驱动,应用程序之间的关系还是挺模糊。我现在做的流程是挂载驱动程序,根据设备号创建设备文件节点,然后运行该可执行文件,也就是测试程序比如./led_test。
2.现在我想这样不知怎么做。我让他自动挂载驱动程序,然后自动创建文件节点,有多个应用程序调用这个驱动程序。也就是说多个应用程序怎么和驱动、设备文件节点对应,怎么来自动创建设备文件节点。他们之间的通过什么联系起来,又怎么区分开的。
...全文
225
3
打赏
收藏
设备文件节点是怎么回事,每次都需要手动创建吗?怎么让多个应用程序使用同一个驱动?
1.对于设备文件节点,驱动,应用程序之间的关系还是挺模糊。我现在做的流程是挂载驱动程序,根据设备号创建设备文件节点,然后运行该可执行文件,也就是测试程序比如./led_test。 2.现在我想这样不知怎么做。我让他自动挂载驱动程序,然后自动创建文件节点,有多个应用程序调用这个驱动程序。也就是说多个应用程序怎么和驱动、设备文件节点对应,怎么来自动创建设备文件节点。他们之间的通过什么联系起来,又怎么区分开的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wzw409
2013-07-12
打赏
举报
回复
谢谢各位,这两天集中看了一下,大概了解了。实验了各种方法,终于弄出来了。
苍白了想念
2013-07-10
打赏
举报
回复
哎 确实概念模糊。同上,设备节点是在系统起来的时候自动创建的,系统会利用hotplug、udev、 mdev等程序建立各个驱动的节点。当然,你也可以手动创建用mknod。 应用程序,没有调用驱动程序这种概念,请区分开user space和kernel space,应用程序充其量只是将数据copy到kernel里面给对应的驱动去处理,然后内核驱动处理完之后将结果再copy到应用程序,这些通过节点。 当然像你这LED之类的东西,应该是通过GPIO或者寄存器之类的来操作的。
Carl_CCC
2013-07-08
打赏
举报
回复
现在的内核都可以自动创建节点了,你看看device_create这个函数。 自动加载驱动的话,你得在开机启动的时候加入相关语句。 节点和驱动是通过设备id来对应的,应用程序和设备节点是通过open设备文件来建立联系的。
字符
设备
驱动
程序自动
创建
设备
节点
详解
1、
设备
节点
介绍 (1)在linux中一切皆是
文件
,对上层程序来说
设备
驱动
程序不过就是
设备
文件
,在我们向内核注册好
驱动
程序后,
需要
创建
对应的
设备
节点
,然后上层
应用程序
通过读写
设备
节点
的方式去操作硬件; (2)
设备
节点
本质上就是
文件
,不是普通类型的
文件
,是字符
设备
文件
、块
设备
文件
、网络
设备
文件
等特殊
文件
,但是都是用统一的open、read等函数去操作; (3)
设备
节点
在"/dev/"目录下; 2、
手动
创建
设备
节点
(1)在
驱动
程序注册成功后,可以用mknod命令可以
手动
创建
设备
节点
; (2)比如:mkn
linux内核
驱动
---
创建
设备
节点
文件
Linux下生成
驱动
设备
节点
文件
的方法有3个:1、
手动
mknod;2、利用devfs;3、利用udev 在刚开始写Linux
设备
驱动
程序的时候,很多时候都是利用mknod命令
手动
创建
设备
节点
,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下
创建
相应
设备
节点
,并在卸载模块时删除该
节点
。在2.6.17以前,在/dev目录下生成
设备
文件
很容易devfs_mk_bdev
Linux
设备
节点
,
驱动
及
设备
Linux
设备
分成三种基本类型: 字符
设备
块
设备
网络
设备
设备
驱动
程序也分为对应的三类:字符
设备
驱动
程序、块
设备
驱动
程序和网络
设备
驱动
程序。 在Linux中,所有
设备
都以
文件
的形式存放在/dev目录下,都是通过
文件
的方式进行访问,
设备
节点
是Linux内核对
设备
的抽象,一个
设备
节点
就是一个
文件
。
应用程序
通过一组标准化的调用执行访问
设备
,这些调用独立于任何特定的
驱动
程序。而
驱动
程序负责将
Linux
设备
节点
、
设备
和
设备
驱动
Linux
设备
分成三种基本类型: 字符
设备
块
设备
网络
设备
设备
驱动
程序也分为对应的三类:字符
设备
驱动
程序、块
设备
驱动
程序和网络
设备
驱动
程序。
设备
节点
相当于硬盘的inode一样的东西,立面记录了硬件
设备
的位置和信息 在Linux中,所有
设备
都以
文件
的形式存放在/dev目录下,都是通过
文件
的方式进行访问,
设备
节点
是Linux内核对
设备
的抽象,一个
设备
节点
就是一个
文件
。
应用程序
通过一组
创建
设备
节点
(
文件
)
说过kobject
创建
的是sysfs
文件
系统(/sys/)下的目录,那么
设备
文件
节点
如何
创建
呢 提醒一点,udev是应用层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符
设备
驱动
为例,在
驱动
初始化的代码里调用class_create为该
设备
创建
一个class,再为每个
设备
调用device_create
创建
对应的
设备
。大致用法如下: struct class *...
Linux/Unix社区
23,114
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章