没有合适的资源?快使用搜索试试~ 我知道了~
基于ARM9的嵌入式Linux系统研究及设备驱动程序的开发.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 83 浏览量
2022-06-27
12:32:15
上传
评论
收藏 133KB DOC 举报
温馨提示
试读
28页
基于ARM9的嵌入式Linux系统研究及设备驱动程序的开发.doc
资源推荐
资源详情
资源评论
基于 ARM9 的嵌入式 Linux 系统研究及设备驱动程序的开发
兰州理工硕士论文
I 目录
摘要...............................................................
IAbstract...........................................................
II 插图索引..........................................................
III 第 1 章绪论.........................................................1
1.1 嵌入式系统意义.........................................................1
1.2 嵌入式系统.............................................................2
1.2.1 嵌入式系统简介...................................................2
1.2.2 嵌入式系统国内外现状.............................................3
1.3 ARM9 平台..............................................................4
1.4 设备驱动..............................................................5
1.5 本文主要工作...........................................................5
第2章实验平台硬件分析.............................................7
2.1 平台总体结构分析.......................................................7
2.2 处理器性能分析.........................................................8
2.3 存储器电路分析........................................................10
2.4 电源和复位电路分析....................................................11
2.5 接口电路..............................................................11
2.5.1 USB 接口........................................................11
2.5.2 LCD 接口........................................................12
2.5.3 网络接口电路....................................................12
2.6 本章小结..............................................................13
第3章嵌入式 Linux 系统构建........................................14
3.1 搭建交叉开发环境......................................................14
3.1.1 交叉编译环境的搭建..............................................14
3.1.2 交叉调试环境....................................................16
3.2 Uboot 的移植..........................................................18
3.2.1 Nand Flash 启动 U-BOOT 的基本原理................................20
3.2.2 加入支持 Nand Flash 启动代码.....................................20
3.2.3 U-BOOT 对 Nand Flash 命令的支持..................................21
3.3 嵌入式 Linux2.6.29 内核移植............................................21
3.3.1 Linux 内核文件结构..............................................21
3.3.2 内核移植过程....................................................24
3.根文件系统的制作......................................................26
3..1 建立根文件系统..................................................27
3..2 制作 YAFFS2 文件系统.............................................28
3.本章小结..............................................................29
第 4 章设备驱动....................................................30
4.1 设备驱动简介..........................................................30
4.2 LCD 设备驱动设计......................................................31
4.2.1 帧缓冲设备结构..................................................31
4..2 帧缓冲驱动的编写................................................33
4.3 USB 设备驱动设计......................................................34
4.3.1 USB 的具体构成..................................................34
4.3.2 USB 驱动程序结构分析............................................36
4.4 网络驱动设计..........................................................44
4.4.1 DM9000 结构分析.................................................44
4.4.2 Dm9000 驱动移植过程.............................................44
4.4.3 Dm9000 驱动简要分析.............................................46
4.5 本章小结.............................................................48
总结与展望.........................................................491
工作总结................................................................492
展望...................................................................49
参考文献...........................................................50
致谢...............................................................53
附录 A 攻读硕士学位期间发表论文.....................................54
I 摘要
随着各种处理器性能的不断提高以及价格的不断下降,带有操作系统的嵌入式系统因其体
积小,可靠性高、功能强、灵活方便等诸多优点,已渗透到工业、农业、教育、国防、科
研及日常生活等各个领域。而 Linux 系统因为开源、功能多样、性能稳定等特点成为了嵌
入式系统的首选。而嵌入式设备种类繁多,性能各异的特点又增加了产品中关于驱动设计
的复杂性。因此在嵌入式系统的开发过程中驱动设计的地位举足轻重。本文介绍了 Linux
的发展情况和体系结构,并在此基础上阐述了 Linux 作为嵌入式系统开发的优势和不足。
在具体实践的过程中结合 S3C2440 处理器和 Mini2440 实验平台,进行了嵌入式 Linux 的移
植和驱动设备的开发。在嵌入式 Linux 的移植过程中:首先结合 Linux 系统和实验平台的
硬件要求搭建了交叉开发环境,在此过程中解决了选用软件之间版本不兼容的问题。其次
通过对开源的 Uboot 作出一定的修改,生成了合适的系统引导程序,用于完成了 Linux 系
统移植的前序步骤,这里主要解决了 NandFlash 在启动过程中的数据搬移问题。再次进行
了 Linux 内核的裁剪和移植,并在移植成功的前提下进行了 USB 设备、LCD 设备、网络设
备的驱动设计。针对常见的嵌入式设备,主要遇到了以下的问题。诸如:(1)在 USB 设
备中嵌入式 Linux 系统的发展现状、体系结构特点(2)实验平台的硬件特性简介,包括
USB 电路、LCD 电路结构等等(3)嵌入式 Linux 的开发。这包括交叉编译环境搭建的过
程、Uboot 的结构和移植过程、Linux 内核的分析以及相关的裁剪移植、yaffs 根文件系统的
制作(4)介绍了常用设备的驱动的结构和实现过程。包括 USB 设备、LCD 设备以及网络
设备经过以上的工作,本文为嵌入式 Linux 系统和设备驱动的开发给出了较为完整的流程,
对其他开发者来说有一定的参考。
关键词:嵌入式 Linux 系统;交叉编译;Uboot;Linux 内核移植;
基于 ARM9 的嵌入式 Linux 系统研究及设备驱 动 程 序的开发 IIAbstractWith continuous
improving performance and declining prices of processors,because of small size,high
reliability,strong function,flexibility,and many otheradvantages,the embedded systems has been
widely used into industry,agriculture,education,national defense,scientific research,daily life and
other fields.The Linuxsystem has so many adventages such as the open source,versatile,stable
performance,so it becomes the first choice of the embedded systems.The wide types and
differentperformances of embedded devices add to the complexity of the design on the
drive.Therefore,the development of device driver holds an important position in theembedded
system design.This article describes the development and architecture of Linux,and
representsadvantages and disadvantages of Linux as an embedded system.In
practice,combiningS3C2440 processor and Mini2440 experimental platform,the embedded Linux
is portedand device drivers are developed.In the process of embedded Linux porting,firstlybuild
cross development environment based on embedded Linux system andexperimental platform,and
solve the problem of compatible versions among softwares.Secondly,generate the appropriate
system boot procedures by revising open-sourceUboot to complete the pre-order steps of Linux
system porting,which mainly solve dataporting problems in the process of NandFlash
starting.Finally,after Linux kernelcutting and transplantation,design USB devices,LCD devices
and network devicesbefore successful porting.This paper is structured into four parts:(1)The
developing status and structures of embedded Linux system in USB devices.(2)Introduce
hardware features of the USB circuit,LCD circuit,etc.(3)Develop embedded Linux.This includes
the process of cross-compile compilingenvironment,Uboot structure and porting process,Linux
kernel analysis and relatedcutting port,the production of yaffs root file system.(4)Describe driver
architecture and implementation process of the common device,including USB devices,LCD
devices and network devices.After the above work,this article not only offers a complete process
for embeddedLinux system design and device driver development,but also provides a reference
forother developers.Keywords:Embedded systems;Cross compiler;Uboot;Linux kernel porting;
兰州理工硕士论文
III 插图索引图
2.1 开发板电路结构...............................................................................................................7 图
2.2 结构框图..........................................................................................................................8 图
2.3 内存结构图.......................................................................................................................9 图
2.4 SDRAM 结构图..............................................................................................................10 图
2.5 NandFlash 电路图...........................................................................................................10 图
2.6 电源电路........................................................................................................................11 图
2.7 复位电路........................................................................................................................11 图
2.8 USB 电路图.....................................................................................................................12 图
2.9 LCD 电 路 图 .....................................................................................................................12 图
2.10 网络芯片图...................................................................................................................13 图
3.1 交叉编译图.....................................................................................................................15 图
3.2 调试原理图.....................................................................................................................16 图
3.3 minicom 配置图..............................................................................................................17 图
3.4 硬件调试图.....................................................................................................................18 图
3.5 Uboot 结构图...................................................................................................................19 图
3.6 启动原理图......................................................................................................................20 图
3.7 Uboot 的烧写...................................................................................................................21 图
3.8 内核结构图.....................................................................................................................23 图
3.9 内 核 裁 剪 图 .....................................................................................................................26 图
3.10 文件系统配置图...........................................................................................................29 图
4.1 驱动原理图....................................................................................................................31 图
4.2 USB 结构图...................................................................................................................35 图
4.3 驱动流程图....................................................................................................................37 图
4.4 USB 挂载图....................................................................................................................43 图
4.5 DM9000 结构框图........................................................................................................44 图
4.6 目标板 IP 配置图...........................................................................................................46 图
4.7 网络连接测试图.............................................................................................................46
1 第 1 章绪论
1.1 嵌入式系统意义
在信息技术和网络技术日新月异的今天,嵌入式系统因结构小巧、稳定性高、灵活方便等
诸多优点,在工农业、国防科研及日常生活得到了广泛的应用,并对各个行业的技术升级
产品性能提升、生产效率提高起到了重要的推动作用[1]。嵌入式产品有着广泛的应用,包
括了我们周围诸如机顶盒、个人数字助理、移动及多媒体设备、医疗仪器等多种设备。同
时,Linux 操作系统因其开放源代码、易于开发、功能强大、稳定、成本低等优势迅速跻
身于主流嵌入式开发平台。在计算机发展过程中,UNIX 操作系统的出现是一个重要的里
程碑,曾免费供美国及一些西方国家的大学和科研机构使用,并提供源码。后来 Linux
Torbald 在 Unix 的基础上进行了该进,创造了一个以其名字命名的操作系统-Linux,与商业
操作系统不同是,Linux 是一个开源免费的操作系统。对于 Linux 在嵌入式系统中的应用,
都是根据各种系统的多样性,对内核进行一定的裁剪和修改,而不是生搬硬套。具体包括
以下方面:(1)在 Linux 的移植过程中,特别是移植到具体的处理器中时,因为不同的处
理器有着不用的指令系统和结构系统,所以需要做出相应的修改和补充。(2)在满足系统
性能的前提下,为了压缩内核的大小以及提高系统的启动速度,需要对 Linux 内核进行删
减和裁剪。(3)嵌入式系统因根据用户的需求定制,导致了外部设备不能像一般设备那样
通用,而这就需要有针对性的开发一些特别的设备驱动程序,以满足不同外设的需要。
(4)不同的应用领域导致了对于实时性要求的高低不同,而这就需要采取不同的对策,解
决诸如优先级调度、时钟精度、优先级反转等各种复杂的问题以实现相应的实时性要求[2-
4]。模块化是 Linux 内核的特色,内核的许多功能和结构都可以按照需求加以取舍和裁剪,
有些结构根据系统启动加载的需求,比如部分模块在启动时需要较长,并且又不是频繁需
要使用。这个时候就可以将其独立编译生成动态安装的模块,在系统需要的时候再安装运
行。嵌入式 Linux 经修改和扩充可以保留这个特点,当嵌入式系统的需求改变的时候,还
可以根据这个修补过的版本,再次进行裁剪和编译以生成许多不同的可执行镜像,满足嵌
入式系统不同的功能需求,更好更快的完成项目要求。
21.2 嵌入式系统
1.2.1 嵌入式系统简介
嵌入式系统一般定义为:以应用为中心,以计算机技术为基础、软硬件可裁剪、适应于应
用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 [5]。以嵌入式
Linux 系统为例,一般具有一下的应用特征。内核体积较小:在 Linux 系统中性能齐全的内
核大概占用 1MB 的内存空间,而包含虚拟内存和内核核心功能的微内核,在奔腾处理中只
占用大概 100KB 的空间。而一个包含网络以及可以在 386 处理器执行简单实用程序的
Linux 系统,仅仅只需要大概 500KB 的内存。同时具有上述功能的微内核的结构也并不复
杂,内核的高层是以模块化的组织形式存在的,这些包括网络以及文件系统等等,而驱动
程序和其他部件作为微内核的底层在运行时可作为动态模块临时编译或者添加到内核中去
这可以根据嵌入式系统定制需求的多样性,提供高度模块化的构造方法。可靠性和稳定性
嵌入式系统要求很高的可靠性和稳定性,而 Linux 在通用操作系统领域中的优异表现已证
明其性能是绝对可靠的,因此选用 Linux 作为嵌入式操作系统,对于提升系统整体可靠性
和稳定性来说是很有保障性的。多任务和实时性:多任务性和实时性是嵌入式系统的特色
而这方面 Linux 也具有一定的优势,其在多任务方面性能优良。Linux 进程有三种调度策略,
即非实时、实时 FIFO 和实时基于优先权轮询法。虽然实时性不出众,但一般的要求基本
都能达到。可裁剪性和定制性:这是嵌入式操作系统一般要求,虽然 Linux 是单内核结构,
但它具有特色鲜明的模块机制。模块不仅具有可裁剪性,还可以在系统中动态的加载和卸
载,这使得模块化成为了 Linux 的特征之一。除了模块化机制以外,Linux 内核可以根据需
求在源码级别上进行配置和选择。因此 Linux 可以根据实际的情况,经过一定的裁剪和配
置以满足嵌入式系统的实际应用需求。完善的网络功能:嵌入式系统要求具有完善的网络
功能,而 Linux 自身就是一个优秀的网络操作系统,几乎所有的网络协议和网络接口都已
经定制在 Linux 中,而且具有很高的执行效率和吞吐量。硬件平台的普适性:Linux 具有广
泛的硬件支持特性,不仅涵盖了 RISC 和 CISC,还包括了 32 位和 64 位等多种处理器。
Linux 常用于的微处理器是 Intel x86 芯片家族,但它同样能在 Motorola 公司的 68KB 系列
CPU 和 IBM、Apple、PowerPC,以及 Strong ARM 等处理器系统中运行,这意味着嵌入式
Linux 将具有更广泛的应用背景。Linux 支持大量周边硬件设备,其上有丰富的驱动程序,
支持各种非主流硬件设备和最新的硬件技术,而且当前许多厂商也直接提供 Linux 上的驱
动,并且全球的 Linux 爱好者也编写了大量的驱动程序,使 Linux 更适合于各种不同的硬
件平台[6-8]。
目前,嵌入式 Linux 系统开发如雨后春笋,已经开辟了很大的市场空间,除了一些耳
熟能详 Linux 公司,像 RedHat、VALinux 等已经从事了多年的嵌入式 Linux 开发之外,不
少新公司(像 Lineo、Time Sys 等)和大公司(如 IBM、SGI、Intel 等),以及一些以前针
对专用嵌入式系统的公司也在从事嵌入式 Linux 的应用和开发。嵌入式 Linux 主要可以分
为两类(1)在不删减 Linux 完整功能的前提下,针对实际应用中对嵌入式系统体积的严格
要求,使其尽量的减小。如 μClinux。( 2)在一些对于实时性要求较高的控制场合,特别
是硬实时系统中有针对性的将 Linux 开发成实时系统。如 RT Linux,Hard Hat Linux 等
[9]。1.2.2 嵌入式系统国内外现状 Lineo 公司的代表作 μClinux 已经成为开源嵌入式 Linux 的
一个经典。在 Linux 内核还是 2.0 的时候,μClinux 就产生了。其主要在不具有内存管理单
元(MMU)的处理器上使用。根据嵌入式系统对内核体积的要求,μClinux 裁剪了大量
Linux 代码,尽管如此其仍然具有 Linux 操作系统的出色功能,具有代表性的是稳定、可靠
的网络功能和完善的文件系统。RT Linux(Real Time Linux)由 Victor Yodaiken 和 Michael
Baranov 开发出的全球范围内较早的实时 Linux 系统。现在 RT Linux 应用特别广泛,这其
中既包括宇航工业中的数据采集、遥感测控等高精端应用,也包括电影特效处理等等 RT
Linux 保留了 Linux 内核的绝大部分内容,同时利用内核的模块化机制,采用模块导入和独
立内核管理实时任务的方案。其工作流程是这样的:在启动了 Linux 内核之后,内核本身
转化为一个优先级最低的空闲任务,当有实时任务要求处理时,这个实时任务的优先级是
高于内核的,所以能被系统快速的响应,即在实时任务存在的基础上响应实时任务。 RT
Linux 将内核机制分为非实时机制以及实时机制两个部分,这有利于每个机制独立优化,
并且这样的内核结构简单而且体积小巧。Monta Vista Linux 公司是全球知名的嵌入式 Linux
系统解决方案提供商之一,其提供的方案是针对体积小、可靠性高、响应快以及非台式
Linux 能 解 决 的 问 题 。 Monta Vista Linux 公 司 的 Hard Hat Linux ( 2.1 版 本 已 更 名 为
剩余27页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3607
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功