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

上传人:b****5 文档编号:6787539 上传时间:2023-01-10 格式:DOCX 页数:13 大小:202.46KB
下载 相关 举报
《ARM原理及应用21》结课报告.docx_第1页
第1页 / 共13页
《ARM原理及应用21》结课报告.docx_第2页
第2页 / 共13页
《ARM原理及应用21》结课报告.docx_第3页
第3页 / 共13页
《ARM原理及应用21》结课报告.docx_第4页
第4页 / 共13页
《ARM原理及应用21》结课报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

《《ARM原理及应用21》结课报告.docx》由会员分享,可在线阅读,更多相关《《ARM原理及应用21》结课报告.docx(13页珍藏版)》请在冰豆网上搜索。

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

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

天津职业技术师范大学

《ARM原理及应用2-1》结课报告

 

嵌入式Linux软件开发综述

 

班级:

应电1112班

姓名:

赵晓强

学号:

09930144109

 

2014年12月

 

摘要

通过对嵌入式软件平台的研究,了解嵌入式系统软件开发的一般模式和具体流程,了解嵌入式系统开发的技术发展方向,验证ARM处理器和Linux操作系统在推动嵌入式系统应用迅速发展中发挥重要作用的原因之所在。

本课题研究按照嵌入式软件从底层硬件层到上层应用层由下至上的顺序,阐述了Linux操作系统的逐步在ARM9目标平台上的移植过程。

阐明了嵌入式系统的构成和显著特点,展望了嵌入式系统在应用领域中的发展前景;随后介绍了ARM9目标平台的硬件组成和特点,并实现了Bootloader的移植;然后文章阐述了嵌入式Linux操作系统的裁剪和移植,最终得出了构建ARM9嵌入式Linux软件平台的一般结论,并结合当今信息产业的发展方向对本课题研究的前景作了展望。

关键词:

嵌入式系统,Linux操作系统,Bootloader

 

第一章绪论

1.1嵌入式系统概述

嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”,是指以应用为中心、以计算机技术为基础、软硬件可裁减、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

1.1.1嵌入式系统的组成

一个嵌入式系统一般可以分成四个部分:

嵌入式处理器、嵌入式外围设备、

嵌入式操作系统和嵌入式应用软件,其中嵌入式处理器和嵌入式外围设备都是嵌

入式硬件平台的主要组成部分。

嵌入式系统的四部分是密不可分的,只有具备了这四个部分,才能发挥嵌入式系统应有的功能。

1.1.2嵌入式系统的特点

1、嵌入式系统通常是面向特定应用的,它通常都具有低功耗、体积小、集

成度高等特点,嵌入式系统微处理器能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计的小型化,移动能力大大增强,和网络的融合也越来越紧密。

2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业

的具体应用相结合的产物。

这一点就决定了它必然是一个技术密集、资金密集、

不断创新的知识集成系统。

3、嵌入式系统的硬件部分和软件部分都必须高效率地进行设计,量体裁衣、

去除冗余,力争在有限的印刷电路板面积上实现更高的性能,这样才能在具体应

用中对处理器的选择更具有竞争力。

4、嵌入式系统的环境不具备开发能力,即设计完成以后用户不能通过嵌入

式系统本身对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行

开发。

1.1.3嵌入式系统的应用领域及发展趋势

一、嵌入式系统的应用领域

嵌入式系统己经进入到现代社会中人们生活的方方面面,可是说是“无处不在”。

1、工业控制

基于嵌入式芯片的工业自动化设备具有很大的发展空间,目前己经有大量的

8、16、32位嵌入式微控制器应用在工业过程控制、数控机床、电力系统、电网安全、电网设备监测、石油化工系统等领域。

2、交通管理

在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术己经获

得了广泛的应用,内嵌GPS模块、GSM模块的移动定位终端已经在各种运输行

业成功使用。

3、信息家电

这将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引

领人们的生活步入一个崭新的空间。

即使不在家里,也可以通过电话线、网络进

行远程控制,在这些设备中,嵌入式系统将大有用武之地。

4、家庭智能管理系统

