毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc

上传人:椰子壳 文档编号:3284566 上传时间:2019-08-08 格式:DOC 页数:50 大小:526.52KB
返回 下载 相关 举报
毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc_第1页
第1页 / 共50页
毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc_第2页
第2页 / 共50页
毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc_第3页
第3页 / 共50页
毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc_第4页
第4页 / 共50页
毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-嵌入式开发在多媒体中的应用研究.doc(50页珍藏版)》请在三一文库上搜索。

1、2011届信息与计算科学专业毕业设计(论文)重庆三峡学院毕业设计(论文)题目:嵌入式开发在多媒体中的应用专 业:信息与计算科学年 级:2007级学 号:作 者:指导老师:完成时间:2011年5月说 明本系统是基于ARM2440开发板运行的一个MP3系统,本论文重点对怎么开发一个MP3系统做了详细的讲解。本系统研究了如何移植bootloader、移植内核、移植根文件系统、移植应用程序、驱动的编写、应用程序的编写。我们研究这个系统的主要目的就是为了学习嵌入式的开发流程,更加深刻的理解什么是嵌入式。在开发该系统之前,我们必须得安装了linux操作系统和基本的硬件环境。我们再开发该系统的时候。首先就是

2、移植的bootloader,因为bootloader就是我们开机运行的第一个程序。移植bootloader到ARM2440开发板上就得参考2440开发板的数据手册。根据2440开发板的硬件来配置bootloader的相应参数。接着是移植linux内核,然后是移植根文件系统,根文件系统移植完后就移植应用程序。其中我们移植的应用程序中就包含了我们madplay软件。这个软件是播放mp3所必须的软件。为了实现我们系统的按键功能,我们还得编写按键驱动程序,有了按键驱动,则我们就可以编写各种应用程序来控制我们的开发板了。当以上步骤都做完的时候,哈哈。我们的MP3系统就完成了。序号学号姓名专业、班级任务分

3、配1计算机科学与技术组长,系统开发、代码调试2信息与计算科学主要功能模块设计、系统开发3信息与计算科学任务的提出、系统设计目 录摘要IAbstractII1引言和选课题的背景12 系统开发的环境43 需求分析53.1 项目的可行性研究53.1.1技术的可行性53.1.2经济的可行性53.1.3 操作的可行性53.2 需求分析的任务53.2.1功能需求53.2.2性能需求53.3 总体设计63.3.1 设计过程63.3.2 设计原理64 移植bootloader64.1 Boot Loader的概念64.2 Boot Loader的stage164.3 Boot Loader的stage274.

4、4 u-boot-1.1.6的移植84.4.1 u-boot-1.1.6的代码目录结构简介85 Linux内核移植105.1 内核简介105.2 linux内核源码目录结构105.3 linux内核构造系统简介115.3.1、Kconfig文件,其作用是125.3.2 config文件125.3.3 Makefile文件125.4 Linux内核的构成125.4.1 系统调用接口135.4.2 进程管理135.4.3 内存管理145.4.4 虚拟文件系统145.4.5 Linux驱动程序145.4.6 网络协议站145.5 内核移植145.5.1 下载内核并加压145.6 进一步配置并裁减内核

5、175.7 Kconfig文件精解195.8修改Konfig和Make file,完成向内核中添加新的功能组件网卡,声卡,LCD,触摸屏驱动215.8.1 配置声卡驱动245.8.2 配置LCD驱动255.8.3配置LCD驱动256 根文件系统的制作266.1嵌入式文件系统的概述266.1.1什么是嵌入式文件系统266.1.2嵌入式linux对文件系统的要求266.1.3嵌入式linux常用的文件系统276.2 根文件系统的目录结构276.3 制作根文件系统步骤287 Linux应用程序开发297.1 在应用程序这里,我主要研究的就是如下几个模块:297.2介绍MP3声音控制模块297.3实现

