深入浅出Linux设备驱动编程之引言.PDF

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
深入浅出Linux设备驱动编程之引言 目前,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 源代码),如下图: 深入浅出Linux设备驱动编程之内核模块 Linux 设备驱动属于内核的一部分,Linux 内核的一个模块可以以两种方式被编译和加载: (1)直接编译进Linux 内核,随同Linux 启动时加载; (2 )编译成一个可加载和删除的模块,使用 insmod 加载(modprobe 和 insmod 命令类似,但依赖于 相关的配置文件),rmmod 删除。这种方式控制了内核的大小,而模块一旦被插入内核,它就和内核其他 部分一样。 下面我们给出一个内核模块的例子: #include linux/module.h //所有模块都需要的头文件 #include linux/init.h // initexit 相关宏 MODULE_LICENSE(GPL); static int __init hello_init (void) { printk(Hello module init\n); return 0; } static void __exit hello_exit (void) { printk(Hello module exit\n); } module_init(hello_i

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档