水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌入的专用控

制芯片将代替传统的人工检查,并实现更高、更准确和更安全的性能。

5、环境监测

环境监测包括水文资料实时监测、防洪体系及水土质量监测、堤坝安全、地

震监测网、实时气象信息网、水源和空气污染监测等。

在很多环境恶劣、地况复

杂的地区,嵌入式系统将实现无人监测。

6、机器人

嵌入式芯片的发展将使机器人在微型化、智能化方面的优势更加明显,同时

会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。

二、嵌入式系统的发展趋势

随着嵌入式系统应用领域的不断扩展和技术的不断成熟,嵌入式系统呈现了

欣欣向荣的发展势头,嵌入式系统的应用领域及在技术特点上的发展趋势,如图

1-1所示:

图1-1嵌入式系统的应用领域技术发展趋势

1.2课题研究方案的确定

本课题研究的中心任务是构建基于ARM9的嵌入式软件平台,采用韩国三星公司的S3C2410作为处理器芯片,采用Linux作为嵌入式操作系统。

1.2.1ARM9平台的选择

ARM(AdvancedRISCMachines),是一个公司名字,也是一种处理器的通称,还可以认为是一种技术名字。

ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。

目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。

ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。

本文所使用的S3C2410属于ARM920T。

采用RISC架构的ARM9微处理器具有如下特点:

1、小体积、低功耗、低成本、高性能;

2、支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/l6位器件;

3、大量使用寄存器,大多数数据操作都在寄存器中完成,指令执行速度快;

4、寻址方式灵活简单,执行效率高。

1.2.2Linux操作系统的采用

本课题研究选用Linux作为嵌入式操作系统。

通过对标准Linux操作系统的

小型化裁剪,将其固化在容量只有几百K字节或几M字节的存储器芯片或单片机上,能够应用于特定嵌入式场合,一般把采用嵌入式以Linux操作系统的嵌入式系统简称为嵌入式Linux系统。

Linux是当前非常流行的一种操作系统种类,它具有其它操作系统所不具备

的优势:

1、免费,开放源码,应用软件种类丰富,大量的技术支持

2、内核高效稳定,模块化

3、完善的文件管理机制和网络功能

4、优秀的开发工具

5、广泛的硬件支持

 

第二章硬件平台分析和Bootloader移植

在进行嵌入式软件平台的构建之前,有必要对所研究软件平台所依存的硬件

平台进行必要的分析,和硬件密切相关一个重要的工作是进行Bootloader的移植。

Bootloader是指系统启动后,在操作系统内核运行之前运行的一段小程序。

Bootloader的主要功能是通过初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

本课题研究移植了韩国mizi公司开发的一款Bootloader—vivi到S3C2410上,完成和嵌入式Linux启动相关的一系列工作。

2.1硬件平台分析

2.1.1硬件平台概述

本课题研究所使用的硬件是基于SamsungS3C2410微处理器(ARM9)为核心

的目标平台板,S3C2410的接口非常丰富,可满足许多嵌入式系统的需要,尤其

是多媒体嵌入式系统的需要。

系统采用主频可高达203MHz的S3C2410作为处理器芯片,其内部集成了一系列完备的系统接口,从而可以在最大程度上降低系统开发成本,减少外围器

件的使用。

硬件平台的主要包括以下几种外围模块:

1、最小系统模块;电源系统、晶振、复位电路和存储模块;

2、人机交互模块;液晶显示模块、触摸屏和音频模块;

3、对外通信模块;包括JTAG、串行接口、USB模块和以太网模块;

2.1.2微处理器S3C2410的特点

S3C2410是一款16/32位ARM920T内核的微处理器,0.1um工艺的CMOS标准宏单元和存储编译器。

它的低功耗、精简和出色的全静态设计使得它非常适用于手持式设备以及对成本、功耗敏感的应用场合。

一、ARM920T内核

ARM920T内核由ARM9TDMI、存储管理单元(MMU)和高速缓存三部分组

成。

其中,全性能MMU,可管理虚拟内存,支持Linux,WinCE等嵌入式操作

系统。

