Linux 设备驱动开发基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

25
设备驱动程序功能
26
用户态与内核态




操作系统运行在两种模式下,一种是用户态,另一 种是内核态。 内核态有较高的权限,可以控制处理器内存的映射 和分配方式,访问外设空间和处理器状态寄存器, 控制中断等。 用户态只能运行系统上的应用程序。 驱动程序作为系统内核的一部分,工作在内核态。 通过( Linux 下)get_user ,put_user , copy_from_user ,copy_to_user等函数实现应用程 27 序和驱动程序之间传送数据。
15
Linux产业链

目前,嵌入式Linux系统的研发热潮正在蓬勃兴 起,并且占据了很大的市场份额,除了一些传 统的Linux公司(如RedHat 、TimeSys、 MontaVista等)正在从事嵌入式Linux的开发和 应用之外,IBM、Intel、Motorola,Google等 著名企业也正在进行嵌入式Linux的研究,现在 很火的Android也是基于Linux实现的
17
嵌入式Linux的优势(2)

内核高效稳定 Linux内核的高效和稳定已经在各个领域内得 到了大量事实的验证, Linux的内核设计非常精巧,分成进程调度、 内存管理、进程间通信、虚拟文件系统和网 络接口五大部分 其独特的模块机制可以根据用户的需要,实 时地将某些模块插入到内核或从内核中移走。 这些特性使得Linux系统内核可以裁剪得非常 小巧,很适合于嵌入式系统的需要。
5
Leabharlann Baidu
Linux操作系统简介
目前是嵌入式开发应用中的首选
6
POSIX标准


POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。 该标准是基于现有的UNIX 实践和经验,描述 了操作系统的调用服务接口。用于保证编制的 应用程序可以在源代码一级上在多种操作系统 上移植和运行。
21
嵌入式Linux的优势(5)

完善的网络通信和文件管理机制


Linux至诞生之日起就与Internet密不可分, 支持所有标准的Internet网络协议,并且很容 易移植到嵌入式系统当中。 此外,Linux还支持ext2/ ext3 、fat16、fat32、 romfs、ramdisk、cramfs、jffs和jffs2等文件 系统,这些都为开发嵌入式系统应用打下了 很好的基础。
内核资源访问
28
Linux系统核心架构
29
Linux的设备分类

Linux支持的硬件设备:


字符设备:指那些无须缓冲直接读写的设备 块设备:只能以块为单位进行读写,典型的块大 小为512或1024字节。 网络设备 :可以通过BSD套接口访问 视频设备:Framebuffer 音频设备:OSS (Open Sound System) 总线类:PCI, USB, IIC, IIS



Linux下的设备驱动程序是内核的一部分,运行在 内核模式,也就是说设备驱动程序为内核提供了 一个I/O接口,用户使用这个接口实现对设备的操 作。 Linux的设备驱动程序介于(设备)文件系统与物 理设备中间。用户通过应用程序进程输入输入请 求,进而调用(设备)文件系统,(设备)文件 系统通过设备驱动程序控制物理设备进行设备的 操作,如进行磁盘文件的读出和写入操作等等。 Linux设备驱动程序包含了中断处理程序和设备服 务子程序。
23
Linux驱动开发基础

C语言 操作系统相关知识 一定的硬件基础 计算机体系架构 ……
24
Linux开发网络资源


www.kernel.org/ http://www.linuxforum.net/ http://www.chinaunix.net/ http://www.ibm.com/developerworks/c n/linux/ ……
11
Linux 各种发行版本
12
嵌入式Linux的定义

嵌入式Linux (Embedded Linux)是指对Linux 经过小型化裁剪后,能够固化在容量只有几 十万字节或几十亿字节的存储器芯片或单片 机中,应用于特定嵌入式场合的专用Linux操 作系统
13
嵌入式Linux发展背景


在早期,嵌入式系统一般是基于单片机等 MCU硬件平台,它们资源比较少,而且用 户所要求的功能也比较单位,因此不需要 操作系统。 后来,由于硬件平台的复杂化以及用户需 求的多样化,因此有必要在硬件平台上构 架一个操作系统,然后再进行应用程序的 开发
30


Linux设备驱动的基本作用
Linux 和其他操作系统一样,支持众多的、各式各样的外接 设备。 但是,面对层出不穷的新硬件产品,必须有人不断编写新的 驱动程序,以便让这些设备能够在Linux 下正常工作,从这 个意义上讲,讲述驱动程序的编写就是一件非常有意义的工 作。 举例来说,Linux下的驱动程序仅仅是为相应的设备编写一组 基本函数,并向VFS注册就可以安装成功了。 当应用程序需要设备时,可以访问该设备对应的文件节点, 利用VFS调用该设备的相关处理函数。
20
嵌入式Linux的优势(4)

优秀的开发工具 如果使用的是嵌入式Linux,一旦软硬件能够支持正 常的串口功能时,即使不用在线仿真器也可以很好地 进行开发和调试工作,从而节省了一笔不小的开发费 用。 嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain), 它利用GNU的gcc做编译器,用gdb、kgdb、xgdb 做调试工具,能够很方便地实现从操作系统到应 用软件各个级别的调试。 另外还有很多其他的binutils:如nm,ar, objdump、readelf和objcopy等等
7
GNU项目

GNU是Richard Stallman 於 1975 年,在 MIT 所成立的自由软件基金会 FSF (Free Software Foundation )中所执行的一项计划。旨在开发一个 类似UNIX 并且是自由软件的完整操作系统。 GNU 的本意代表“Gnu’s Not Unix”;虽然如此,它却是一个与 UNIX 完 全相容的软体系统。二者最大不同在於,GNU 是一个 free 的软件, UNIX 却是一个要付费的软件系统。 GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编 辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些 软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞 生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux” 操作系统。
16
嵌入式Linux的优势(1)

