ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:202.46KB ,
资源ID:6787539      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6787539.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《ARM原理及应用21》结课报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《ARM原理及应用21》结课报告.docx

1、ARM原理及应用21结课报告 天津职业技术师范大学ARM原理及应用2-1结课报告 嵌入式Linux软件开发综述 班级: 应电1112班 姓名: 赵晓强 学号: 09930144109 2014年12月摘 要 通过对嵌入式软件平台的研究,了解嵌入式系统软件开发的一般模式和具体流程,了解嵌入式系统开发的技术发展方向,验证ARM处理器和Linux操作系统在推动嵌入式系统应用迅速发展中发挥重要作用的原因之所在。本课题研究按照嵌入式软件从底层硬件层到上层应用层由下至上的顺序,阐述了Linux操作系统的逐步在ARM9目标平台上的移植过程。阐明了嵌入式系统的构成和显著特点,展望了嵌入式系统在应用领域中的发展

2、前景;随后介绍了ARM9目标平台的硬件组成和特点,并实现了Bootloader的移植;然后文章阐述了嵌入式Linux操作系统的裁剪和移植,最终得出了构建ARM9嵌入式Linux软件平台的一般结论,并结合当今信息产业的发展方向对本课题研究的前景作了展望。 关键词:嵌入式系统,Linux操作系统,Bootloader第一章 绪论1.1嵌入式系统概述嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”,是指以应用为中心、以计算机技术为基础、软硬件可裁减、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。1.1.1嵌入式系统的组成 一个嵌入式系统一般可以分成四个部分:嵌入式

3、处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,其中嵌入式处理器和嵌入式外围设备都是嵌入式硬件平台的主要组成部分。嵌入式系统的四部分是密不可分的,只有具备了这四个部分,才能发挥嵌入式系统应有的功能。1.1.2嵌入式系统的特点 1、嵌入式系统通常是面向特定应用的,它通常都具有低功耗、体积小、集成度高等特点,嵌入式系统微处理器能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计的小型化,移动能力大大增强,和网络的融合也越来越紧密。 2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。这一点就决定了它必然是一个技术密集、资金密集

4、、不断创新的知识集成系统。 3、嵌入式系统的硬件部分和软件部分都必须高效率地进行设计,量体裁衣、去除冗余,力争在有限的印刷电路板面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。 4、嵌入式系统的环境不具备开发能力,即设计完成以后用户不能通过嵌入式系统本身对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。1.1.3嵌入式系统的应用领域及发展趋势 一、嵌入式系统的应用领域嵌入式系统己经进入到现代社会中人们生活的方方面面,可是说是“无处不在”。1、工业控制基于嵌入式芯片的工业自动化设备具有很大的发展空间,目前己经有大量的8、16、32位嵌入式微控制器应用在工业过

5、程控制、数控机床、电力系统、电网安全、电网设备监测、石油化工系统等领域。 2、交通管理 在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术己经获得了广泛的应用,内嵌GPS模块、GSM模块的移动定位终端已经在各种运输行业成功使用。 3、信息家电 这将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使不在家里,也可以通过电话线、网络进行远程控制,在这些设备中,嵌入式系统将大有用武之地。 4、家庭智能管理系统水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌入的专用控制芯片将代替传统的人工检查,并实现更高、更准确和更安全的性能。 5、环

6、境监测 环境监测包括水文资料实时监测、防洪体系及水土质量监测、堤坝安全、地震监测网、实时气象信息网、水源和空气污染监测等。在很多环境恶劣、地况复杂的地区,嵌入式系统将实现无人监测。 6、机器人 嵌入式芯片的发展将使机器人在微型化、智能化方面的优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。 二、嵌入式系统的发展趋势 随着嵌入式系统应用领域的不断扩展和技术的不断成熟,嵌入式系统呈现了欣欣向荣的发展势头,嵌入式系统的应用领域及在技术特点上的发展趋势,如图1-1所示:图1-1 嵌入式系统的应用领域技术发展趋势1.2课题研究方案的确定本课题研究的中心任务是构建基于