它采用Harvard结构,支持16KB数据Cache和16KB指令Cache结构分

离,具有更高的指令和数据处理能力。

二、S3C2410片内外设功能模块简介

为减少整个系统的成本,S3C24lO芯片内部集成了各种外围没备,其中与本课题研究相关的外围设备主要包括:

1、和Bootloader启动程序有关的NANDFlash的控制器,芯片选择逻辑和

SDRAM控制器的系统管理器,3通道UART;

2、支持STN和TFT带有触摸屏的LCD控制器,2个USB主机接口,其中

1个USB可作为设备接口,4通道DMA,这些都和图形用户接口密切有关;

3、8通道10位ADC模块,IIC总线接口,IIS总线接口,117个通用I/O口和外部中断源,这些与音频驱动程序的实现密切相关。

2.2Bootloader的实现

2.2.1交叉编译环境的建立

在进行嵌入式Linux开发之前,首先要建立一个交叉编译环境,这是一套编

译器、连接器和libc库等组成的开发环境。

Linux下的交叉编译环境主要包括以下四个部分,如表1-1所示:

表1-1Linux下交叉编译环境的四个部分

交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执

行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称

为目标机,后者称为宿主机。

嵌入式软件开发中必须采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行,在进行完程序编写、调试等工作后,再下载到目标硬件电路上执行。

一、下载交叉编译工具

Linux交叉开发环境基本都是由GNU开源工具链搭建,工具链对应于不同的Linux版本存在着版本选择的问题,因此必须针对所开发的目标平台选择相应编译器及调试器等,同时对应Linux的版本,工具链版本需与其配合以保证工具的正常使用。

二、建立环境变量

Linux是一个多用户的操作系统,每个用户登录系统后,都会有一个专用的

运行环境。

通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。

环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序将使用到的信息。

2.2.2移植Bootloader

一、Bootloader的启动原理

嵌入式系统的初始化、加载过程和一般操作系统在PC机上的过程在原理上

是一样的,因此在一个嵌入式系统的启动需要一个与BIOS功能相类似的软件,

通常叫做Bootloader(引导加载程序)。

Bootloader是系统上电后运行的第一段代码,一般它只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。

在基于ARM的嵌入式系统中,整个系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的就是系统的Bootloader。

通过这段小程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

二、vivi的配置和编译

vivi是韩国Mizi公司开发的一款Bootloader,适用于ARM9处理器,本课

题研究中把vivi作为53C2410的Bootloader。

vivi有两种工作模式:

启动加载模式和下载模式,启动加载模式可以在Bootloader的任务完成后自行启动Linux内核,这是vivi的默认模式;在下载模式下,vivi提供一个命令行接口,编程人员可以通过该接口使用vivi提供的一些命令来设置系统参数和启动系统等。

在使用vivi之前需要使用vivi的配置与编译命令$makedean和$makemenuconfig,根据开发平台的情况进行适当的配置,主要是针对vivi的下面几个目录的代码经行修改:

1、arch:

包括所有vivi支持的目标板的子目录

2、drivers:

包括了引导内核需要的设备的驱动程序,vivi采取了与Linux相似的文件管理机制,串口等驱动程序是vivi运行时必须的。

3、init:

这个目录main和versions两个文件。

和普通的C程序一样,viv将从main函数开始执行,versions则记录了vivi相关的版本信息,可以用来确定交叉编译工具的版本信息。

4、lib:

一些处理器平台公共的接口代码库,比如time.c里的udelay()和mdelay()。

5、include:

头文件的公共目录,其中的S3C2410.h定义了这块处理器的一

些寄存器,以及NANDFlash的一些寄存器等。

三、53C2410的启动方式选择

S3C2410可寻址的物理地址空间是1G字节,分成8个BANK,每一个BANK

占128MB。

每一个BANK(除BANK0以外)都支持可编程的8/16/32位数据总线宽度。

其中BANKO到BANKS的开始地址是固定的,用于ROM或SRAM。

BANK6和BANK7用于ROM,SRAM或SDRAM,这两个BANK可编程,且大小相同。