6、播放上一首、播放下一首、实现暂停播放307.4实现把歌曲加载到播放列表中347.5 显示屏幕时间418 系统试运行结果与评价429 结束语43致 谢43参考文献43附件1:44 嵌入式开发在多媒体中的应用研究XXX(重庆三峡学院数学与计算机科学学院信息与计算科学专业2007级)摘要:目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。为了想成为嵌入开发团队中的一员,我们也努力开发一个简单的嵌入式产品。我们开发的是一个MP3系统,本系统主要运用了如下知识:移植bootloader、移植内核、移植根文件系统、移植应用程序、驱动的编写、应用程序的编写。我们研究这个系统的主要目

7、的就是为了学习嵌入式的开发流程,体验嵌入的可裁剪性,体验嵌入式产品的资源有限性,体验嵌入式开发中的乐趣。在开发该系统之前,我们必须得有个linux操作系统和ARM开发板,这就是最基本的硬件环境。有了这些必备条件后,我们就开始动手做我们的MP3系统吧。首先我们就得看得懂开发板的硬件连接图,然后会看开发板的数据手册。这就是开发必备的基础。有了这些基础后我们就期待做出一个完整的MP3系统吧。最后对整个MP3系统作了一个简要的总结并附录上了一些功能模块的主要源代码。关键词:嵌入式多媒体系统;C/ARM汇编技术;bootloader移植技术;linux内核移植技术;linux文件系统制作技术;linux

8、应用程序移植技术;linux驱动编写技术;linux应用编程技术;系统实现Embedded development in multimedia applied research Ting Ting YANG (Grade 2007, Information and Computing Science, College of Mathematics and Computer Science, Chongqing Three Gorges University, Wanzhou, Chongqing 404000 )Abstract:At present the embedded system t

9、echnology had already become one of most popular technical, attracted large quantities of outstanding talents to invest in which.for wants to become in the inserting development team, we also diligently develop a simple embedded product. we develop is a MP3 system, this system has mainly utilized th

10、e following knowledge: Transplants bootloader, the transplant kernel, to move takes root the filing system, the transplant application procedure, the actuation compilation, the application procedure compilation. We study this systems main purpose are to study the embedded development flow, experienc

11、e inserting may cutting out, experiences the embedded product resources finiteness, experiences in the embedded development the pleasure. Before developing this system, we must result in have the linux operating system and the ARM development board, this is the most basic hardware . Key words: Embed

12、ded multimedia system; C/ARM assembly technology; bootloader transplant technology; linux essence transplant technology; linux filing system manufacture technology; linux application procedure transplant technology; linux actuation compilation technology; linux using programming technology; The syst

13、em realizes I第43页 共44页1引言和选课题的背景当我们满怀憧憬与希望跨入二十一世纪大门的时候,计算机技术也开始进入一个被称为后PC技术的时代。在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机机器;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务

14、机器人也将逐渐改变传统的工业和服务方式。 嵌入式系统工业是专用计算机工业,其目的就是要把一切变得更简单、更方便、更普遍、更适用;通用计算机的发展变为功能电脑,普遍进入社会,嵌入式计算机发展的目标是专用电脑,实现“普遍化计算”,因此可以称嵌入式智能芯片是构成未来世界的“数字基因”。正如我国资深嵌入式系统专家沈绪榜院士的预言, “未来十年将会产生头大小、具有超过一亿次运算能力的嵌入式智能芯片”,将为我们提供无限的创造空间。总之“嵌入式微控制器或者说单片机好象是一个黑洞,会把当今很多技术和成果吸引进来。目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。但是对于何为嵌入式系统

15、,什么样的技术又可以称之为嵌入式技术,仍在讨论之中,有关嵌入式系统定义的问题,已经在很多论坛社区引发了多次争论。就这个问题我们可以分别从广义上和狭义上讲: 广而化之,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括四类:嵌入式微处理器(EMPU)、嵌入式微控制器(EMCU)、嵌入式数字信号处理器(EDSP)和嵌入式片上系统(ESOC)。嵌入式微处理器(Embedded MicroprocessorUnit , EMPU):嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以

16、大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。嵌入式微控制器(Microcontroller Unit , MCU):嵌入式微控制器又称单片机。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROMPEPROM、RAM、总线、总线逻辑、定时器、计数器、WatchDog、IPO、串行口、脉宽调制输出、APD、DPA、Flash RAM、E2PROM 等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,