7、ARM9的嵌入式软件平台,采用韩国三星公司的S3C2410作为处理器芯片,采用Linux作为嵌入式操作系统。1.2.1 ARM9平台的选择ARM(Advanced RISC Machines),是一个公司名字,也是一种处理器的通称,还可以认为是一种技术名字。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM

8、公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。本文所使用的S3C2410属于ARM920T。采用RISC架构的ARM9微处理器具有如下特点:1、小体积、低功耗、低成本、高性能;2、支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/l6位器件;3、大量使用寄存器,大多数数据操作都在寄存器中完成,指令执行速度快;4、寻址方式灵活简单,执行效率高。1.2.2 Linux操作系统

9、的采用本课题研究选用Linux作为嵌入式操作系统。通过对标准Linux操作系统的小型化裁剪,将其固化在容量只有几百K字节或几M字节的存储器芯片或单片机上,能够应用于特定嵌入式场合,一般把采用嵌入式以Linux操作系统的嵌入式系统简称为嵌入式Linux系统。 Linux是当前非常流行的一种操作系统种类,它具有其它操作系统所不具备的优势:1、免费,开放源码,应用软件种类丰富,大量的技术支持2、内核高效稳定,模块化3、完善的文件管理机制和网络功能4、优秀的开发工具5、广泛的硬件支持第二章硬件平台分析和Bootloader移植在进行嵌入式软件平台的构建之前,有必要对所研究软件平台所依存的硬件平台进行必

10、要的分析,和硬件密切相关一个重要的工作是进行Bootloader的移植。Bootloader是指系统启动后,在操作系统内核运行之前运行的一段小程序。Bootloader的主要功能是通过初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。本课题研究移植了韩国mizi公司开发的一款Bootloadervivi到S3C2410上,完成和嵌入式Linux启动相关的一系列工作。2.1硬件平台分析2.1.1硬件平台概述 本课题研究所使用的硬件是基于Samsung S3C2410微处理器(ARM9)为核心的目标平台板,S3C2410的接

11、口非常丰富,可满足许多嵌入式系统的需要,尤其是多媒体嵌入式系统的需要。 系统采用主频可高达203MHz的S3C2410作为处理器芯片,其内部集成了一系列完备的系统接口,从而可以在最大程度上降低系统开发成本,减少外围器件的使用。硬件平台的主要包括以下几种外围模块:1、最小系统模块;电源系统、晶振、复位电路和存储模块;2、人机交互模块;液晶显示模块、触摸屏和音频模块;3、对外通信模块;包括JTAG、串行接口、USB模块和以太网模块;2.1.2微处理器S3C2410的特点 S3C2410是一款16/32位ARM920T内核的微处理器,0.1um工艺的CMOS标准宏单元和存储编译器。它的低功耗、精简和

12、出色的全静态设计使得它非常适用于手持式设备以及对成本、功耗敏感的应用场合。 一、ARM920T内核 ARM920T内核由ARM9TDMI、存储管理单元(MMU)和高速缓存三部分组成。其中,全性能MMU,可管理虚拟内存,支持Linux,WinCE等嵌入式操作系统。它采用Harvard结构,支持16KB数据Cache和16KB指令Cache结构分离,具有更高的指令和数据处理能力。 二、S3C2410片内外设功能模块简介为减少整个系统的成本,S3C24lO芯片内部集成了各种外围没备,其中与本课题研究相关的外围设备主要包括:1、和Bootloader启动程序有关的 NAND Flash的控制器,芯片选

13、择逻辑和SDRAM控制器的系统管理器,3通道UART;2、支持STN和TFT带有触摸屏的LCD控制器,2个USB主机接口,其中1个USB可作为设备接口,4通道DMA,这些都和图形用户接口密切有关;3、8通道10位ADC模块,IIC总线接口,IIS总线接口,117个通用I/O口和外部中断源,这些与音频驱动程序的实现密切相关。2.2 Bootloader的实现2.2.1交叉编译环境的建立 在进行嵌入式Linux开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。Linux下的交叉编译环境主要包括以下四个部分,如表1-1所示:表1-1 Linux下交叉编译环境的

