一,设备驱动程序的作用
最显著的作用,是可以使计算机和设备通信,充当硬件的接口。操作系统只能通过这个接口来控制设备。
二是书中说的驱动在于提供机制,而不是策略,个人觉得这应该是我们编写驱动程序遵循的一个原则。机制--需要提供什么功能,策略--如何使用这些功能。由于不同的环境需要不同的方式来使用硬件,因此应尽可能做到让驱动程序不带策略
驱动程序在用户态和内核态之间传递数据
驱动程序是内核的一部分,可以使用中断、DMA等操作
二,内核功能划分
进程管理:创建和销毁进程,处理他们与外部世界之间的连接
内存管理:在有限的可用资源之上为每个进车功能创建一个虚拟地址空间
文件系统:
设备控制:所有设备控制操作都由与控制设备相关的代码完成
网络功能
上面内核的每一部分都和我们编写具体的驱动程序相关,以后再学习中会慢慢涉及到每一部分。
三,可装载模块
linux提供了模块机制以便我们进行驱动开发。
insmod:将模块连接到正在运行的内核
rmmod :移除连接
四,设备和模块的分类
linux设备分类一般分为三类:字符设备,块设备,网络接口。
1)字符设备:所有能够象字节流一样访问的设备都通过字符设备实现它们被映射为文件系统中的节点,通常在/dev/目录下
2)块设备:通常是指诸如磁盘、内存、Flash等可以容纳文件系统的存储设备块设备也是通过文件系统访问,与字符设备的区别:内核管理数据的方式不同它允许象字符设备一样以字节流的方式来访问,也可一次传递任意多的字节。
3)网络接口设备:通常它指的是硬件设备,但有时也可能是一个软件设备(如回环接loopback),它们由内核中网络子系统驱动,负责发送和接收数据包。它们的数据传送往往不是面向流的,因此很难将它们映射到一个文件系统的节点上。
一般要包含open read write close等系统调用的实现
但是我们要知道一个复杂设备可能会涉及到linux驱动的很多子系统,比如usb的蓝牙键盘,会涉及到usb子系统,蓝牙协议栈,input子系统,所以这个设备从不同的角度看在linux内核中属于不同的子系统,所以这三个分类只是一个很简单概括的分类,我们也不必遵循这三个分类。
五,安全问题 & 版本编号 & 许可证条款
1) 主要是:缓存区溢出,数据泄漏,后门程序等等安全问题
2)内核版本编号,一般偶数版本的编号是正式发行的稳定版本,而奇数编号的版本是出于开发期的版本,然后书中提到:遇到任何版本相关问题,可以查看Documentation/Changes文件,于是我用友善提供的2.6.29内核看了下该文件,都是一些utils的使用以及编译本版本内核需要的一系列工具的版本要求以及下载链接。所以当内核编译出错可以从该文件看看。
3)许可证条款,这个问题大概就是说我们写的内核模块应该遵行GPL2发布,这样的话内核开发者就会知道我们写的内核模块的源码,这样如果内核代码在更新的时候不至于我们写的内核模块出现内核版本间不兼容的情况,所以我们都最好以GPL2这种许可证发布。
并且该许可证原文可以从内核顶层目录的COPYING文件查看到。
分享到:
相关推荐
Linux设备驱动程序是操作系统与硬件设备之间的通信中介,负责管理硬件设备与Linux内核间的...以上就是《Linux设备驱动第三版》的主要内容,通过这些章节的介绍,读者可以全面地学习Linux设备驱动程序的开发流程和技巧。
《Linux设备驱动程序3》是Linux内核编程领域的一本权威著作,主要涵盖了与设备驱动相关的各种技术。这本书的英文版提供了更为准确的信息,避免了中文翻译可能存在的误解。以下是对压缩包中各个章节主要内容的详细...
【Linux设备驱动程序开发】 Linux设备驱动程序是操作系统与硬件设备之间的重要桥梁,它们使得操作系统能够管理和控制硬件设备,执行各种操作。设备驱动程序作为内核的一部分,它们工作在高优先级环境中,任何错误都...
《Linux设备驱动程序开发》第四版是一本深入探讨这一主题的经典著作,作者通过源码分析和实践指导,帮助读者理解并掌握设备驱动的编写技巧。 在Linux系统中,设备被分为字符设备、块设备和网络设备等不同类型,每种...
##### 第一章:设备驱动简介 - **1.1. 驱动程序的角色** - **解释**: 驱动程序是连接硬件和操作系统之间的桥梁,它负责处理来自硬件的输入并将之转换为操作系统可以理解的形式。这一章节介绍了驱动程序的基本功能、...
第一章 设备驱动程序简介 设备驱动程序的作用 内核功能划分 设备和模块的分类 安全问题 版本编号 许可证条款 加入内核开发社团 本书概要 第二章 构造和运行模块 设置测试系统 Hello World模块 核心模块...
第一章 设备驱动程序简介 设备驱动程序的作用 内核功能划分 设备和模块的分类 安全问题 版本编号 许可证条款 加入内核开发社团 本书概要 ch02.第二章 构造和运行模块 设置测试系统 Hello world模块 核心模块与应用...
设备驱动程序可以理解为操作系统内核的一部分,为特定硬件提供服务。例如,网卡、声卡、键盘、鼠标、显卡等设备都需要各自的驱动程序才能正常工作。Linux内核并不直接包含所有硬件设备的驱动,而是通过开放的接口...
本书第一部分着重于从软件角度学习如何编写和测试设备驱动程序,而第二部分则深入到块设备驱动程序、网络接口以及更复杂的主题。即便读者的最终目标不是编写内核代码,这些知识对于理解系统的工作原理也是非常有价值...
《Linux设备驱动程序》第三版是一本深入探讨Linux内核设备驱动编程的权威书籍,它为读者提供了详尽的理论知识和丰富的实践案例。这本书涵盖了Linux系统中的各种设备驱动开发技术,包括字符设备、块设备、网络设备、...
Linux设备驱动程序是操作系统与...设备驱动程序的设计和实现需要深入理解硬件工作原理、内核接口以及并发控制机制,因此,对于开发者来说,掌握Linux设备驱动程序的开发是一项高级技能,同时也是一项高回报的技术挑战。
嵌入式Linux设备驱动程序开发 本章节主要介绍了嵌入式Linux设备驱动程序开发的相关知识点,涵盖设备驱动程序开发流程、模块化的驱动程序设计方式、字符设备驱动demo源程序分析、LED驱动程序开发实例、键盘驱动程序...
Linux设备驱动程序中文版第三版指导你如何编写你自己的驱动, 以及如何利用内核相关的部分. 我们采用一种设备-独立的方法; 编程技术和接口, 在任何可能的时候, 不会捆绑到任何特定的设备. 每一个驱动都是不同的; 作为...
Chap21可能代表第二十一章的内容,这通常在一本关于Linux驱动开发的书中,可能会详细讲解某个特定主题,例如串口驱动、块设备驱动或网络设备驱动。串口驱动涉及到UART(通用异步接收/发送器)的配置和数据传输,块...