网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 设备驱动 > 文章  
深入浅出Linux设备驱动编程之引言
文章来源: 天极开发 文章作者: 宋宝华 发布时间: 2006-10-16   字体: [ ]  
 

  目前,Linux软件工程师大致可分为两个层次:

  (1)Linux应用软件工程师(Application Software Engineer):主要利用C库函数和Linux API进行应用软件的编写;
  (2)Linux固件工程师(Firmware Engineer):主要进行Bootloader、Linux的移植及Linux设备驱动程序的设计。

  一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux程序设计中比较复杂的部分,究其原因,主要包括如下几个方面:

  (1)设备驱动属于Linux内核的部分,编写Linux设备驱动需要有一定的Linux操作系统内核基础;
  (2)编写Linux设备驱动需要对硬件的原理有相当的了解,大多数情况下我们是针对一个特定的嵌入式硬件平台编写驱动的;
  (3)Linux设备驱动中广泛涉及到多进程并发的同步、互斥等控制,容易出现bug;
  (4)由于属于内核的一部分,Linux设备驱动的调试也相当复杂。

  目前,市面上的Linux设备驱动程序参考书籍非常稀缺,少有的经典是由Linux社区的三位领导者Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman编写的《Linux Device Drivers》(目前该书已经出版到第3版,中文译本由中国电力出版社出版)。该书将Linux设备驱动编写技术进行了较系统的展现,但是该书所列举实例的背景过于复杂,使得读者需要将过多的精力投放于对例子背景的理解上,很难完全集中精力于Linux驱动程序本身。往往需要将此书翻来覆去地研读许多遍,才能有较深的体会。


(《Linux Device Drivers》中英文版封面)

  本文将仍然秉承《Linux Device Drivers》一书以实例为主的风格,但是实例的背景将非常简单,以求使读者能将集中精力于Linux设备驱动本身,理解Linux内核模块、 Linux设备驱动的结构、Linux设备驱动中的并发控制等内容。另外,与《Linux Device Drivers》所不同的是,针对设备驱动的实例,本文还给出了用户态的程序来访问该设备,展现设备驱动的运行情况及用户态和内核态的交互。相信阅读完本文将为您领悟《Linux Device Drivers》一书中的内容打下很好的基础。

  本文中的例程除引用的以外皆由笔者亲自调试通过,主要基于的内核版本为Linux 2.4,例子要在其他内核上运行只需要做少量的修改。
构建本文例程运行平台的一个较好方法是:在Windows平台上安装VMWare虚拟机,并在VMWare虚拟机上安装Red Hat。注意安装的过程中应该选中"开发工具"和"内核开发"二项(如果本文的例程要在特定的嵌入式系统中运行,还应安装相应的交叉编译器,并包含相应的 Linux源代码),如下图:

点击放大此图片

--
原文链接: http://dev.yesky.com/87/2618087.shtml

 
推荐文章
·让arm-linux支持普通USB摄像头
·Linux设备驱动编程之结构化设备
·Linux设备驱动编程之复杂设备驱
·深入浅出Linux设备驱动之并发控
·深入浅出Linux设备驱动之字符设
·深入浅出Linux设备驱动编程之内
·Linux设备驱动编程之定时器
·Linux设备驱动编程之中断处理
·Linux设备驱动编程之异步通知
·Linux设备驱动编程之阻塞与非阻
·Linux设备驱动编程之内存与I/O操
·摄像头(WebCam)在Linux操作系
·中星微芯片(301,302)USB 摄像头
·Linux的I2C驱动架构
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·摄像头(WebCam)在Linu
·在Linux中使用中星微301
·中星微芯片(301,302)USB
·Linux设备驱动编程之内
·深入浅出Linux设备驱动
·Linux培训园地:Linux下
·Linux的I2C驱动架构
·让arm-linux支持普通USB
相关文章
·深入浅出Linux设备驱动
·Linux设备驱动编程之定
·深入浅出Linux设备驱动
·Linux设备驱动编程之中
·Linux设备驱动编程之异
·深入浅出Linux设备驱动
·Linux设备驱动编程之阻
·Linux设备驱动编程之内
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统