字符设备驱动--- 设备号 设备文件
来源:互联网 发布:sja1000 接收数据 编辑:程序博客网 时间:2024/06/09 13:44
字符设备驱动--- 设备号 设备文件
目录(?)[+]
设备号作用:
主设备号 用来标识与设备文件相连的驱动程序. 用来反映设备类型.
次设备号 被驱动程序用来辨别操作的是哪一个设备. 用来区分同类型的设备.
字符设备文件 和 字符设备驱动 如何建立起对应关系:
通过的是主设备号.
{ 解释:字符设备文件 对应了一个主设备号, 字符设备驱动也对应了一个主设备号,
当两个 主设备号 一样时,那么 这 字符设备文件 和 字符设备驱动 两者是匹配的,是对应的. }
字符设备文件 解释:
字符设备文件 本身没有太多的内容,通过 字符设备文件 能找到 字符设备驱动程序 ,
字符设备文件 能将 应用程序 的需求传递给 字符设备驱动程序.
主、次设备号:
内核中如何描述设备号:
使用的是 dev_t 这个类型,其实质是unsigned int 32 位整数,其中高 12 位为主设备号,
低 20 位 为 次设备号.
如何从 dev_t 中 分解出主、次设备号:
主设备号: MAJOR( dev_t dev ) , 次设备号 MINOR( dev_t dev ) .
如何分配主设备号:
Linux 内核可以采用 静态申请 和 动态申请 两种方法.
静态申请:
方法:
1,根据 Documentation/devices.txt ,确定一个没有使用的主设备号.
2,使用 register_ chrdev_region 函数注册设备号.
优点: 简单.
缺点:一旦驱动被广泛使用,这个随机选定的主设备号可能会导致设备号冲突,
而使驱动程序无法注册.
函数:int register_ chrdev_region ( dev_t from , unsigned count , const char * name )
要注册的设备号 要注册设备号的个数 设备名(体现在 /proc/devices)
动态分配:
方法:使用alloc_chrdev_region 分配设备号.
有点:易于推广.
缺点:无法在安装驱动前创建 设备文件 ( 因为安装前没有分配到 主设备号) .
解决办法:安装驱动后,从 /proc/devices 查询设备号.
函数:int alloc_chrdev_region ( dev_t *dev , unsigned baseminor , unsigned count , const char * name )
分配到的设备号 起始次设备号 要注册设备号的个数 设备名(体现在 /proc/devices)
注销设备号:
不论使用何种方法分配到的设备号,都应该在不使用它们时释放这些设备号.
函数: void unregister_chrdev_region ( dev_t from , unsigned count)
释放从from开始的 count 个设备号.
创建设备文件方法 - 2种:
1,使用 mknod 命令手工创建.
2,自动创建(驱动程序来实现).
mknod 用法:
mknod filename type major minor
设备文件名 设备文件类型 主设备号 次设备号
eg. mknod serial0 c 100 0 .
- 字符设备驱动--- 设备号 设备文件
- 字符设备驱动--- 设备号 设备文件
- 字符设备驱动基础知识(设备号-设备文件)
- linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析
- 字符设备驱动--- 设备操作
- 设备与驱动的关系以及设备号、设备文件
- 设备与驱动的关系以及设备号、设备文件
- 设备、设备文件和设备驱动
- 字符设备驱动高级篇3——自动创建字符设备驱动的设备文件
- 高级字符设备驱动-自动创建设备文件笔记
- 简单字符设备驱动和自动创建设备文件
- 简单字符设备驱动和自动创建设备文件
- Linux设备驱动之《字符设备驱动》
- 设备驱动之二----字符设备驱动
- linux 设备驱动笔记 - 字符设备驱动
- 字符设备驱动之I2C设备驱动
- Linux设备驱动之字符设备驱动
- Linux设备驱动之字符设备驱动
- 基于jfinal的开源blog
- android判定滑动方向
- 安装运行Apache,Mysql,php
- java 学习一—平台安装
- screen使用介绍
- 字符设备驱动--- 设备号 设备文件
- 购物的奥妙!!
- 【自考】数据库系统原理(三)——考后总结
- Android使用adb获得activity堆栈信息
- 17.PHP内核探索:解释器的执行过程
- Rabin-Miller素性测试算法
- 批处理--从1累加100的和
- ps-help.exe
- String two pointer swapping (合集)