广泛的硬件支持 Linux能够支持x86、ARM、MIPS、ALPHA、 PowerPC等多种体系结构,目前已经成功移植 到数十种硬件平台,几乎能够运行在所有流 行的CPU上。 Linux有着异常丰富的驱动程序资源,支持各 种主流硬件设备和最新硬件技术。 甚至可以在没有存储管理单元(MMU)的处理 器上运行,这些都进一步促进了Linux在嵌入 式系统中的应用。
9

开源软件宗师级人物
Linux之父:Linus Torvalds
GNU 创始人 Richard Stallman
10
Linux的发行版本


原则上,用户可以从网上或其它地方获取Linux的内核, 并且自己编译它。然后用户用 同样的方式获取许多应 用程序的源代码,编译以后装入系统。对于复杂的程 序,这样做不但费时,而且容易出错。 为了避免这样做,用户通常选择从Linux的发行商那儿 获取操作系统和应用程序。一些组织或厂家将Linux系 统内核与应用软件(比如编译器、网络工具,office 套件、多媒体工具等)和文档包装起来,并提供一些 安装界面和系统设定与管理工具,这样就构成了一个 发行套件(也可以称为发行版本),例如最常见的 RedHat,Debian,红旗Linux等等。
18
嵌入式Linux的优势(2)—续图
19
嵌入式Linux的优势(3)

开放源码,软件丰富 Linux是开放源代码的自由操作系统,它为用户提供 了最大限度的自由度,由于嵌入式系统千差万别,往 往需要针对具体的应用进行修改和优化,因而获得源 代码就变得至关重要了。 Linux的软件资源十分丰富,每一种通用程序在Linux 上几乎都可以找到,并且数量还在不断增加。 在Linux上开发嵌入式应用软件一般不用从头做起, 而是可以选择一个类似的自由软件做为原型,在其上 进行二次开发。而且拥有全球数以千万计的共同爱好 者及开发者,拥有极其丰富的资源

32
Linux设备驱动程序特点(1)



⑴核心代码:设备驱动程序是核心的一部分,像核 心中其他的代码一样,出错将导致系统的严重损伤。 一个编写不当的设备驱动程序甚至能够使系统崩溃 导致文件系统的破坏和数据的丢失; ⑵标准接口:设备驱动程序必须为Linux核心或者 其从属的子系统提供一个标准的接口; ⑶核心机制:设备驱动程序可以使用标准的核心服 务比如内存分配、中断发送和等待对列等;
31




Linux设备驱动的基本功能

设备驱动程序是操作系统内核和机器硬件之间的接口。 设备驱动程序为应用程序屏蔽了硬件的细节,这样在应 用程序看来,硬件设备只是一个设备文件,应用程序可 以象操作普通文件一样对硬件设备进行操作。 设备驱动程序主要完成以下功能: 对设备初始化和释放。 把数据从内核传送到硬件和从硬件读取数据。 读取应用程序传送给设备文件的数据和回送应用程序 请求的数据。 检测和处理设备出现的错误。
nicklucky123@163.com
1
内容提要






Linux操作系统简介 Linux设备驱动的基本概念 Linux设备驱动程序开发简介 Linux设备驱动程序结构 Linux设备驱动程序加载方式 内核模块编程实例
2
嵌入式Linux应用
3
嵌入式Linux应用
4
Linux操作系统简介
8


GPL

软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛 大学的比尔· 盖茨和Richard M. Stallman。 前者宣布了Copyright(版权)时代的到来,并构建了微软帝 国的辉煌; 后者于1984年创立自由软件体系--GNU,拟定普遍公用版 权协议(General Public License,简称GPL),今天Linux 的成功就得益于GPL协议。 所有GPL协议下的自由软件都遵循着Richard M. Stallman的 "Copyleft"(非版权)原则:即自由软件允许用户自由拷贝、修改 和销售,但是对其源代码的任何修改都必须向所有用户公开。
33
Linux设备驱动程序特点(2)


⑷动态可加载:多数的Linux设备驱动程序可 以在核心模块发出加载请求时进行加载,同时 在不使用设备时进行卸载,这样核心可以有效 地利用系统的资源 ⑸可配置:Linux设备驱动属于核心的一部分, 用户可以根据自己的需要进行配置来选择适合 自己的驱动
34
Linux设备驱动的层次
22
Linux设备驱动开发的市场现状



高需求 Linux内核的绝大多数代码为设备驱动 新设备、新芯片、新驱动的需求日益迫切 高门槛 涉及到大量硬件操作 涉及到操作系统内核基础知识 涉及到并发控制与同步 复杂的软件结构框架 高回报 普通的开发人元年薪7~10万元,高级开发 人员 15 ~20万,系统级开发人员在30万以上。
14
嵌入式Linux发展背景

Linux是一个成熟而稳定的网络操作系统。将Linux植入嵌入式设备具有 众多的优点。 首先,Linux的源代码是开放的,任何人都可以获取并修改,用之开 发自己的产品。 其次,Linux是可以定制的,其系统内核最小只有约134kB。一个带 有中文系统和图形用户界面的核心程序也可以做到不足1MB,并且同 样稳定。 另外,它和多数Unix系统兼容,应用程序的开发和移植相当容易。 而且对于熟悉使用Unix的开发人员来说,上手也快 同时,它具有良好的可移植性,人们已成功使Linux运行于数百种硬 件平台之上。 (ARM, Mips, PowerPC,IA-32,IA-64)
相关文档
最新文档