linux下字符驱动模块的一般性步骤

这段时间学习字符设备的驱动模块程序,主要是借鉴书籍<linux驱动开发详解>及网络资源,在此,我依据个人的理解,

对现在自己所理解的进行小结。

 

整体出发一点,应用程序和vfs之间的接口是系统调用,而VFS与磁盘文件系统及普通设备之间的接口是file_operations

结构体成员函数,这个接口体包含对文件进行打开、关闭、读写、控制的一系列成员函数。

由于字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了,即file_operations

正是字符设备驱动的核心。

 

在linux2.6内核中我们使用cdev结构体来描述字符设备,此结构体对于设备的重要信息有包含。

 

编写设备驱动模块加载时步骤为:

1、自定义字符设备结构体变量,或用函数struct cdev *cdev_alloc(void)申请;

2、向内核申请设备号,可以是静态:register_chrdev_region(),或动态的alloc_chrdev_region();

3、初始化cdev结构体,此函数是为了将file_operation结构体成员函数与字符设备描述的结构体cdev进行相连接;

4、向内核注册字符设备,调用函数cdev_add();

在对字符设备的使用时,肯定有些会涉及到资源的共享及并发控制等问题,这些都是在相应的file_operations函数成员中

进行相关的处理的,但是整体的设备驱动模块加载里面涉及的步骤是上面这样的;

 

编写设备驱动模块卸载时步骤为:

1、注销设备,cdev_del();

2、释放内存(如果使用到);

3、释放设备号,unregister_chrdev_region();

 

 

以上为个人看法,还得继续学习

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值