`

Linux设备驱动的相关概念

阅读更多

      通常对于一个给定的硬件平台电路板,它的设备寄存器或内存的物理地址就是确定的了,或者是相对确定的了(它们具有自己的IO地址空间)。但对于向 Linux这样的操作系统,驱动程序是不能直接访问设备的物理地址的,它必须把设备的物理地址映射到Linux内核的虚拟地址空间,这样驱动程序才能通过 虚拟地址操作设备。 Linux里将IO资源分成不同的类型,如IO(Port)、MEM、IRQ、DMA,同时内核提供了IO Resource的操作函数,用于分配、请求、释放IO资源。

 

linux驱动中与设备相关的代码(以S3C2410为例)主要在include/asm/asm-arm/s3c2410和arch/arm/smdk2410中,前者是一些头文件,完成I/O的内存映射和寄存器地址的宏定义,后者的作用是将设备加入到系统中(add_devices函数),而后由驱动程序完成设备的注册和对硬件寄存器的操作,这样的设计有利于移植

 

编写驱动程序的一些基本概念

 无论是什么操作系统的驱动程序,都有一些通用的概念。操作系统提供给驱动程序的支持也大致相同。


1. 发送和接收  
  这是一个网络设备最基本的功能。一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统你的发送函数在哪里,系统在有数据要发送时就会调用你的发送程序。还有驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到最先能得到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理然后送给系统。这里,操作系统必须要提供两个机制,一个是找到驱动程序的发送函数,一个是驱动程序把收到的数据送给系统。是驱动程序把收到的数据送给系统。 
  
2. 中断 
   中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程序响应中断的能力。一般是把一个中断处理程序注册到系统中去。操作系统在硬件中断发生后调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。 
  

3. 时钟  
    在实现驱动程序时,很多地方会用到时钟。如某些协议里的超时处理,没有中断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。一般是在预定的时间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等。 

分享到:
评论

相关推荐

    深入Linux设备驱动程序内核机制.pdf

    内容概要 本文深入探讨了Linux设备驱动程序的内核机制,并提供了...深入了解Linux设备驱动程序的相关知识和概念; 阅读Linux内核文档和相关书籍,进一步扩展知识面; 对比和学习其他类型的设备驱动程序,拓宽应用领域。

    linux设备驱动编写注意和手册

    编写linux设备驱动常用函数,需要知道的概念。

    精通linux设备驱动程序开发

    《精通Linux设备驱动程序开发》是Linux设备驱动程序开发领域的权威著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深人探讨了其他书没有涵盖或浅尝辄止的许多重要主题和关键难点,如PCMCIA、I2C和USB等...

    \精通Linux设备驱动程序开发

    《精通Linux设备驱动程序开发》是Linux设备驱动程序开发领域的权威著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深人探讨了其他书没有涵盖或浅尝辄止的许多重要主题和关键难点,如PCMCIA、I2C和USB等...

    精通LINUX设备驱动程序开发

     第16章 Linux无线设备驱动   第17章 存储技术设备   第18章 嵌入式Linux   第19章 用户空间的驱动程序   第20章 其他设备和驱动程序   第21章 调试设备驱动程序   第22章 维护与发布   第23...

    精通Linux设备驱动程序开发

    第16章 Linux无线设备驱动 第17章 存储技术设备 第18章 嵌入式Linux 第19章 用户空间的驱动程序 第20章 其他设备和驱动程序 第21章 调试设备驱动程序 第22章 维护与发布 第23章 结束语 附录A Linux汇编 ...

    Linux设备驱动程序开发基础

    Linux的设备驱动程序开发是嵌入开发中一个有难度的领域,要求开发人员有...介绍嵌入式Linux驱动开发相关概念及开发流程,了解驱动涉及到的关键技术点,并重点学习字符设备驱动开发,为后期课程深入学习驱动开发打好基础

    linux设备驱动中断.doc

    讲述Linux设备驱动中断的过程,中断概念:这就不多说了。 中断的分类: 1)根据中断来源分为:内部中断和外部中断。内部中断来源于CPU内部(软中断指令、溢出、语法错误等),外部中断来自CPU外部,由设备提出请求。...

    Linux设备驱动之HID驱动

    这里的人机交互设备是一个宏观上面的概念,任何设备,只要符合HID spec,都可以称之为HID 设备.常见的HID 设备有鼠标键盘,游戏操纵杆等等.在接下来的代码分析中,可以参考HID 的spec.这份spec 可以在www.usb.org 上找到....

    LINUX设备驱动程序(第3版)书和源码

    Linux设备驱动程序中文版第三版指导你如何编写你自己的驱动, 以及如何利用内核相关的部分. 我们采用一种设备-独立的方法; 编程技术和接口, 在任何可能的时候, 不会捆绑到任何特定的设备. 每一个驱动都是不同的; 作为...

    Linux设备驱动程序内核-Linux系统开发

    在linux庞大的源码树中,设备驱动程序部分的代码已经占了相当大的比例,现实的工作中,大量的采用linux系统的平台需要设备驱动程序才能把linux的内核真正运行起来,...学习并掌握linux设备驱动程序的编写都是非常必要的

    linux设备驱动归纳总结

    十分适合linux驱动初学者,为今后Android驱动开发打下坚实的基础 (一):内核的相关基础概念 (二):模块的相关基础概念 (三):1_字符型设备之设备申请 (三):2_字符型设备的操作open、close、read、write ...

    linux设备驱动快速入门

    linux设备驱动快速入门,里面讲解了基本概念及设备驱动开发程序的基本流程,是一本初学者必看的书籍

    linux设备驱动模型--设备篇

    介绍linux设备驱动模型概念中的设备篇

    linux设备驱动模型

    介绍了Linux设备驱动模型的概念中的驱动篇

    嵌入式Linux设备驱动开发

    Linux设备驱动的基本概念 Linux设备驱动程序的基本功能 Linux设备驱动的运作过程 常见设备驱动接口函数 掌握字符设备驱动程序的编写 掌握键盘设备驱动程序的编写 了解块设备的编写流程

    linux设备驱动程序开发

    Linux驱动程序的概念、驱动结构、对中断和内存的处理、设备驱动的初始化 Linux下设备驱动程序开发框架和流程 Linux下模块化驱动程序设计(动态加载) 设备驱动加入Linux内核中 实验:编写驱动程序框架+测试用例...

Global site tag (gtag.js) - Google Analytics