BANK7的开始地址是BANK6的结束地址,灵活可变。

S3C2410具有三种启动方式,可通过OM[1:

0]管脚进行选择:

1、OM[l:

0]=00时,处理器从NANDFlash启动;

2、OM[l:

0]=01时,处理器从16位宽的ROM启动;

3、OM[l:

0]=10时,处理器从32位宽的ROM启动。

四、vivi中NANDFlash分区的设置

由于选择了NANDFlash的启动方式,因此必须在启动之前往Flash中烧写

存储相应的文件启动程序文件。

首先必须用仿真器或者Flash烧写软件将vivi烧写进Flash中,然后就可以启动vivi,将其它需要预先存储在Flash中的文件烧写进去。

 

第三章Linux操作系统的移植

通过对Linux2.6的内核进行针对目标硬件平台的移植,研究其适应嵌入式的特点,这部分内容是构建嵌入式软件平台的主要任务之一。

由于嵌入式系统的特点,针对不同的应用,具体的硬件电路也会有所不同,因而无法设计可供所有嵌入式系统通用的软件。

在Linux系统内核代码的arch目录中,包括了不同平台(包括1386)的代码,arch目录中的代码是为多平台设计并使用的,ARM体系结构对应的简称是arm,Linux已经对ARM体系架构提供了支持。

在进行嵌入式系统的设计过程中,需要根据嵌入式硬件平台本身和应用上的特点,利用嵌入式软件系统的可裁减性,结合已有的硬件电路,对已有的Linux内核代码进行移植。

Linux是一个庞大的源码开放项目,在世界上有千千万万的Linux爱好者每

天不停地进行维护和发展。

随着嵌入式技术的快速发展和嵌入式设备的普及,

Linux的开发者们越来越意识到在Linux体系结构适应嵌入式系统发展的重要

性,ARM,MIPS的体系结构的源码加入到Linux正式发布的内核中就是一个证明。

嵌入式应用发展的一个关键趋势是从静态的、固定的系统功能到动态的、可扩展的系统功能,每一个不同版本的内核都增加或者减少了一些特性,但这些特性的总体趋势就是越来越适合于嵌入式移植。

本课题研究将通过对2.6版本的Linux在目标平台上的移植来验证其适应嵌入式系统的特性。

3.1Linux内核源码

Linux内核主要由5个子系统组成:

进程调度、内存管理、虚拟文件系统、

网络接口、进程间通信。

一般在Linux系统中的/usr/src/Linux一*.*.*.*(“*.*.*.*”代表内核版本,如2.6.12.6)目录下就是内核源代码。

Linux内核非常庞大,包括驱动程序在内有数百兆之多,其主要代码分布如图1-2所示。

图1-2Linux-2.6.12.6内部结构

3.2Linux的移植

3.2.1源码的获取

一、Linux内核源码的获取

本课题研究采用Linux标准内核,版本为Linux-2.6.12.6,可以在Linux的官方网站获取内核源码。

下载linux-2.6.12.6内核压缩包至/usr/local/src/,并解压,运行命令:

[root@localhost~]#cd/usr/local/src

[root@localhostsrc]#tarxzvflinux-2.6.12.6.tar.bz2

[root@locailiostkemel]#cdlinux2.6.12.6

2、设置Makeflle交叉编译工具

由于本课题研究的主要目的是在ARM9平台上进行Linux的移植,因此必须对内核进行交叉编译,才能获取能在ARM9平台上运行的镜像文件,因此必

须修改内核目录树根下的Makefile文件,指明交叉编译器。

3.2.2建立flash分区

Flash分区的建立实际上是实现目标系统中NANDFlashMTD设各驱动的过程。

MTD(memorytechnologydevice内存技术设备)是用于访问memory设备

(ROM、flash)的Linux的子系统。

一、MTD设备的分层

MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬

件和上层之间提供了一个抽象的接口。

CFI接口的MTD设备可分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:

设备节点、MTD设备层、MTD原始设备层和硬件驱动层,如图1-3所示。

图1-3MTD设备的分层

二、设置分区信息

