Linux 字符设备驱动

来源:互联网 发布:代码高亮 源码 编辑:程序博客网 时间:2024/05/16 05:38

一)字符设备驱动程序框架

 字符设备都有主设备号和次设备号,主设备用于标识属于哪类设备,次设备号表示该类设备的序号;比如一个系统有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

 

0 0
原创粉丝点击