14、四个部分 交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称为目标机,后者称为宿主机。嵌入式软件开发中必须采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行,在进行完程序编写、调试等工作后,再下载到目标硬件电路上执行。一、下载交叉编译工具Linux交叉开发环境基本都是由GNU开源工具链搭建,工具链对应于不同的Linux版本存在着版本选择的问题,因此必须针对所开发的目标平台选择相应编译器及调试器等,同时对应Linux的版本,工具链版本需与其

15、配合以保证工具的正常使用。二、建立环境变量Linux是一个多用户的操作系统,每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序将使用到的信息。2.2.2移植 Bootloader 一、Bootloader的启动原理 嵌入式系统的初始化、加载过程和一般操作系统在PC机上的过程在原理上是一样的,因此在一个嵌入式系统的启动需要一个与BIOS功能相类似的软件,通常叫做Bootloader(引导加载程序)。Bootloader是系统上电后运行的第一段代码,一般它只在系统启

16、动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。在基于ARM的嵌入式系统中,整个系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的就是系统的Bootloader。通过这段小程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 二、vivi的配置和编译 vivi是韩国Mizi公司开发的一款Bootloader,适用于ARM9处理器,本课题研究中把vivi作为53C2410的Bootloader。vivi有两种工作模式:启动加载模式和下载模式,启动加载模式可以

17、在Bootloader的任务完成后自行启动Linux内核,这是vivi的默认模式;在下载模式下,vivi提供一个命令行接口,编程人员可以通过该接口使用vivi提供的一些命令来设置系统参数和启动系统等。 在使用vivi之前需要使用vivi的配置与编译命令$make dean和$make menuconfig,根据开发平台的情况进行适当的配置,主要是针对vivi的下面几个目录的代码经行修改:1、arch:包括所有vivi支持的目标板的子目录2、drivers:包括了引导内核需要的设备的驱动程序,vivi采取了与Linux相似的文件管理机制,串口等驱动程序是vivi运行时必须的。3、init:这个目

18、录main和versions两个文件。和普通的C程序一样,viv将从main函数开始执行,versions则记录了vivi相关的版本信息,可以用来确定交叉编译工具的版本信息。 4、 lib:一些处理器平台公共的接口代码库,比如time.c里的udelay()和mdelay()。 5、include:头文件的公共目录,其中的S3C2410.h定义了这块处理器的一些寄存器,以及 NAND Flash的一些寄存器等。三、53C2410的启动方式选择S3C2410可寻址的物理地址空间是1G字节,分成8个BANK,每一个BANK占128MB。每一个BANK(除BANK0以外)都支持可编程的8/16/32

19、位数据总线宽度。其中BANKO到BANKS的开始地址是固定的,用于ROM或SRAM。BANK6和BANK7用于ROM,SRAM或SDRAM,这两个BANK可编程,且大小相同。BANK7的开始地址是BANK6的结束地址,灵活可变。S3C2410具有三种启动方式,可通过OM1:0管脚进行选择:1、OMl:0=00时,处理器从 NAND Flash启动;2、OMl:0=01时,处理器从16位宽的ROM启动;3、OMl:0=10时,处理器从32位宽的ROM启动。四、vivi中NAND Flash分区的设置由于选择了NAND Flash的启动方式,因此必须在启动之前往Flash中烧写存储相应的文件启动程

