设备驱动程序是进入Linux内核世界的大门。
设备驱动程序使某个特定硬件响应一个定义良好的内部编程接口。用户的操作通过一组标准化的调用执行,而这些调用独立与特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。
1. 设备驱动程序的作用
机制:需要提供什么功能;
策略:如何使用这些功能;
在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时不要给用户强加任何特定策略。
驱动程序设计还要综合考虑下面三个方面的因素:提供给用户尽量多的选项、编写驱动程序所占用的时间以及尽量保持程序简单而不至于错误丛生。
2. 内核功能划分
进程管理;
内存管理;
文件系统;
设备控制;
网络功能;
3. 设备和模块的分类
字符设备:块设备:网络设备;
Linux系统将设备分成三种基本类型,每个模块通常实现为其中某一类:字符模块、快模块或网络模块。
除了设备驱动程序外,内核中其他一些功能(不管是硬件还是软件功能)也都模块化了。如一个文件类型决定了如何在块设备上组织数据,以表示目录和文件形成的树,文件系统类型是一个软件驱动程序,它将底层数据结构映射到高层数据结构,决定文件名可以有多长以及在目录项中存储文件的哪些信息等等。
4. 安全问题
驱动程序应当尽量避免在代码中实现安全策略。
驱动程序编写者还应当避免由于自身原因引入安全方面的缺陷。
5. 版本编号
对内核来讲,偶数编号的内核版本使用于正式发行的稳定版本,而奇数编号的版本则是开发过程中的一个快照,它将很快被下一开发版本更新。
6. 许可证条款
Linux遵循GNU通用公共许可证(Generl Public License,GPL)版本2发布。
7. 加入内核开发社团
http://www.tux.org/lkml
8. 本书概要
设备驱动程序使某个特定硬件响应一个定义良好的内部编程接口。用户的操作通过一组标准化的调用执行,而这些调用独立与特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。
1. 设备驱动程序的作用
机制:需要提供什么功能;
策略:如何使用这些功能;
在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时不要给用户强加任何特定策略。
驱动程序设计还要综合考虑下面三个方面的因素:提供给用户尽量多的选项、编写驱动程序所占用的时间以及尽量保持程序简单而不至于错误丛生。
2. 内核功能划分
进程管理;
内存管理;
文件系统;
设备控制;
网络功能;
3. 设备和模块的分类
字符设备:块设备:网络设备;
Linux系统将设备分成三种基本类型,每个模块通常实现为其中某一类:字符模块、快模块或网络模块。
除了设备驱动程序外,内核中其他一些功能(不管是硬件还是软件功能)也都模块化了。如一个文件类型决定了如何在块设备上组织数据,以表示目录和文件形成的树,文件系统类型是一个软件驱动程序,它将底层数据结构映射到高层数据结构,决定文件名可以有多长以及在目录项中存储文件的哪些信息等等。
4. 安全问题
驱动程序应当尽量避免在代码中实现安全策略。
驱动程序编写者还应当避免由于自身原因引入安全方面的缺陷。
5. 版本编号
对内核来讲,偶数编号的内核版本使用于正式发行的稳定版本,而奇数编号的版本则是开发过程中的一个快照,它将很快被下一开发版本更新。
6. 许可证条款
Linux遵循GNU通用公共许可证(Generl Public License,GPL)版本2发布。
7. 加入内核开发社团
http://www.tux.org/lkml
8. 本书概要