Linux 字符设备驱动
2016-01-27 14:23
309 查看
一)字符设备驱动程序框架
字符设备都有主设备号和次设备号,主设备用于标识属于哪类设备,次设备号表示该类设备的序号;比如一个系统有2个同样的设备,那么它俩的主设备号是一样的,只是次设备号不一样
设备号有 typedef u_long dev_t来表示,对应32位机器,高12位表示主设备号,低20位表示次设备号
通过命令 cat /proc/devices可以查看设备号
向系统申请字符设备号:通过register_chrdev_region来注册设备号,但是设备号有可能会冲突,可以先通过alloc_chrdev_region来申请;通过unregister_chrdev_region来释放。
二)cdev
在Linux使用cdev来表示字符设备
cdev,inode的关系:cdev是inode的一个成员,当应用打开设备文件A,系统会产生一个inode结点,通过inode结点的i_cdev字段找到cdev字符结构体,在通过cdev的操作函数ops来操作设备。
file_operations是对设备进行操作的函数指针集合
三)字符设备驱动的组成
1、字符设备的加载函数和卸载函数:xxx_init和xxx_exit
2、file_operations主要函数的实现
四)驱动程序与应用程序之间的数据交换
有这么几个方法可以进行数据的交互,copy_to_user、copy_from_user、put_user、ge_user
字符设备都有主设备号和次设备号,主设备用于标识属于哪类设备,次设备号表示该类设备的序号;比如一个系统有2个同样的设备,那么它俩的主设备号是一样的,只是次设备号不一样
设备号有 typedef u_long dev_t来表示,对应32位机器,高12位表示主设备号,低20位表示次设备号
通过命令 cat /proc/devices可以查看设备号
向系统申请字符设备号:通过register_chrdev_region来注册设备号,但是设备号有可能会冲突,可以先通过alloc_chrdev_region来申请;通过unregister_chrdev_region来释放。
二)cdev
在Linux使用cdev来表示字符设备
cdev,inode的关系:cdev是inode的一个成员,当应用打开设备文件A,系统会产生一个inode结点,通过inode结点的i_cdev字段找到cdev字符结构体,在通过cdev的操作函数ops来操作设备。
file_operations是对设备进行操作的函数指针集合
三)字符设备驱动的组成
1、字符设备的加载函数和卸载函数:xxx_init和xxx_exit
2、file_operations主要函数的实现
四)驱动程序与应用程序之间的数据交换
有这么几个方法可以进行数据的交互,copy_to_user、copy_from_user、put_user、ge_user
相关文章推荐
- Linux ALSA 声卡驱动之七:ASoc中的Codec
- boa移植
- 解读Linux安全机制之栈溢出保护
- linux重新启动错误 could not update ICEauthority file
- linux note
- DNS服务器(Centos 7):bind安装&配置
- centos6.6安装pypy
- 在linux中用C语言实现ping命令
- Linux上新建用户及赋权操作
- linux之device_init()
- 20条Linux命令面试问答
- 学习Express之部署express-demo
- Linux系统内存磁盘初始化技术详细解析
- Linux动态库的导出控制
- linux下iptables详细配置
- linux常用命令2
- Linux配置系统
- Linux文件类型
- linux中elif的用法
- linux如何给镜像单独挂载一个盘