【Linux 驱动】第一章 设备驱动程序简介

一,设备驱动程序的作用

        最显著的作用,是可以使计算机和设备通信,充当硬件的接口。操作系统只能通过这个接口来控制设备。

        二是书中说的驱动在于提供机制,而不是策略,个人觉得这应该是我们编写驱动程序遵循的一个原则。机制--需要提供什么功能 ,策略--如何使用这些功能。由于不同的环境需要不同的方式来使用硬件,因此应尽可能做到让驱动程序不带策略

       驱动程序在用户态和内核态之间传递数据

       驱动程序是内核的一部分,可以使用中断、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文件查看到。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux设备驱动程序 第三版》是一本针对Linux设备驱动程序开发的专业书籍。该书详细介绍了Linux下常见的设备驱动程序开发技术,包括字符设备、块设备网络设备等方面。这本书主要面向Linux系统内核开发领域的工程师、软件开发人员、嵌入式系统开发者和设备驱动程序编写者等,也适合对Linux设备驱动程序开发感兴趣的读者使用。 《Linux设备驱动程序 第三版》共分为14章,涵盖了设备驱动的基本知识、字符设备驱动程序、块设备驱动程序、内存映射、中断、高级字符驱动程序、USB驱动程序、串行通讯、网络接口卡驱动程序、媒体网关控制协议、显示屏驱动程序、电源管理、高级块驱动程序等方面。每一章的内容非常详细,涵盖了理论知识和例子,并且还提供了配套的示例代码,方便读者进行实践操作。 这本书的重点在于教授读者如何使用Linux内核框架编写驱动程序,如何开发Linux设备驱动程序,以及如何与设备进行交互。同时,还详细介绍了内核数据结构和编程规范、编译驱动程序等技术,使读者更加深入了解Linux设备驱动程序的开发过程。 总之,《Linux设备驱动程序 第三版》是一本非常优秀的Linux设备驱动程序开发教程,书中内容涵盖面广,基本知识详细介绍,适合初学者和进阶者使用。读者通过学习本书,可以更好地掌握Linux设备驱动程序的开发技术,提高自身的技术水平。 ### 回答2: 《Linux设备驱动程序》第三版PDF,是一本深入介绍Linux驱动程序开发的经典著作之一。本书主要介绍了Linux设备驱动程序的编写和调试方法,以及Linux内核的一些基本特性。 本书首先介绍了Linux内核框架和设备驱动模型,包括字符设备、块设备网络接口设备等。接着,本书深入分析了设备驱动程序的结构和实现,详细介绍了内核的I/O系统、中断处理、定时器、内存管理、锁等基本特性,以及与硬件相关的总线、中断控制器、DMA等。此外,本书还介绍了如何使用ioctl和procfs接口,以及注册和使用内核模块等典型应用场景。 总体来说,这本书深入浅出,详细介绍了Linux设备驱动程序的开发与调试方法,为读者提供了全面了解内核驱动开发的实战指南,是Linux驱动程序开发者必不可少的参考读物。 ### 回答3: 《Linux设备驱动程序 第三版 pdf》是一本介绍Linux设备驱动程序方面的经典教材,其内容包括了Linux设备驱动程序的开发、编写以及调试等相关知识。这本教材适合那些想要理解和开发嵌入式操作系统设备驱动程序的程序员和工程师们。 该教材主要分为三部分,第一部分介绍了驱动程序的基础知识,包括设备文件、设备驱动程序机制、字符设备以及模块加载和卸载等内容;第二部分则介绍了高级设备驱动程序的开发,如块设备网络设备以及USB设备驱动程序等;最后一部分则介绍了调试和测试驱动程序的方法和工具。 该教材有以下几个亮点:一是该教材的内容严谨,通俗易懂;二是该教材使用的代码清晰简单,易于理解和实践;三是该教材不仅仅局限于硬件设备驱动,还涉及了Linux内核模块的编写、网络驱动的开发等内容。同时,该教材也提供了大量的实例代码和案例,可以帮助读者更好地理解和掌握Linux设备驱动程序的开发和调试。 总之,《Linux设备驱动程序 第三版 pdf》是一本非常优秀的Linux设备驱动程序教材,不仅适合于嵌入式开发工程师,也适合于Linux内核爱好者学习和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值