17、不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。嵌入式DSP 处理器( Embedded Digital SignalProcessor , EDSP):DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP 算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP 算法正在大量进入嵌入式领域,DSP 应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式DSP 处理器。嵌入式片上系统(S

18、ystem On Chip) :随着EDI 的推广和VLSI 设计的普及化,及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临, 这就是System On Chip(SOC) 。各种通用处理器内核将作为SOC 设计公司的标准库,和许多其它嵌入式系统外设一样,成为VLSI 设计中一种标准的器件,用标准的VHDL 等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。总上所述:简单

19、的说:嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。还有人认为嵌入式系统就是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。 从狭义上讲,我们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统并且具有某些特定功能的系统,这里的微处理器专指32位以上的微处理器。按照这种定义,典型的嵌入式系统有使用x86的小型嵌入式工控主板,在各种自动化设备,数字机械产品中有非常广阔的应用空间;另外一大类是使用Int

20、el,Motorola等专用芯片构成的小系统,它不仅仅在新兴的消费电子和通讯仪表等方面获得了巨大的发展应用空间,而且甚至有趋势取代传统的工控机。现在大家更加清楚的看到:嵌入式技术的春天已经来了。所以也就难怪嵌入式系统成为当前最热门的技术之一。嵌入式系统可以称为后PC时代和后网络时代的新秀。与传统的通用计算机,数字产品相比,利用嵌入式技术的产品有其自己的特点: 由于嵌入式系统采用的是微处理器,实现相对单一的功能,采用独立的操作系统,所以往往不需要大量的外围器件。因而在体积上,功耗上有其自身的优势。相比之下,一个使用Windows CE的PDA,仅靠机内电源就可以使用几天,而任何一台笔记本仅仅能够

21、支持3小时左右。 嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一门综合技术学科。由于空间和各种资源相对不足,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。 嵌入式系统是一个软硬件高度结合的产物。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。片上系统,板上系统的实现,使得以PDA等为代表的这类产品拥有更加熟悉的操作界面和操作方式,比着传统的商务通等功能更加完善,实用。 为适应嵌入式分布处理结

22、构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCP/IP协议簇软件支持;由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。 因为嵌入式系统往往和具体应用有机地结合在一起,它的升级换代也是和具体产品同步

23、进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 目前,嵌入式系统广泛应用于生产过程控制、数据采集、传输通信等场合,主要用来对宿主对象进行控制,所以都对嵌入式系统有或多或少的实时性。例如,对嵌入在武器装各中的嵌入式系统、在火箭中的嵌入式系统、一些工业控制装置中的控制系统等应用中的实时性要求就极高。也正因为这种要求,在硬件上嵌人式系统极少使用存取速度慢的磁盘等存储器,在软件上更是加以精心设计,从而可使嵌入式系统快速地响应外部事件。当然,随着嵌入式系统应用的扩展,有些系统对实时性要求也并不是很高,例如近年来发展速度比较快的手持式计算机、掌上电脑等。但总体来说,实时性是对嵌入式系统的普遍要

24、求,是设计者和用户重点考虑的一个重要指标,所以具有实时性好。由于有些嵌入式系统所承担的计算任务涉及产品质量、人身设各安全、国家机密等重大事务,加之有些嵌入式系统的宿主对象要工作在无人值守的场合,例如危险性高的工业环境中、内嵌有嵌入式系统的仪器仪表中、在人际罕至的气象检测系统中以及为侦察敌方行动的小型智能装置中等。所以与普通系统相比较,对嵌入式系 统可靠性的要求极高,所以具有可靠性高。嵌入式系统软件的特征嵌入式处理器的应用软件是实现嵌入式系统功能的关键,对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同。 1)软件要求固态化存储为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化

25、在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。 2)软件代码高质量、高可靠性尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减少程序二进制代码长度、提高执行速度。 3)系统软件(OS) 的高实时性是基本要求多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的实时性是基本要求。4)多任务操作系统是知识集成的平台和走向工业标准化道