20、序文件。首先必须用仿真器或者Flash烧写软件将vivi烧写进Flash中,然后就可以启动vivi,将其它需要预先存储在Flash中的文件烧写进去。第三章Linux操作系统的移植 通过对 Linux2.6的内核进行针对目标硬件平台的移植,研究其适应嵌入式的特点,这部分内容是构建嵌入式软件平台的主要任务之一。由于嵌入式系统的特点,针对不同的应用,具体的硬件电路也会有所不同,因而无法设计可供所有嵌入式系统通用的软件。在Linux系统内核代码的arch目录中,包括了不同平台(包括1386)的代码,arch目录中的代码是为多平台设计并使用的,ARM体系结构对应的简称是arm,Linux已经对ARM体系

21、架构提供了支持。在进行嵌入式系统的设计过程中,需要根据嵌入式硬件平台本身和应用上的特点,利用嵌入式软件系统的可裁减性,结合已有的硬件电路,对已有的Linux内核代码进行移植。Linux是一个庞大的源码开放项目,在世界上有千千万万的Linux爱好者每天不停地进行维护和发展。随着嵌入式技术的快速发展和嵌入式设备的普及,Linux的开发者们越来越意识到在Linux体系结构适应嵌入式系统发展的重要性,ARM,MIPS的体系结构的源码加入到Linux正式发布的内核中就是一个证明。嵌入式应用发展的一个关键趋势是从静态的、固定的系统功能到动态的、可扩展的系统功能,每一个不同版本的内核都增加或者减少了一些特性

22、,但这些特性的总体趋势就是越来越适合于嵌入式移植。本课题研究将通过对2.6版本的Linux在目标平台上的移植来验证其适应嵌入式系统的特性。3.1Linux内核源码 Linux内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。一般在Linux系统中的 /usr/src/Linux一*.*.*.*(“*.*.*.*”代表内核版本,如2.6.12.6)目录下就是内核源代码。Linux内核非常庞大,包括驱动程序在内有数百兆之多,其主要代码分布如图1-2所示。图1-2 Linux-2.6.12.6内部结构3.2Linux的移植3.2.1源码的获取 一、Linux内核源码的

23、获取本课题研究采用Linux标准内核,版本为Linux-2.6.12.6,可以在Linux的官方网站获取内核源码。下载linux-2.6.12.6内核压缩包至 /usr/local/src/,并解压,运行命令:rootlocalhost#cd/usr/local/src rootlocalhost src#tar xzvf linux-2.6.12.6.tar.bz2 rootlocailiostkemel#cd linux2.6.12.62、设置Makeflle交叉编译工具 由于本课题研究的主要目的是在ARM9平台上进行Linux的移植,因此必须对内核进行交叉编译,才能获取能在ARM9平台上

24、运行的镜像文件,因此必须修改内核目录树根下的Makefile文件,指明交叉编译器。3.2.2建立flash分区 Flash分区的建立实际上是实现目标系统中NAND Flash MTD设各驱动的过程。MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。一、MTD设备的分层MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。CFI接口的MTD设备可分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层

25、,如图1-3所示。图1-3 MTD设备的分层二、设置分区信息在第二章中的Bootloader启动设置中对 NAND Flash进行了分区,当Bootloader把CPU的控制权交给Linux操作系统之后,Linux操作系统同样需要建立一样的Flash分区表,才能够正确地与vivi配合,找到合适的文件存储区域,这主要通过 NAND Flash的驱动来实现。 三、加入 NAND Flash分区 实现了 NAND Flash的分区之后,需要将分区信息登记到系统中。 struct s3c2410_ nand_set nandset= /记录 NAND Flash分区信息结构 nr_partitions

26、:5, / 分区数目 partitions:partition_info, /分区表 ;其中nr_partitions指明了partition_info中定义的分区数目,partitions就是相应的分区信息表。3.2.3启动初始化Linux的内核启动时会依据分区的设置进行初始配置,它将会根据mach- smdk2410.c文件进行硬件的初始化, NAND Flash驱动是内核启动时必须加载的部分,所以必须将 NAND Flash信息添加到此文件中。修改arch/arm/machS3C2410/mach-smdk2410.e文件。3.3内核启动设置 在完成Linux启动的NAND Flash设

