1.引言

 1.引言.....................................................................................................................

目前,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 设备驱动本身,理解Linux 内核模块、Linux 设
备驱动的结构、Linux 设备驱动中的并发控制等内容。另外,与《Linux Device Drivers》所
不同的是,针对设备驱动的实例,本文还给出了用户态的程序来访问该设备,展现设备驱动
的运行情况及用户态和内核态的交互。相信阅读完本文将为您领悟《Linux Device Drivers》
一书中的内容打下很好的基础。
本文中的例程除引用的以外皆由笔者亲自调试通过,主要基于的内核版本为Linux 2.4,
例子要在其他内核上运行只需要做少量的修改。
构建本文例程运行平台的一个较好方法是:在 Windows 平台上安装VMWare 虚拟机,
并在VMWare 虚拟机上安装Red Hat。注意安装的过程中应该选中“开发工具”和“内核开
发”二项(如果本文的例程要在特定的嵌入式系统中运行,还应安装相应的交叉编译器,并

包含相应的Linux 源代码),

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值