26、路的基础我们开发的系统是一个MP3系统,该系统能够实现选歌、播放、暂停、加减声音、单曲循环、随机播放、列表循环、删除添加歌曲。该系统的实现是在ARM9开发板上实现的。实现该系统就充分的把嵌入式的基本知识全部综合在一起了。要实现该系统就得做如下几步:1) 实现U-boot的移植。U-boot就是开机时的一段系统引导程序。该段程序被烧写在ROM中。该段程序就相当于我们PC即的BIOS程序一样。2) 实现Linux内核的移植。内核是操作系统的核心。3) 实现根文件系统的制作。文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构; 即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件

27、系统种类。 因此,可以说我有2个文件系统意思是他有2个分区,一个存文件,或他用 扩展文件系统,意思是文件系统的种类。4) 移植应用程序。比如我们MP3要用到的madplayer应用程序。这个应用程序是实现放歌功能的。即实现MP3的解码功能。5) 编写驱动程序。即实现对开发板按键的操作。6) 编写应用程序,即实现MP3的基本功能。7) 运行和测试系统。2 系统开发的环境 Ubuntu是一种用户友好、易于使用的Linux操作系统,已经成为开源领域中炙手可热的明星,深受广大Linux用户的喜爱。深入解析Ubuntu操作系统全面介绍了Ubuntu的安装、使用与管理内容,包括如何配置Linux桌面、如何

28、使用日常工作所需要的软件、如何搭建服务器,以及如何进行Linux编程和网络管理等,是目前市场上介绍Ubuntu操作系统最全面、最翔实的一本著作,可帮助读者切实掌握Ubuntu,成为Ubuntu应用高手。 Mini2440是一款真正低价实用的ARM9开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产;出厂时都经过严格的质量控制,配合这本十分详细的手册,可以迅速帮你掌握嵌入

29、式 Linux和WinCE开发的流程,只要有C语言基础的人一般2周即可入门。我们认为,嵌入式开发板不仅仅是一片可以看到“点亮LED灯或者LCD”的电路板,只要你赋予它丰富的灵魂-嵌入式软件,一切可以变得更加精彩,甚至可以重生,因此我们一直在不断的更新和加强嵌入式软件的开发,我们由衷地热爱嵌入式系统这个事业,并为此保持激情和追求完美,目前我们提供的Linux和WindowsCE 5.0/6.0系统,在技术和功能上已经达到国内2440开发板中最高水平,它们各自的bootloader以及BSP均是100%开放的。ARM汇编语言(Assembly Language)是面向机器的程序设计语言。ARM汇编

30、语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。ARM汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。ARM是Advanced RISC Machines 的缩写,它是一家微处理行业的知名企业。ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1V7表示,ARM汇编语言和x86汇编语言有很多相似之处。C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥

31、大学推出了CPL(CombinedProgram- ming Language)语言。CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言。1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX操作系统,在PDP-7上实现。 1971年在PDP-11/20上实现了B语

32、言,并写了UNIX操作系统。但B语言过于简单,功能有限。1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)。C语言既保持了BCPL和B语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。3 需求分析我们对这个多媒体系统从项目的可行性、需求分析的任务、总体设计、详细设计等几方面进行系统的分析。3.1 项目的可行性研究3.1.1技术的可行性从该系统的整体上研究,该系统主要涉及到的知识就是C语言编程。一些硬件原理图的基本知识。所以从技术上是可以完全实现该系统的。3.1.2经济的可行性从经济上说我们需要花费

33、几百块的硬件成本就可以了,然而做出的MP3就能够投入市场,并可以系统的学习嵌入式开发。3.1.3 操作的可行性有效的组合团队进行开发,每个人负责一个功能模块,则完全没有问题。3.2 需求分析的任务3.2.1功能需求该系统实现的功能是:实现播放、暂停、上一首、下一首歌曲。实现增加、删除歌曲。实现单曲循环、循环播放。实现选歌播放3.2.2性能需求该系统实现了看门狗功能,即使在很不幸的情况下,使内核崩溃,那么该系统也没有问题。这时候看门狗就会自动重启系统,是系统恢复正常。所以有效的实现了系统的稳定性。3.3 总体设计3.3.1 设计过程首先我们将该系统分解为如下几个部分实现。A、移植bootload

