所谓设备驱动程序就是控制与管理硬件设备收发的软件,它是应用程序与硬件设备沟通的桥梁。从本质上讲设备驱动程序主要负责硬件设备的数据读写、参数配置与中断配置。

设备驱动程序时操作系统的一部分,通常运行在内核层。应用层通过系统调用进入内核层,内核层根据系统调用号来调用驱动程序对应的接口函数。图1-1说明了Linux驱动程序的运行原理。
Linux中的大部分驱动程序,是以内核模块的形式编写的。内核模块是Linux内核向外部提供的一个接口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM)。Linux内核本身是一个单内核(monolithic kernel),具有效率高的优点,也具有可扩展性和可维护性差的缺陷。模块机制就是为了弥补这一缺陷而设计的。内核模块可以被单独编译,它在运行时被链接到内核,作为内核的一部分在内核空间运行。要让内核支持可加载模块,需要配置内核的【Enable loadable module support】选项,如图1-2所示。
 
图1-2  在内核中增加可加载模块支持

Linux设备驱动程序概念相关推荐

  1. 目前最全面深入的Linux设备驱动程序著作

    <精通Linux驱动程序开发(英文版)> 在Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍.随着各种新技术的广泛应用,内核中新的设 ...

  2. 《Linux设备驱动程序》学习2—高级字符设备驱动ioctl

    今天进入<Linux设备驱动程序>第六章高级字符设备驱动程序操作的学习,学习的过程和简单字符设备驱动程序的学习是一样的,看书,看程序,然后就是看Tek的博客笔记.依然tek的博客中对于这一 ...

  3. c#获取当前时间 毫秒_《Linux设备驱动程序》(十二)——时间操作(一)

    之前我们学会了如何编写一个字符设备,并对其中的一些重要操作进行了说明.对于一个完整的设备而已,可能还有许多工作要做. 本节我们将要说一下内核中是如何对时间问题进行操作的. 本节主要涉及到以下内容: 内 ...

  4. eq linux_《Linux设备驱动程序》(十二)——时间操作(一)

    之前我们学会了如何编写一个字符设备,并对其中的一些重要操作进行了说明.对于一个完整的设备而已,可能还有许多工作要做. 本节我们将要说一下内核中是如何对时间问题进行操作的. 本节主要涉及到以下内容: 内 ...

  5. c++ helloworld_《Linux设备驱动程序》(二)——Hello World

    Hello World是许多人开始写代码的时候第一个编写的例子,这里也延续传统,从Hello World开始. Hello World! 本节主要学会以下内容: 了解模块相关的内容:模块概念.模块编译 ...

  6. linux 内核 ide,Linux设备驱动程序学习(7)-内核的数据类型

    Linux设备驱动程序学习(7)-内核的数据类型 由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了.要点如下: 将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正 ...

  7. linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...

    Linux设备驱动程序学习(6) -高级字符驱动程序操作[(3)设备文件的访问控制] 提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的.这部分的内容只是在open和release方法上做些修 ...

  8. Linux设备驱动程序

    第一章 设备驱动程序简介   设备驱动程序在Linux内核中扮演着特殊的角色.它们是一个个独立的"黑盒子",使某个特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工 ...

  9. Linux 设备驱动程序(三)

    系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序( ...

最新文章

  1. 收藏 | 15个CNN关键回答集锦,2019校招面试必备!
  2. FFmpeg常用基本命令
  3. nginx看最大并发量_Nginx高并发配置思路(轻松应对1万并发量)
  4. java socket通信demo_Java Socket通信示例
  5. JaveWeb中实现分页的总结
  6. resultMap1_自定义结果映射规则
  7. 数据结构与算法分析(十)——母牛的故事
  8. visual studio能统计代码规模吗_Windows电脑游戏运行库有必要装吗?
  9. CCF201909-5 城市规划【树形DP】(100分题解链接)
  10. 【POJ3349】Snowflake Snow Snowflakes(哈希表判重,维护一个集合)
  11. [转载] Python简介、linux上Python及其IDE的安装和详细配置
  12. MySQL使用规范手册,程序员必知必会
  13. Windows BAT中7zip压缩时排除某些目录
  14. java毕业设计HTML5旅游网站源码+系统+数据库+lw文档+调试运行
  15. 通信原理电子版_2020兰州大学通信工程考研(电子信息)经验分享
  16. 【excel】开启了循环引用怎么关闭
  17. Unity 2019.3现已发布
  18. excel怎么调用c语言程序设计,知识:Excel使用C语言进行读写,代码简单易懂
  19. Python编写的srt文件时间轴和编号整理程序
  20. poi实现的excel模板数据填充

热门文章

  1. boost::mpl::filter_view模块实现日历相关的测试程序
  2. boost::hana::arg用法的测试程序
  3. Boost : to_string_stub用法的测试程序
  4. GDCM:读取和打印DICOM的属性的测试程序
  5. boost::callable_traits添加成员指针的测试程序
  6. Boost:std ::bind与Boost的_1绑定的测试程序
  7. ITK:创建一个索引
  8. DCMTK:查询/检索服务类用户(C-GET操作)
  9. VTK:图表之SelectedVerticesAndEdgesObserver
  10. VTK:图表之EdgeListIterator