linux操作系统在ARM平台上的移植毕业论文.docx
《linux操作系统在ARM平台上的移植毕业论文.docx》由会员分享,可在线阅读,更多相关《linux操作系统在ARM平台上的移植毕业论文.docx(39页珍藏版)》请在冰豆网上搜索。
linux操作系统在ARM平台上的移植毕业论文
linux操作系统在ARM平台上的移植-毕业论文
学生毕业论文
(2012届)
题目(中文)LINUX操作系统在ARM上的移植
(英文)Transplantation of the LINUX operating
system onARM
系别:
物理与电子工程系
专业:
电气工程及其自动化班级:
姓名:
学号:
指导教师:
诚信声明
我声明,所呈交的毕业论文是本人在老师指导下进行的研究工作及取得的研究成果。
据我查证,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,我承诺,论文中的所有内容均真实、可信。
毕业论文作者签名:
签名日期:
年月日
摘要:
在ARM平台上移植linux操作系统作为实现设备小型化、智能化的一个重要元素,目前己经广泛应用于国防、工业、交通、能源、信息技术以及日常生活等各个领域,研究和开发linux操作系统在ARM平台上的移植具有重要的现实意义。
本文主要介绍了将公开源代码的linux3.3.3内核移植到S3C6410(arm1172核)的关键技术分析以及具体的移植过程,建立嵌入式Linux交叉开发环境,移植BootLoader引导程序,配置、编译、移植Linux内核,制作文件系统并对文件系统进行移植到开发板。
我们可以根据内核所支持的文件系统类型制作文件系统本论文选择制作yaffs文件系统并移植。
并且vim,arm-linux-gcc开发环境下设计了一个简单的测试程序。
另外,基于此平台的开发也将使软件缺陷大幅度减少,从而为程序员开发此平台上进行二次开发。
关键词:
系统移植;BootLoader;S3C6410;Linux3.3.3
Abstract:
intheARMplatformtransplantLinuxoperatingsystemasrealizeminiaturization,intelligentequipmentanimportantelementof,atpresenthasbeenwidelyusedinn
ationaldefense,industrial,transportation,energyresources,informationtechnologyanddailylife,andotherfields,researchanddevelopmentandLinuxoperatingsystemintheARMplatformoftransplantationhastheimportantpracticalsignificance.Thispapermainlyintroducedtothepublicinsourcecodelinux3.3.3kerneltransplantedtoS3C6410(arm1172)ofthekeytechnicalanalysisandspecifictransplantprocess,eastablishembeddedLinuxcrossdevelopmentenvironment,transplantBootLoaderboot,configuration,compilation,transplantLinuxkernel,andmakingthefilesystemandthefilesystemtransplanttodevelopmentboard.Wecanaccordingtothesupportofthekernelfilesystemtypemakingfilesystemthispaperyaffsselectfilesystemandtransplantation.Andvim,arm-Linux-GCCdevelopmentenvironmentdesignasimpletestprocedures.Inaddition,basedonthisplatformwillalsomakethedevelopmentofsoftwaredefectgreatlyreduced,andthusforprogrammersdevelopmentthisplatformsecondarydevelopment.
Keywords:
systemtransplantation;BootLoader;S3C6410;Linux3.3.3
1绪论
1.1课题研究的背景、目的和意义
随着各种芯片技术的发展,各种嵌入式产品也如雨后春笋一般地出现了。
目前,嵌入式产品应用领域涉及移动通信、汽车、医疗、家电等很多领域。
而且,如今的嵌入式硬件的速度和容量越来越接近于PC,因此在这些嵌入式产品上运行操作系统就成为了可能。
一直以来,很多企业花费了巨大成本研发了大量运行在PC上的软件产品。
如果将这些优秀的软件应用在嵌入式系统中,将会成为快速开发嵌入式系统,降低嵌入式产品开发成本,提高软件稳定性和安全性的重要途径。
论文课题的主要研究目的是:
在以S3C6410(ARM1176核)微处理器为核心的硬件平台上,搭建通用的嵌入式Linux(使用的内核是3.3.3版本的)软件开发平台,以便在其上做二次开发。
系统地研究嵌入式Linux系统的移植有很大的现实意义。
首先,可以增加对S3C6410以微处理器、内置外设以及系统扩展的了解,有助于将来的嵌入式学习。
其次,可以熟悉嵌入式软件系统移植的整个过程,对该过程有整体上的把握,对后续的嵌入式系统开发有指导性意义。
最后,通过该研究过程可以构建较新版的软件系统,实现更好的系统性能,最重要的是可以在实践基础上增加对系统移植理论的理解并积累丰富的系统移植经验,为后续的嵌入式应用开发打下坚实的基础。
1.2嵌入式系统现状及发展趋势
计算机、互联网技术的应用与普及,以及微电子技术的突破,正有力推动着二十一世纪工业生产、商业活动、科学实验和家庭生活等领域的自动化和信息化进程。
全过程自动化的产品制造、大范围的电子商务活动、高度协同的科学实验以及现代化家庭起居,为嵌入式产品造就了崭新而巨大的商机,市场前景非常广阔。
目前嵌入式系统每年全球的工业产值日益增加。
1.2.2嵌入式系统的特点及发展趋势
嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面、图形界面和灵活的控制方式。
这就要求嵌入式软件设计者要在图形界面、多媒体技术上多下功夫(这样可以使客户更轻松方便的使用嵌入式产品)。
我国国内的嵌入式软件市场已处于整体启动阶段。
国内嵌入式软件市场未来的发展重点在于对应用范围的拓展。
随着Internet的发展以及Internet技术在信息家电、工业控制技术等领域的应用,嵌入式系统与Internet的结合将代表着嵌入式技术的真正未来。
1.3论文的主要工作
本课题以S3C6410为核心的ARM11开发板为硬件开发平台,在此基础上,实现嵌入式Linux系统的移植。
其源码全部来自Internet,在了解了系统移植方法并做了大量的工程实践的基础上,从无到有的建立了一个可用的嵌入式Linux系统,包括移植了功能较强的BootLoader、2012年4月刚出版的Linux3.3版本内核。
其移植过程不脱离一般性,但因具体开发环境的不同,移植过程中会涉及到很多具体问题。
论文的主要工作:
l)建立嵌入式Linux交叉开发环境
对于嵌入式系统,目标板一般只有很小的存储空间,处理器频率也较低。
直接在这样的硬件上建立Linux系统非常困难。
嵌入式Linux交叉开发环境可以很好地解决这个难题,即实现在PC机上编译嵌入式系统要运行的程序。
2)移植BootLoader引导程序
嵌入式Linux内核通常需要目标板上的引导程序引导来引导内核的启动。
这些引导程序就是BootLoader。
BootLoader在目标板上电的时候运行,主要完成板级初始化和Linux内核引导的任务。
由于BootLoder和CPU及电路板的配置相关,不可能有通用的BootLoader,开发时需要根据具体情况进行移植。
U-boot是一种通用的BootLoader,本文就是通过U-boot来引导的。
3)配置、编译、移植Linux内核
详细分析了Linux移植的要点,并对目前较新的3.3.3版Linux内核源码进行了移植、配置和编译。
4)制作文件系统并对文件系统进行移植到开发板。
我们可以根据内核所支持的文件系统类型制作文件系统本论文选择制作yaffs文件系统并移植。
2嵌入式Linux系统构成和软件开发环境
进行嵌入式操作系统以及驱动程序的移植,需要对目标硬件平台和软件结构有深入的理解。
本章介绍嵌入式Linux系统的体系结构、硬件平台构成和嵌入式软件开发环境。
2.1嵌入式Linux系统的体系结构
除了硬件系统外,嵌入式Linux系统需要有下面三个基本元素:
系统引导程序BootLoader(用于设备加电后的系统定位引导)、Linux微内核(内存管理、程序管理)、初始化进程。
但如果要它成为完整的操作系统并继续保持小型化还必须加上硬件驱动程序、硬件接口程序和应用程序组。
最终可用的嵌入式Linux系统体系结构如表所示:
表2-1嵌入式Linux系统体系结构
应用软件
应用层
BOOTLOADER、LINUXKERNEL、DRIVERS
系统层
嵌入式开发板实验板
(本论文使用SAMSUNGS3C6410)
硬件层
硬件层是系统的基础,所有软件都建立在它的基础上,系统层的BootLoader是嵌入式系统软件的最底层,是上电后运行的第一个程序,类似于PC机上的BIOS,完成对硬件的初始化和内核加载,驱动程序作为系统内核的一部分,实现操作系统内核和硬件设备之间的接口,为应用程序屏蔽硬件的细节,系统内核主要完成任务管理,调度算法等,GUI图形支持库实现对硬件的抽象、提供基本的图形接口函数和与用户实现交互,而应用软件用来实现某一具体功能。
2.2嵌入式Linux系统硬件平台
2.2.1S3C6410A处理器简介
S3C6410是一个16/32位RISC微处理器,旨在提供一个具有成本效益、功耗低,性能高的应用处理器解决方案,像移动电话和一般的应用。
它为2.5G和3G通信服务提供优化的H/W性能,S3C6410采用了64/32位内部总线架构。
该64/32位内部总线结构由AXI、AHB和APB总线组成。
它还包括许多强大的硬件加速器,像视频处理,音频处理,二维图形,显示操作和缩放。
一个集成的多格式编解码器(MFC)支持MPEG4/H.263/H.264编码、译码以及VC1的解码。
这个H/W编码器/解码器支持实时视频会议和NTSC、PAL模式的TV输出。
存储控制器
S3C6410存储器包括七个存储控制器,一个SROM控制器,两个OneNAND控制器,一个NAND闪存控制器,一个CF控制器,和两个DRAM控制器。
通过使用EBI,静态存储控制器和16位DRAM控制器共享存储器端口0。
1)支持大、小端模式(通过软件选择);
2)地址空间:
包含8个地址空间,每个地址空间的大小为128M字节,总共有lG字节的地址空间;
3)除BANKO以外的所有地址空间都可以通过编程设置为8位、16位或32位访问。
BANKO可以设置为16位、32位访问;
4)8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、SDRAM等存储器;
5)7个地址空间的起始地址及空间大小是固定的;
6)1个地址空间的起始地址和空间大小是可变的;
7)所有存储器空间的访问周期都可以通过编程配置;
8)提供外部扩展总线的等待周期;
9)SDRAM支持自动刷新和掉电模式。
2.2.2硬件系统整体结构
本论文采用的硬件平台由底板和核心板组成,核心板上使用了SAMSUNG公司的S3C6410A处理器,并集成了SDRAM,NANDFlash存储设备以及核心电压模块、实时时钟、系统跳线、系统时钟、核心板接口等;底板上提供了丰富的外设接口:
dm90O00A以太网卡接口、2个与PC机通信的UART(10M/100M)、l个LCD接口、触摸屏接口、128KB的NORFlash存储芯片、SD接口、IDE接口及USB接口等。
核心板和底板配合即构成了一个完整的硬件系统,它能够装载和运行嵌入式Linux操作系统。
也可以运行基于ARM核的其它操作系统。
图2-1配置交叉编译器PATH环境
2.3嵌入式Linux开发软件平台建立
软件开发平台是嵌入式开发的关键,嵌入式软件开发平台建立的目的是为了进行BootLoader移植、Linux内核移植以及GUI系统开发。
由于嵌入式硬件平台的存储空间有限、处理器频率较低,很难直接在嵌入式硬件式平台上建立Linux系统、安装嵌入式开发软件,因此只能采用嵌入式交叉开发环境来解决这个问题。
目前,嵌入式产品应用领域涉及移动通信、汽车、医疗、家电等很多领域。
在这些嵌入式产品上运行操作系统就成为了可能。
一直以来,很多企业花费了巨大成本研发了大量运行在PC上的软件产品。
如果将这些优秀的软件应用在嵌入式系统中,将会成为快速开发嵌入式系统,降低嵌入式产品开发成本,提高软件稳定性和安全性的重要途径。
Linux的出现正符合我们所有的要求,因为其源代码公开且免费,我们不仅可以保证操作系统中不存在任何黑洞和隐蔽的问题,而且无疑可以为企业节约一大笔开支,以最少的成本实现相同性能的产品。
所以学习基于ARM的Linux移植对于提高国产嵌入式产品的性能和降低生产成本具有重要作用。
2.3.1软件开发平台的二种平台的介绍
嵌入式Linux系统开发需要一台装有Linux操作系统的PC机,在此机器上运行交叉编译工具,Linux系统采用FC5,具体有以下几种方案:
l)采用VMWare。
VMWare是一个可运行在Windows平台的“虚拟PC”软件,它可以在一台机器上同时运行二个或更多个Windows、DOS、Linux系统。
VMWare主要的功能有:
不需要分区或重开机就能在同一台PC上使用两种以上的操作系统;完全隔离并且保护不同0S的操作环境以及所有安装在0S上面的应用软件和资料;不同的0S之间还能互动操作,包括网络、外设、文件分享以及复制粘贴功能;有复原功能;能够设定并且随时修改操作系统的操作环境,如:
内存、磁盘空间、外设等。
2)按通常的方法,在独立的分区上安装Linux操作系统。
但是安装2个系统需要用的grub,需要配置修改启动项,而且删除此Linux操作系统很麻烦。
对以上二种方案进行了尝试,得出以下结论:
对于内存不小于512M和主频较高的PC机适合使用VMWare,VMWare默认使用PC机一半的内存,内存较小PC机将会运行很慢,所以配置相对较低的PC机不适合采用此方案。
Cygwin虽运行在Windows平台,但其操作界面是一个控制台,没有实现图形操作界面,所以用起来不是很方便。
移植资料的编译是在本人电脑上完成的,编译的所用的是第1种方案,移植内容因使用的开发主机是机房已经装好的第2种系统方案,所以最后采用了方案2,即在新的分区上安装了Linux操作系统。
2.2.3准备交叉编译工具
由于开发主机的x86体系结构和目标机的ARM体系结构的差别,在开发主机上能运行的程序不能在目标机上运行,为了使在开发主机上编译通过的程序能够在目标机上运行,必须使用交叉编译工具链来编译程序。
构建交叉编译环境有很多个版本的交叉编译器可供选择,如2.95.3、3.3.2、4.3.2等等,最终选用了4.3.2版编译器编译内核而使用的3.3.2编译的U-Boot,因为很多商用软件都是在该环境下编译的,采用其它版本编译工具,有可能编译不通,会出现错误。
将cross-4.3.2-eabi.tar.bz2解压并安装到/usr/local/usr/arm/目录下。
命令如下:
#tar-jxvfcross-4.3.2-eabi.tar.bz2
图2-2配置交叉编译器PATH环境
在/etc/profile中修改PATH环境变量,添加工具链的路径。
执行#vim/etc/profile
exportPATH=/usr/local/arm/4.3.2/bin:
$PATH
如果出现在终端下输入:
arm-按tab键会出现arm-linux-就表示交叉编译环境搭建成功。
2.3.3串口控制台工具
Windows操作系统下有超级终端(Hyperterminal)工具,Linux操作系统下可以使用minicom工具。
由于Linux系统下的minicom不是图形窗口的界面,相较于windows下的超级终端,其配置操作稍麻烦一些,运行前需要对其进行如下配置。
以root身份登录操作系统,在Shell下执行“minicom-s”命令。
出现如图所示的配置菜单。
图2-3Minicon设置菜单
选择“Serialportsetup”菜单项,根据开发板的串口通讯设置,将
SerialDevice设置为/dev/ttyS0,默认为/dev/ttyS1;
Bps/Par/Bits设置为1152008N1;
HardwareFlowControl设置为NO。
如下图所:
图2-4Minicom参数设置
2.3.4配置主机的TFTP服务
TFTP(全称为TrivialFileTransferProtocol,中文名叫简单文件传输协议)。
它非常适合传送小型文件而且实现起来比较简单。
主机端TFTP服务配置,首先要获得root权限,这里把/tftpboot目录作为输出文件的目录,进入root模式修改才能生效。
也可以手工修改TFTP配置文件/etc/xinetd/tftp的内容如下,也可以达到这种效果。
#vim/etc/xinetd.d/tftp
进行如下修改:
图2-5tftp的修改参数
配置修改保存后,需执行下列命令使xinetd重新启动TFTP服务。
#servicexinetdrestart
配置完成后,建议简单测试一下TFTP服务是否可用,即自己TFTP自己,例如在宿主机上执行如下命令:
#cp/s3c2410_linux/Image/zImage/tftpboot
#tftp192.168.2.122
tftp>getzImage
tftp>q
退出tftp。
2.3.5配置主机的NFS服务
NFS服务的主要任务是把本地的一个目录通过网络输出,相当于MS系统上的文件共享服务,其它计算机可以远程挂接这个目录并访问文件。
配置文件/etc/exports来配置输出目录。
这里采用的配置如下:
1,创建一个NFS共享目录。
mkdir/rootfs
chmod777/roofs(修改权限)
2,配置NFS服务
#vimetc/exports
图2-6nfs的修改参数
/roofs*(rw,insecure,no_root_squash,no_all_squash)
然后按ESC再输入:
wq然后回车,保存退出。
3,运行重新启动脚本来启动服务。
#/etc/rc.d/init.d/nfsrestart
2.4本章小结
本章首先介绍了嵌入式Linux系统的体系结构,其软件系统部分包据系统层、支撑层、应用层,这些是本文将要实现的具体内容,以下各章顺序也是按该体系结构从底层到上层安排的。
接着描述了S3C6410微处理器的结构,介绍了其内部的典型控制器,还简要介绍了硬件系统结构,这些内容和后面设备驱动的移植有关。
最后,详述了嵌入式系统软件开发环境的建立方法、主机控制台的配置及网络服务的配置,以供后面开发使用。
3嵌入式Linux的引导BootLoader程序
引导BootLoader程序是为了初始化ARM平台上的硬件设备,引导内核,给内核提供ARM平台的硬件参数,还有为操作系统引导根文件系统。
3.1BootLoader概述
3.1.1BootLoader简介
BootLoader是系统加电后运行的第一段代码。
在一个基于ARM的嵌入式系统中,系统在上电或复位时通常都从地址0x0000000O处开始执行,而在这个地址处安排的就是系统的BootLoader。
一般它只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。
BootLoader主要用于初始化硬件设备,建立内存空间的映射图,将操作系统内核复制到内存中并跳转到内核入口。
下表列出了几种比较流行并且支持Linux操作系统的BootLoader并对它们进行了简单的比较。
表3-1显示开放源码的支持Linux的BootLoader
BootLoader
基本描述
Lilo
X86平台上Linux的BootLoader
Grub
GNU项目中Lilo的升级品
RedBoot
eCos的BootLoader
Blob
Lart项目中的Bootloader
U-Boot
通用BootLoader,功能最全
U-Boot是德国DENX小组开发的用于多种嵌入式CPU的BootLoader程序,是在ppcBoot以及ARMboot的基础上发展而来的,U-Boot不仅支持嵌入式Linux系统的引导,它还支持NetBSD、VxWorkS、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系统。
而且支持PowerPC、MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
它的功能也比较强大,支持tftp、nfs等多种网络协议,所以本论文将对U-Boot进行移植及使用。
3.1.2BootLoader的启动模式及其应用
BootLoader一般都要有两种启动模式:
Flash启动模式和下载模式。
Flash启动模式:
这种模式下,先要将内核映像和根文件系统写入Flash,设备启动时BootLoader将Flash中的内核及根文件系统映像读入SDRAM指定位置并跳转到内核入口执行内核,整个过程没有用户的介入。
下载模式:
这种模式下,Flash中可以没有内核和根文件系统。
设备启动时BootLoader通过串口或网络等通信方式从主机下载内核映像和根文件系统映像等。
这种方式可以有以下用途:
1)做为安装或更新手段。
通过BootLoader将要写入Flash的文件下载到内存,然后通过相应的命令,将其写到Flash指定的地址,在第一次安装内核与根文件系统时被使用,以后系统更新时也会使用BootLoader的这种工作模式。
2)做为调试手段。
将内核和根文件下载到内存指定位置,并配置好传递给内核的参数,可用BootLoader提供的命令直接运行内核,此种方式,可以避免将内核和根文件频繁写入Flash。
3)还可以直接以下载模式工作。
以这种方式工作,内核或文件系统可存储在远程主机上,系统不需配置较大的存储介质,和无盘工作站有点类似。
在系统移植时采用如图所示的工作模式调试内核和文件系统。
3.2NANDFlash和NORFlash的区别
NORFlash的特点是芯片内