




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ARM7的uClinux移植1引言 随着计算机技术的发展,嵌入式系统已不仅仅属于计算机领域的一个研究热点,在电子、工业控制、航空航天等领域都有广泛的应用。嵌入式设备应用广泛,几乎包括了我们周围的所有电器设备:PDA、手机、机顶盒、汽车、微波炉、自动取款机等。和通用计算不同的是嵌入式系统针对的是具体的专用系统,一般也都具有成本和空间的敏感性,它的硬件和软件都必须高效率的设计。在航空航天、医疗等特殊应用领域还要求做到很高的安全可靠性。嵌入式系统还可以根据任务灵活的增减软硬件。uClinux在官方网站(www.uC)中有源代码提供,同时也有文档说明所支持的体系结构。结合实际的应用,在众多的体系结构中选择一种。下面介绍一下在移植uClinux中会遇到的一些关键问题。(1)交叉编译环境的建立 移植uClinux必须有一台PC机,安装了Linux操作系统。同时还要有一块测试板,测试板的体系结构uClinux必须支持。对于不同体系结构,GNU都提供了相应的开发软件包。这可以到网上查找,有些是源代码包,下载后要经过GCC的编译才能应用;有些是应用程序包,安装后即可使用。安装完了工具包后,Linux中就有了基于该体系结构的编译器,链接器,调试器以及一些实用小工具,例如反汇编,反编译等,以后编译uClinux内核,制作文件系统都要依赖交叉编译系统。(2)uCli nux的内核加载方式的问题uClinux的内核有两种可选的运行方式:可以在Flash上直接运行,也可以加载到内存中运行。前者可以减少内存需要。Flash运行方式:把内核的可执行映像文件烧到Flash上,系统启动时从Flash的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。 内核加载方式:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(RAM的存取速率要比Flash高)。同时这也是标准Linux系统采用的启动方式。这里需要编写一个Bootloader软件。Bootloader软件实现的功能包括开机寄存器的配置,内核与文件系统的加载,传递硬件与启动参数给内核。网上有许多Bootloader可以下载,但是都需要根据自己测试板硬件的信息进行改写。与PC机上的加载过程做对比,Bootloader的功能类似BIOS+ Linux LILO。(3)uC I i nux内核的编译 网上有许多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首先被移植到摩托罗拉的MC68328 DragonBall集成微处理器上。从那以后,uClinux越来越受到业界的青睐,被移植到更多的无MMU芯片上。 uClinux是嵌入式linux的一个分支,具有开源的代码,便于扩充实时性的要求,很高的适应性和可靠性,成熟的开发工具和可灵活配置的内核。一个嵌入式uClinux系统由下面三个基本部分组成:引导程序、uClinux内核(由内存管理、进程管理和中断处理等构成)和文件系统。uClinux可以通过定制使内核小型化,还可以加上GUI(图形用户界面)和定制应用程序,并将其放在ROM, RAM, FLASH或Disk On Chip中启动。由于嵌入式uClinux操作系统的内核定制具有高度灵活性,开发者可以很容易地对其进行按需配置,来满足实际应用的要求。下面的内容主要介绍uClinux内核、启动、文件系统的原理。2.1 uClinux内核的基本原理 uClinux内核的结构如下图所示: 图(1)uClinux内核结构框图该内核的结构图代表了内核的功能结构,与Linux基本相同,不同的只是对内存管理和进程管理进行了改写,以满足无MMU处理器的要求。2.1.1内核源文件组织的介绍 将uClinux内核源文件解压以后就形成了源文件的根目录,以手头上的平台为例,产生uClinux-Samsung根目录。uClinux-Samsung根目录下有以下几个子目录和文件,下面分别介绍: /bin 存放用户最常用的基本程序 /config 存放uClinux配置文件 /Documentation 存放uClinux的HOWTO文档和FAQ文档 /freeswan 用于Ipsec方面的应用程序 /images 用于存放编译后生成的文件 /lib 存放各类库 /linux-2.0.x 存放linux-2.0版本的内核源文件 /linux-2.4.x 存放linux-2.4版本的内核源文件 /tools 存放工具说明文档和其他杂项 /uClibc 存放uClinux的库文件 /user 存放用户的各种应用程序 /vendors 存放有关各种处理器的文件 下面详细介绍内核源文件的结构,我们以内核2.4.x为例介绍如下: 该版本的uCLinux核心源程序安装在/uClinux - Samsung/linux - 2.4.x目录下。Linux内核版本编号有约定:任何偶数的核心(例如2.0.30都是一个稳定的核心,而任何奇数的核心(例如2.1.42)都是一个开发中的核心。内核源程序的文件按树形结构进行组织,在内核源程序树的最上层你会看到这样一些目录: 1) Arch::arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如ARM就是关于ARM CPU体系结构的内核,ARMNOMMU就是关于ARM7TDMI的内核。 2) Include::include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在include/Linux子目录下,与ARM7TDMI CPU相关的头文件在include / asm-armnommu子目录下。 3) Init:这个目录包含核心的初始化代码(注:不是嵌入式系统的引导代码,而是内核的启动代码),包含两个文件main. c和Version.c,这是研究初始化和内核如何工作的一个非常好的起点。 4) Mm:这个目录包括所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等,而和体系结构相关的内存管理代码则于arch/*/mm/。5) Mmnimmu:这个目录和mm目录相同,不同的就是该目录是为无MMU的处理器设计的。 6) Kernel:主要的核心代码,此目录下的文件实现了大多数uClinux系统的内核函数,其中最重要的文件当属sched. c,同样,和体系结构相关的代码在arch/*/kernel中。 7) Drivers:放置系统所有的设备驱动程序,每种驱动程序又各占用一个子目录,如/block下为块设备驱动程序,比如ide(ide. c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd. c中的device-setup()。它不仅初始化硬 盘,也初始化网络.因为安装此文件系统的时候需要网络。 8)其他:如Lib放置核心的库代码,Net是核心与网络相关的代码,Ipc这目录包含核心的进程问通信的代码,Fs为所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2, Scripts目录包含用于配置核心的脚本文件等。一般在每个目录下都有一个Makefile文件,这两个文件都是编译时使用的辅助文件.仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助,而且在有的目录下还有Readme文件,它是对该目录下的文件的一些说明,同样有利于我们对内核原码的理解。2.1.2 uClinux内核源代码分析 uClinux是Linux操作系统的一种,是由Linux2.0内核发展来的,是专为没有MMU的微处理器(如:ARM7TDMI,Coldfire等)设计的嵌入式Linux操作系统。因此,在uClinux上实现多任务功能则是一个非常棘手的问题。然而,uClinux上运行的大多数用户应用程序不要求多任务功能。另外,大多数内核的二进制代码和源代码都被重写,这进一步缩减了uClinux内核的代码。uClinux的内核要比原Linux 2.0内核小的多,但保留了Linux操作系统的主要优点:稳定性,优异的网络能力以及优秀的文件系统支持。 uClinux的主要特色: 通用的Linux API uClinux kernel512 KB uClinux kernel+工具=prof_shift; size=prof_len*sizeof(unsigned int)+PAGE_SIZE-1;prof_buffer=(unsigned int*)alloc_bootmem(size); kmem-cache init();sti(); calibrate_delay();#ifdefCONFIG_BLK_DEV_INITRDif(initrd_start&!initrd_below_startes_ok&initrd_startmin_low-pfnPAGE_SHIFT) printk(KERNee_CRITinitr_overwritten (0x%081x0x%081x)-” disabling it.n,initrd_start,min_low_pfnPAGE_SHIFT);initrd_start=0; #endifmem_init(); /内存初始化kmeycache_sizes_ init();pgtable_cache init();mempages=nwm_physpages; fork_init(mempages);proc_caches_ init();vfs_caches init(mempages);buffer_init(mempages);page_ cache init(mempages); #if defined(CONFIGes_ARCH_S390) ccwcache_ init();#endif signals_ init();#ifdef CONFIG_PROC FS proc_ root init();#endif#if defined(CONFIG_SYSVIPC) ipc_ init();#endif Check_dugs(); printk(POSIX conformance testing by UNIFIXn);/*We count on the initial thread going ok*Like idlers init is an unlocked kernel thread, which will*make syscalls (and thus be locked).*/smp init();rest_ init();上面的程序运行后内核初始化过程基本完成,接下去就是init进程的构造了。2.3嵌入式uClinux文件系统构造及分析 许多嵌入式系统不存在一个磁盘,但是嵌入式uClinux也可以运行。文件系统可以随同内核一起被打包并在启动时作为一个文件系统的映像被加载。对简单系统来说,这已经胜任。 文件系统可以放在一个传统磁盘驱动中,但是一个小的RAM DISK常常可以很好地存放暂时性文件(易失性文件)。闪存有一个引导块,它存放了CPU上电后运行的第一个软件,可以是uClinux的引导程序,也可以是自己编的bootloader。Clinux的内核可以被引导程序从闪存中拷贝到RAM中。闪存也可以作为文件的存储介质,必要时写入一些需要保存的数据。 最后,对于网络上的嵌入式系统(有网络支持的嵌入式系统),uClinux支持NFS(Network File System)。这一着打开了在一个网络支持系统中实现各种增值特征的通道。首先它允许通过网络加载各种应用程序。由于用在每一个嵌入式系统上的软件可以从一个公用的服务器上加载,这在控制软件的修订或升级中是很重要的。在系统运行的过程中,导入和导出数据,配置,状态信息的一个备份也很有用。对用户监控而言,这是一个非常强大的特征。举例来说,一个嵌入式系统可能装配了一个RAM DISK,它包含着与系统当前状态的更新维持一致的(状态)文件。那么别的嵌入式系统仅需通过网络把这个RAM DISK作为远程磁盘mount过来便可以访问那些位于远端RAM DISK中的状态文件。这也允许在另一台机器上的WEB服务器借助简单的CGI脚本来访问那些状态信息。运行在其他机器上的应用程序包能够很容易地访问这些数据。 文件系统是uClinux操作系统的重要组成部分,uClinux文件系统组成了所有数据的基础。系统由多个目录组成,根据不同的安装选择,目录可以成为不同的文件系统。系统中提供了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高炮拆除施工方案
- 高中物理【超重和失重】名校模拟题-练习题
- 外地车上海年检委托书
- 招商部门工作计划
- 高一语文下册文学类文本阅读专项训练(含答案)
- 背提包产品质量省监督抽查实施细则
- 使用劳务派遣管理制度
- 供水企业材料管理制度
- 供水抢修公司管理制度
- 供热公司检修管理制度
- 免于现场检查的申请书
- NB/T 11123-2023煤矿安全双重预防机制规范
- 内墙抹灰安全技术交底
- 中学美术校本教材《素描》
- 上海市2023年初中毕业物理课程终结性评价指南
- 中国教师发展基金会国家教师科研基金规划全国重点课题实施指南
- (通桥【2018】8370)《铁路桥梁快速更换型伸缩缝安装图》
- “双减”背景下的初中数学课堂教学设计与思考 论文
- 义务教育语文课程标准(2022)测试题带答案(20套)
- (医院护理论文)护理本科生学习适应现状及影响分析
- 保护性约束完整版
评论
0/150
提交评论