27、置之后,还必须完成内核启动需要的一些基本设置,如文件系统支持,完成内核启动设置和配置驱动支持等。3.3.1设备文件系统devfs启动支持 devfs,即设备文件系统 (Device Filesystem),其主要作用是提供一个新的(更理性的)方式管理通常位于/dev目录下的所有块设备和字符设备。典型的/dev树包含数百个字符类型特殊文件和块类型特殊文件,它们全都在根文件系统上,每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。实际上,设备不是简单地隐藏在API(应用程序编程接口)之后,而是真正地与普通文件、目录和符号链接一样存在于文件系统上。因为字符和块设备是映射到普通文件系统名称空间

28、的,通常可以用有意义的方式来与硬件交互,例如仅使用标准Linux命令,如cat和dd。一旦所有设备驱动程序启动并向内核注册适当的设备,内核就启动/sbin可init和系统初始化脚本开始执行。在启动过程初期(在文件系统检查前),rc脚本将devfs文件系统安装在/dev中,/dev包含了devfs名称空间的表达。这意味着在安装/dev后,所有注册的设备(例如 /dev/fb0)都可以访问,就像在非devfs上一样。当它们被访问时,内核通过devfs设备名称映射到合适的设备驱动程序,而不是通过主设备号。这种系统的优点是,所有需要的设备节点都由内核自动创建。3.3.2内核编译和下载 使用make或者

29、 make zlmage命令在arch/arm/boot下生成zlmage文件,下载到flash中的就是这个压缩后的zlmage文件,zlmage是由压缩后的vmlinux和解压缩程序组成,其中vmlinux是elf格式的内核二进制文件。 rootlocalhostlinux-2.6.12.6 #make zImage启动vivi,进入vivi的命令行模式,利用vivi的命令load flash kernel x将linux内核下载到 NAND Flash的内核分区。这样Linux-2.6.12.6的内核裁减和移植就已经初步完成了,要使Linux在目标板上真正自由的运行起来,配合目标板上的硬件

30、环境,还必须进行文件系统和驱动程序的移植。总结本课题研究主要的研究内容为目标平台硬件的了解,Bootloader的移植,Linux和文件系统的移植,驱动程序的编写和移植和GUI的移植构建了一个通用的嵌入式软件平台,最后实现了一个基于声卡的嵌入式音频示波器的应用实例。课题的研究的题目为基于ARM9的嵌入式软件平台的研究与实现,研究的主要目标是通过研究,得出如何在ARM9平台上构建嵌入式软件平台的结论。一、嵌入式系统的硬件特点嵌入式系统相对于 PC机在硬件资源的很多方面都存在限制,如ARM9处理器的CPU处理能力、内存以及外围电路的接口与PC相比存在很大不足,因此在进行嵌入式系统的功能定位,软件裁

31、减的时候应该充分考虑到现有的硬件资源,才能研发出功能与效率都很出色的产品来。二、嵌入式系统的软件开发通过对Linux2.6内核版本进行裁减、编译,并将其移植到S3C2410处理器的目标板上成功运行,讨论Linux向目标系统S3C2410移植过程中的关键技术及其实现。这部分研究的主要工作实质上是向下修改Linux底层设置,使之适应嵌入式硬件平台,向上修改Linux的上层配置,使之适应上层嵌入式文件系统和应用程序的要求,这体现了嵌入式软件平台分层和互相渗透的特点,移植后的Linux保留了原有工作稳定的特点,为文件系统的移植和应用程序的开发准备好了软件平台。参考文献【1】陈赜,ARM9嵌入式技术及Linux高级实践教程,北京:北京航空航天大学出版社,2006.1【2】肖文鹏,走进嵌入式Linux的世界,http:/SHELL/519690.html.【3】陈赜 刘振兴 李宗福等,ARM嵌入式技术实践教程,北京:北京航空航天大学出版社,2005.2【4】田泽,嵌入式系统开发与应用教程,北京:北京航空航天大学出版社,2005.3【5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1