基于ARM7的uClinux移植(嵌入式课程设计)_第1页
基于ARM7的uClinux移植(嵌入式课程设计)_第2页
基于ARM7的uClinux移植(嵌入式课程设计)_第3页
基于ARM7的uClinux移植(嵌入式课程设计)_第4页
基于ARM7的uClinux移植(嵌入式课程设计)_第5页
已阅读5页,还剩35页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ARM7的UCLINUX移植1引言随着计算机技术的发展,嵌入式系统已不仅仅属于计算机领域的一个研究热点,在电子、工业控制、航空航天等领域都有广泛的应用。嵌入式设备应用广泛,几乎包括了我们周围的所有电器设备PDA、手机、机顶盒、汽车、微波炉、自动取款机等。和通用计算不同的是嵌入式系统针对的是具体的专用系统,一般也都具有成本和空间的敏感性,它的硬件和软件都必须高效率的设计。在航空航天、医疗等特殊应用领域还要求做到很高的安全可靠性。嵌入式系统还可以根据任务灵活的增减软硬件。UCLINUX在官方网站WWWUCLINUXORG中有源代码提供,同时也有文档说明所支持的体系结构。结合实际的应用,在众多的体系结构中选择一种。下面介绍一下在移植UCLINUX中会遇到的一些关键问题。(1)交叉编译环境的建立移植UCLINUX必须有一台PC机,安装了LINUX操作系统。同时还要有一块测试板,测试板的体系结构UCLINUX必须支持。对于不同体系结构,GNU都提供了相应的开发软件包。这可以到网上查找,有些是源代码包,下载后要经过GCC的编译才能应用有些是应用程序包,安装后即可使用。安装完了工具包后,LINUX中就有了基于该体系结构的编译器,链接器,调试器以及一些实用小工具,例如反汇编,反编译等,以后编译UCLINUX内核,制作文件系统都要依赖交叉编译系统。(2)UCLINUX的内核加载方式的问题UCLINUX的内核有两种可选的运行方式可以在FLASH上直接运行,也可以加载到内存中运行。前者可以减少内存需要。FLASH运行方式把内核的可执行映像文件烧到FLASH上,系统启动时从FLASH的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。内核加载方式把内核的压缩文件存放在FLASH上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快RAM的存取速率要比FLASH高。同时这也是标准LINUX系统采用的启动方式。这里需要编写一个BOOTLOADER软件。BOOTLOADER软件实现的功能包括开机寄存器的配置,内核与文件系统的加载,传递硬件与启动参数给内核。网上有许多BOOTLOADER可以下载,但是都需要根据自己测试板硬件的信息进行改写。与PC机上的加载过程做对比,BOOTLOADER的功能类似BIOSLINUXLILO。(3)UCIINUX内核的编译网上有许多UCLINUX源代码,最著名的就是UCLINUX官方网站。从网上下载一个UCLINUX的源代码,根据自己的需要对内核进行裁减,用交叉编译器对内核进行编译。(4)UCLINUX的根ROOT文件系统制作及其加载UCLINUX系统采用OMFS文件系统,这种文件系统相对于一般的EXT2文件系统要求更少的空间。空间的节约来自于两个方面首先内核支持ROMFS文件系统比支持EXT2文件系统需要更少的代码其次ROMFS文件系统相对简单,在建立文件系统超级块(SUPERBLOCK需要更少的存储空间。ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟RAM盘的方法进行处理RAM盘将采用EXT2文件系统。同时UCLINUX内核也支持各种文件系统,例如,网络文件系统,在需要时可以进行MOUNT。在编译内核的同时也可以选择编译文件系统中的应用程序。在源代码包中有许多应用程序源代码,可以根据自己的需要进行选择。由于基于LINUX的应用程序较多且源代码开发,因此基于UCLINUX的产品可以进行快速开发,只要能够找到相应的源代码,在制作文件系统时编译进去就可以了。2UCLINUX概述LINUX是跨平台的操作系统,可支持X86,MIPS,ARM等各种内核,但无论哪一种内核,LINUX运行都必须有内存管理单元。为了解决没有内存管理单元芯片如何运行LINUX,GNU组织开发了UCLINUX,一种类LINUX的操作系统。UCLINUX是专为无存储器管理单元MMU的微控制器打造的嵌入式LINUX操作系统。UCLINUX首先被移植到摩托罗拉的MC68328DRAGONBALL集成微处理器上。从那以后,UCLINUX越来越受到业界的青睐,被移植到更多的无MMU芯片上。UCLINUX是嵌入式LINUX的一个分支,具有开源的代码,便于扩充实时性的要求,很高的适应性和可靠性,成熟的开发工具和可灵活配置的内核。一个嵌入式UCLINUX系统由下面三个基本部分组成引导程序、UCLINUX内核由内存管理、进程管理和中断处理等构成和文件系统。UCLINUX可以通过定制使内核小型化,还可以加上GUI图形用户界面和定制应用程序,并将其放在ROM,RAM,FLASH或DISKONCHIP中启动。由于嵌入式UCLINUX操作系统的内核定制具有高度灵活性,开发者可以很容易地对其进行按需配置,来满足实际应用的要求。下面的内容主要介绍UCLINUX内核、启动、文件系统的原理。21UCLINUX内核的基本原理UCLINUX内核的结构如下图所示图(1)UCLINUX内核结构框图该内核的结构图代表了内核的功能结构,与LINUX基本相同,不同的只是对内存管理和进程管理进行了改写,以满足无MMU处理器的要求。211内核源文件组织的介绍将UCLINUX内核源文件解压以后就形成了源文件的根目录,以手头上的平台为例,产生UCLINUXSAMSUNG根目录。UCLINUXSAMSUNG根目录下有以下几个子目录和文件,下面分别介绍/BIN存放用户最常用的基本程序/CONFIG存放UCLINUX配置文件/DOCUMENTATION存放UCLINUX的HOWTO文档和FAQ文档/FREESWAN用于IPSEC方面的应用程序/IMAGES用于存放编译后生成的文件/LIB存放各类库/LINUX20X存放LINUX20版本的内核源文件/LINUX24X存放LINUX24版本的内核源文件/TOOLS存放工具说明文档和其他杂项/UCLIBC存放UCLINUX的库文件/USER存放用户的各种应用程序/VENDORS存放有关各种处理器的文件下面详细介绍内核源文件的结构,我们以内核24X为例介绍如下该版本的UCLINUX核心源程序安装在/UCLINUXSAMSUNG/LINUX24X目录下。LINUX内核版本编号有约定任何偶数的核心例如2030都是一个稳定的核心,而任何奇数的核心例如2142都是一个开发中的核心。内核源程序的文件按树形结构进行组织,在内核源程序树的最上层你会看到这样一些目录1ARCHARCH子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如ARM就是关于ARMCPU体系结构的内核,ARMNOMMU就是关于ARM7TDMI的内核。2INCLUDEINCLUDE子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在INCLUDE/LINUX子目录下,与ARM7TDMICPU相关的头文件在INCLUDE/ASMARMNOMMU子目录下。3INIT这个目录包含核心的初始化代码注不是嵌入式系统的引导代码,而是内核的启动代码,包含两个文件MAINC和VERSIONC,这是研究初始化和内核如何工作的一个非常好的起点。4MM这个目录包括所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等,而和体系结构相关的内存管理代码则于ARCH/MM/。5MMNIMMU这个目录和MM目录相同,不同的就是该目录是为无MMU的处理器设计的。6KERNEL主要的核心代码,此目录下的文件实现了大多数UCLINUX系统的内核函数,其中最重要的文件当属SCHEDC,同样,和体系结构相关的代码在ARCH/KERNEL中。7DRIVERS放置系统所有的设备驱动程序,每种驱动程序又各占用一个子目录,如/BLOCK下为块设备驱动程序,比如IDEIDEC。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看DRIVERS/BLOCK/GENHDC中的DEVICESETUP。它不仅初始化硬盘,也初始化网络因为安装此文件系统的时候需要网络。8其他如LIB放置核心的库代码,NET是核心与网络相关的代码,IPC这目录包含核心的进程问通信的代码,FS为所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如FAT和EXT2,SCRIPTS目录包含用于配置核心的脚本文件等。一般在每个目录下都有一个MAKEFILE文件,这两个文件都是编译时使用的辅助文件仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助,而且在有的目录下还有README文件,它是对该目录下的文件的一些说明,同样有利于我们对内核原码的理解。212UCLINUX内核源代码分析UCLINUX是LINUX操作系统的一种,是由LINUX20内核发展来的,是专为没有MMU的微处理器如ARM7TDMI,COLDFIRE等设计的嵌入式LINUX操作系统。因此,在UCLINUX上实现多任务功能则是一个非常棘手的问题。然而,UCLINUX上运行的大多数用户应用程序不要求多任务功能。另外,大多数内核的二进制代码和源代码都被重写,这进一步缩减了UCLINUX内核的代码。UCLINUX的内核要比原LINUX20内核小的多,但保留了LINUX操作系统的主要优点稳定性,优异的网络能力以及优秀的文件系统支持。UCLINUX的主要特色通用的LINUXAPIUCLINUXKERNELPROF_SHIFTSIZEPROF_LENSIZEOFUNSIGNEDINTPAGE_SIZE1PROF_BUFFERUNSIGNEDINTALLOC_BOOTMEMSI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论