在第二章中的Bootloader启动设置中对NANDFlash进行了分区,当

Bootloader把CPU的控制权交给Linux操作系统之后,Linux操作系统同样需要

建立一样的Flash分区表,才能够正确地与vivi配合,找到合适的文件存储区域,

这主要通过NANDFlash的驱动来实现。

三、加入NANDFlash分区

实现了NANDFlash的分区之后,需要将分区信息登记到系统中。

structs3c2410_nand_setnandset={//记录NANDFlash分区信息结构

nr_partitions:

5,//分区数目

partitions:

partition_info,//分区表

};

其中nr_partitions指明了partition_info中定义的分区数目,partitions就是相

应的分区信息表。

3.2.3启动初始化

Linux的内核启动时会依据分区的设置进行初始配置,它将会根据

mach-smdk2410.c文件进行硬件的初始化,NANDFlash驱动是内核启动时必须加载的部分,所以必须将NANDFlash信息添加到此文件中。

修改arch/arm/machS3C2410/mach-smdk2410.e文件。

3.3内核启动设置

在完成Linux启动的NANDFlash设置之后,还必须完成内核启动需要的一些基本设置,如文件系统支持,完成内核启动设置和配置驱动支持等。

3.3.1设备文件系统devfs启动支持

devfs,即设备文件系统(DeviceFilesystem),其主要作用是提供一个新的(更

理性的)方式管理通常位于/dev目录下的所有块设备和字符设备。

典型的/dev树包含数百个字符类型特殊文件和块类型特殊文件,它们全都在根文件系统上,每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。

实际上,设备不是简单地隐藏在API(应用程序编程接口)之后,而是真正地与普通文件、目录和符号链接一样存在于文件系统上。

因为字符和块设备是映射到普通文件系统名称空间的,通常可以用有意义的方式来与硬件交互,例如仅使用标准Linux命令,如cat和dd。

一旦所有设备驱动程序启动并向内核注册适当的设备,内核就启动/sbin可init和系统初始化脚本开始执行。

在启动过程初期(在文件系统检查前),rc脚本将devfs文件系统安装在/dev中,/dev包含了devfs名称空间的表达。

这意味着在安装/dev后,所有注册的设备(例如/dev/fb0)都可以访问,就像在非devfs上一样。

当它们被访问时,内核通过devfs设备名称映射到合适的设备驱动程序,而不是通过主设备号。

这种系统的优点是,所有需要的设备节点都由内核自动创建。

3.3.2内核编译和下载

使用make或者makezlmage命令在arch/arm/boot下生成zlmage文件,下载到flash中的就是这个压缩后的zlmage文件,zlmage是由压缩后的vmlinux和解压缩程序组成,其中vmlinux是elf格式的内核二进制文件。

[root@localhostlinux-2.6.12.6』#makezImage

启动vivi,进入vivi的命令行模式,利用vivi的命令loadflashkernelx将linux内核下载到NANDFlash的内核分区。

这样Linux-2.6.12.6的内核裁减和移植就已经初步完成了,要使Linux在目标板上真正自由的运行起来,配合目标板上的硬件环境,还必须进行文件系统和驱动程序的移植。

 

总结

本课题研究主要的研究内容为目标平台硬件的了解,Bootloader的移植,

Linux和文件系统的移植,驱动程序的编写和移植和GUI的移植构建了一个通用

的嵌入式软件平台,最后实现了一个基于声卡的嵌入式音频示波器的应用实例。

课题的研究的题目为基于ARM9的嵌入式软件平台的研究与实现,研究的主要目标是通过研究,得出如何在ARM9平台上构建嵌入式软件平台的结论。

一、嵌入式系统的硬件特点

嵌入式系统相对于PC机在硬件资源的很多方面都存在限制,如ARM9处理器的CPU处理能力、内存以及外围电路的接口与PC相比存在很大不足,因此在进行嵌入式系统的功能定位,软件裁减的时候应该充分考虑到现有的硬件资

源,才能研发出功能与效率都很出色的产品来。

二、嵌入式系统的软件开发

通过对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