您的位置:首页 > 运维架构 > Linux

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: