linux下字符驱动模块的一般性步骤
来源:互联网 发布:.cn域名能用于商业吗? 编辑:程序博客网 时间:2024/06/05 20:45
这段时间学习字符设备的驱动模块程序,主要是借鉴书籍<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();
以上为个人看法,还得继续学习
- linux下字符驱动模块的一般性步骤
- linux下 驱动模块编译步骤
- 解决问题的一般性步骤
- 对linux下一般性文件系统的理解
- Linux字符驱动--模块编译
- linux下的SPI模块驱动使用
- oracle11g DG的一般性步骤
- Linux实现字符设备驱动的基础步骤
- linux下的字符设备驱动
- linux下的字符设备驱动
- Linux 内核模块编程的第一个字符设备驱动
- Linux内核模块编程-字符设备驱动
- 字符设备驱动基础篇2——用开发板来调试驱动模块的步骤
- 嵌入式Linux下3G模块的驱动和应用
- Linux下的ds18b20驱动(编译成模块)
- 如何编译一个linux下的驱动模块
- linux 下spi的使用 ,cc2500模块驱动
- linux下华为HSPA模块MU609的驱动问题
- 大家好
- C# 创建windows服务
- 让万能标签get 支持嵌套查询,小改动
- 学会使用Web Service
- 内存泄露的排查
- linux下字符驱动模块的一般性步骤
- 主流浏览器内核概览
- 喜剧否?
- CImage显示透明PNG
- java判断IP是否在某个网段中
- PHP 多语言网站解决方案
- 一些SQLite数据的说明
- 关于 难题 arm-none-symbianelf-ld 错误
- 一个 mysql server 上的小技巧