34、er。B、移植内核。C、移植根文件系统D、移植应用程序E、编写驱动程序。F、编写应用程序。3.3.2 设计原理首先就是有一个能够引导内核的程序,这个程序就是bootloader。然后内核引导启动后就会启动系统。但是启动系统前必须有根文件系统。这个帮助管理系统。这样我们一个真正的系统就在我们的开发板上跑起来了。所以我们在该操作系统中加上我们的应用程序就可以实现我们系统的功能了。当然我们的按键驱动模块在操作系统启动完毕后就可以加入进内核。4 移植bootloader 4.1 Boot Loader的概念简单地说,Boot Loader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们

35、可以初始化硬件设备,建立内存空间的映射图,从而将系统的软件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。4.2 Boot Loader的stage1Stage1完成的主要任务:(1) 基本的硬件初始化这是Boot Loader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序):(2) 屏蔽所有的中断为中断提供服务通常是OS设备驱动程序的责任,因此在Boot Loader的执行全过程中可以不必响应任何中断,中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器(比如ARM的CPSR寄存器

36、)来完成。(3) 设置CPU的速度和时钟频率。(4) RAM初始化包括正确地设置系统的内存控制器的功能寄存器等。(5) 关闭CPU内部指令/数据cache(6) 拷贝stage2到RAM中拷贝时要确定两点:stage2的可执行映象在固态存储设备的存放起始地址和终止地址;RAM空间的起始地址。(7) 设置堆栈指针sp堆栈指针的设置是为了只想C语言代码作好准备。(8) 跳转到stage2的C入口点在上述一切都就绪后,就可以跳转到Boot Loader的stage2去执行了。比如,在RAM系统中,这可以通过修改PC寄存器为合适的地址来实现。4.3 Boot Loader的stage2Stage2的代

37、码通常用 C语言来实现,以便于实现更复杂的功能和取得更好的代码可读性和可移植性。但是与普通C语言应用程序不同的是,在编译和链接Boot Loader这样的程序时,我们不能适应glibc库中的任何支持函数。其原因是显而易见的。(1) 初始化本阶段要使用到的硬件设备这通常包括:初始化至少一个串口,以便和终端用户进行I/O输出信息。设备初始化完成后,可以输出一些打印信息,程序名字字符串、版本号等。(2) 加载内核映像从nor flash或nand flash(需要编写nand flash裸驱动)上将内核映像拷贝到RAM中(3) 设置内核的启动参数应该说,在将内核映像拷贝到RAM空间中后,就可以准备启

38、动Linux内核了,但是在调用内核之前,应该做一步准备工作,即:设置Linux内核的启动参数。Linux2.4.x以后的内部都期望以标记列表(tagged list)的形式来传递启动参数。启动参数标记列表以标记ATAG_CORE开始,以标记ATAG_NONE结束。每个标记由标识被传递参数的tag_header结构以及随后的参数值数据结构来组成。数据结构tag和tag_header定义在Linux内核源码的include/asm/setup.h头文件中。在嵌入式Linux系统中,通常需要有Boot Loader的设置的常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE

39、(4) 调用内核Boot Loader调用Linux内核的方法是直接跳转到内核的第一条指令处,也即直接跳转到MEM_START+0x000地址处。在跳转时,下列条件要满足:A、CPU寄存器的设置:R0=0;R1=机 器 类 型 ID; 关 于 Machine Type Number,可 以 参 见linux/arch/arm/tools/mach-types。R2=启动参数标记列表在RAM中起始基地址;B、CPU模式:必须禁止中断(IRQs和FIQs);CPU必须 处于SVC模式;C、Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭; 常见的嵌

40、入式bootloader下表显示的是几种不同的bootloader以及特性 各种bootloaderBootloaderMonitor描述x86RAMPowerPCLILO否Linux磁盘引导程序是否否GRUB否GUN的LILO替代程序是否否Loadlin否从DOS引导Linux是否否ROLO否从ROM引导Linux而不需要BIOS是否否Etherboot否通过以太网卡启动Linux系统的固件是否否LinuxBIOS否完全替代BUIS的Linux引导程序是否否BLOB否LART等硬件平台的引导程序否是是U-boot是通用引导程序是是是RedBoot是基于eCos的引导程序是是是4.4 u-bo

