字符驱动设计文档

 

在linux2.6内核中,使用cdev结构体描述一个字符设备

Linux用户程序通过设备文件(设备节点)来使驱动操作字符设备。

设备文件在啊?字符设备通过字符设备文件来存取。字符设备文件通过主设备号与驱动建立联系。

二、创建设备文件

1、使用mknod命令手工创建

2、自动创建

命令:mknod filename type major minor

mknod serial c 100 1

三、三种重要的数据结构

struct file

struct file_operations

struct inode

struct file结构代表一个打开的文件(系统中每个打开的文件在内核空间中都有一个对应的file结构)它由内核在open时创建,并传递给在该文件进行操作的所有函数,直到最后的close函数。

loff_t  f_ops/*文件读写位置*/

struct file_operations *f_op/*与文件相关的操作*/

struct inode 用来记录文件的物理信息。一个文件可以对应多个file结构,但只有一个inode结构。

四、设备注册

字符设备注册分3个步骤:

1、          分配cdev:cdev_alloc()函数实现

2、          初始化cdev:cdev_init()函数

3、          添加cdev: cdev_add()函数

 

struct cdev{

struct kobject kobj;      /*内嵌的kobject对象*/

struct module *owner;

struct file_ operations *ops;

struct list_head list;

dev_t dev;

unsigned int count;

};

void cdev_init(struct cdev *cdev,struct file_operations *fops);

cdev:待初始化的cdev结构。

fops:设备对应的操作。

int cdev_add(struct cdev *dev,dev_t num,unsigned int count);

dev:待添加到内核的字符设备结构

num:设备号

count:添加的设备个数  

工程师通常习惯为设备定义一个设备相关的结构体,其包含所涉及的cdev,私有数据及信号量等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值