41、ot-1.1.6的移植首先去官网下载u-boot-1.1.6,然后用tar命令解压u-boot-1.1.6。panbinpanbin-desktop:/panbin-work/ tar xzvf u-boot-1.1.6.tar.bz24.4.1 u-boot-1.1.6的代码目录结构简介u-boot-1.1.6的代码,其目录结构主要分为与体系结构有关的代码目录以及与体系结构无关(通用)的代码目录。前者主要包含board目录和cpu目录,移植u-boot的工作主要就集中在对这些目录里面特点文件的修改。Board目录下每一个子目录都包含一个u-boot支持的硬件开发的支持代码。u-boot-1.

42、1.6源码的目录结构如下表:board平台依赖存放电路板相关的目录文件,例如:smdk2410(arm920t)等cpu平台依赖存放cpu相关目录文件,例如:arm720t、arm920t等lib_arm平台依赖存放arm体系结构通用文件,主要用于实现ARM平台通用的函数include通用头文件和开发板配置文件,所有开发板的配置文件都在config目录下common通用通用多功能函数实现,即u-boot的命令lib_generic通用通用库函数的实现,如printfnet通用存放网络的程序fs通用存放文件系统的程序post通用存放上电自检程序drivers通用通用的设备驱动程序,主要是以太网接

43、口的驱动和nand flsah驱动disk通用硬盘接口程序rtc通用RTC的驱动程序dtt通用数字温度测量器或者传感器examples应用例程一些独立运行的应用程序的例子tools工具存放制作S-Record或者U-BOOT格式的映像等工具doc文档开发使用文档以下内容由本人独立完成5 Linux内核移植5.1 内核简介内核源码可以从www.kernel.org下载,ARM体系结构的内核源码补丁可以从www.arm.linux.org.uk/developer下载。Linux内核的版本号可以从源码顶层目录的Makefile中看到。Linux的版本号分为两部分,即内核版本与发行版本。内核版本号由

44、3 个数字组成:r.x.y。r:目前发布的内核主版本。x:偶数表示稳定版本;奇数表示开发中版本。y:错误修补的次数。例如:下面几行构成了Linux版本号2.6.22.6VERSION = 2PATCHLEVEL = 6SUBLEVEL = 22EXTRAVERSION = 6内核版本的PATCHLEVEL,稳定内核为偶数,实验版本内核为奇数。Linux内核最初在1991年发布,是Lanus Tornados为386开发的一个类Minix的操作系统 Linux1.0官方版本发行于1994年3月,仅支持386,仅支持单CPU系统 Linux1.2发行于1995年3月,是第一个支持多平台(Alpha

45、SparcMips等)的版本 Linux2.0发行于1996年6月,包含很多新平台的支持,但最重要的是支持SMP Linux2.2在1999年1月发行,极大提升了SMP系统性能,同时支持更多的硬件 Linux2.4在2001年1月发行,进一步提升了SMP系统的扩展性,同时集成了很多用于支持桌面系统的特性:USB PC卡(PCMCIA),内置的即插即用等 Linux2.6发布于2003年12月 支持更多的平台,从小规模的嵌入式到服务器级的64位系统 使用新的调度器,进程的切换效率更高 内核服务可被抢占,使得用户操作可得到更快的响应 I/O子系统进行了大修改,使得在各种工作负荷下都更具响应性 模块子系统,文件系统都作了大量的改进 合并了uClinux的功能,以支持没有MMU的CPU5.2 linux内核源码目录结构Arch目录Arch是architecture的缩写,内核所支持的每种CPU的体系,在该目录下都有对应的子目录,每个CPU的子目录,又进一步分解为boot、mm、kernel等子目录,控制系统引导,内存管理,系统调用等。主要是C和汇编代码。注意:Arch/arm/boot 是内核引导代码,(Compressed/head.S)Arch/arm/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1