基于ARM7TDMI的uClinux移植
发布日期:2011-05-04
先容了ARM7TDMI核与uClinux嵌入式操纵体系,并阐发了移植uClinux进程中遇到的题目。
在当前的数字信息技能和网络技能高速生长的PC(Pos+-PC)期间,嵌入式体系已经遍及的渗入渗出到人们的生产,生存等各个方面中。随着国表里嵌入式产品的进一步开辟和推广,嵌入式技能越来越和人们的生存精密相连合。嵌入式体系技能涉及到硬件软件技能,已经成为如今最热门的技能之一。
1 ARM与ARM7TDMI处理惩罚器
ARM即Advanced RISC Machines的缩写,由英国Advanced RISC Machines (ARM) Limited公司计划。ARM公司是计划公司,本身不生产芯片,只提供知识产权(IP)。ARM公司是32 bit嵌入式RISC微处理惩罚器范畴的领先提供商,在天下范畴内有高出100个相助搭档——包括半导体产业的闻名公司,从而出现了大量的开辟东西和丰富的资源,它们共同包管了基于ARM处理惩罚器核的计划可以很快投入市场。
ARM处理惩罚器的风雅性能使体系计划者可以得到完全餍足其确切请求的办理方案。借助于来自第三方开辟者遍及的支持,计划者可以利用丰富的标准开辟东西和ARM优化的应用软件。
ARM32 bit体系布局如今被公以为是业界领先的32 bit嵌入式RISC微处理惩罚器布局。全部ARM处理惩罚器共享这一体系布局。这可确保当开辟者转向更高性能的ARM处理惩罚器时,在软件开辟上可得到最大的回报。
当前ARM体系布局的扩充包括:
① Thumb: 16 bit指令集,用以改进代码密度。
② DSP:用于DSP应用的算术运算指令集。
③ Jazeller:容许直接实行Java字节码的扩充。
ARM处理惩罚器本身是32 bit计划,但也配置Thumb16 bit指令集,以容许软件编码为更短的16 bit指令。与等价的32 bit代码相比,占用的存储器空间节流高达35%,然而保存了32 bit体系全部的上风(比方,访问一个全32 bit地点空间)。Thumb状态与正常的ARM状态之间的切换是零开销的。ARM的Jazelle技能提供了Java加快,可得到比基于软件的Java假造机(JVM)高得多的性能。与划一的非Java加快核相比,功耗低落80%。
根据内核的差别,ARM处理惩罚器分为ARM7、ARM9、ARM9E、ARM10、SecurCore。
ARM7系列为低功耗32 bit核,最实用于对价位和功耗敏感的斲丧类应用。ARM7具有:
① 嵌入式ICE-RT逻辑;
② 非常低的功耗;
③ 能提供0.9MIPS/MHZ的三级流水线和冯·诺依曼布局
ARMT系列包括:ARM7TDMI、ARM7TDMIS,ARM7EJ、ARM720T布局
ARM7TDMI是天下上遍及利用的32 bit嵌入式RISC处理惩罚器。它是如今用于低真个ARM处理惩罚器核,且应用范畴很广。
ARM7TDMI各字原义如下
① ARM7: ARM6 32整型核的3V兼容版本
② T: 16 bit压缩指令集Thumb
③ D:在片调试(debug)支持下,容许处理惩罚器相应调试恳求停息。
④ M:加强型乘法器(multiplier),与过去处理惩罚器相比性能更高,孕育产生全64 bit结果。
⑤ I:嵌入式ICE硬件提供片上断点和调试点支持。
2 硬件计划
本项目测试板采取Samsung公司的S3C4510B芯片,再共同8 M SDRAM和2 M Flash以及外围接口芯片。
Samsung公司的S3C4510B 16/31 bit RISC处理惩罚器为网络配置提供了高性价比和高性能的微处理惩罚器办理方案。为了低落整个体系的本钱,S3C4510B将外围配置和处理惩罚器内核集成在一块芯片上。S3C4510B提供以下外围配置:8 k bit内部cache/SRAM,2个通道UART,2个通用DMA,18个可编程I/O口,2个通道HDLC,1个通道MII接口Ethernet控制器,另有是DRAM/SDRAM控制器,ROM/SRAM控制器,I2C串行总线,停止控制器,PLL时钟产生器,2个可编程定时器。
S3C4510B采取ARM7TDMI核,208个脚QFP封装。最高时钟50 MHz,它的低功耗、强大的网络性能使其分外实用于网络配置范畴。
3 ARM开辟东西——ARM SDT
硬件测试板开辟完成以后,必要对硬件体系举行测试。本项目采取ARM公司的ARM Software Development Kit 2.5软件。它是ARM公司为方便用户在ARM芯片上举行应用软件开辟而推出的一整套集成开辟东西。
ARM SDT包括一套完备的应用软件东西:
① armcc:ARM C编译器,具有优化成果,兼容ANSI C。
② tcc:Thumb的C编译器,同样具有优化成果兼容ANSI C。
③ armasm::支持ARM和Thumb的汇编器
④ armLink:ARM链接器,链接1个和多个目标文件,终极天生ELF格局的可实行映像文件。
⑤ APM:Application Project Manager,ARM工程办理器,图形界面,认真办理源文件,举行编辑、编译、链接,并终极天生可实行映像文件。
⑥ ADW:Application Debugger Windows,ARM调试东西。
此中ADW提供一个C和汇编文件源文件的源代码级调试环境。在此环境下也可以实行汇编指令级调试,同时可以观察寄存器,存储器和栈等调试信息。
ARM SDT还提供一些实用步伐,如fromelf、armprof、decaxf等。这些实用步伐可以将ELF文件转换为差别的格局,实行步伐阐发,以及分析ARM可实行文件格局等。
ARM SDT提供指令集模仿器,可以方便用户在PC上完成大略的调试事变。但是由于指令集模仿器与真实的硬件环境相差很大,纵然模仿器通过的步伐,也有大概无法在真实的硬件环境下运行。用户终极必须在硬件平台上完成整个应用开辟。
颠末测试,硬件测试板餍足嵌入式uClinux的各项硬件请求。由于ARM SDT不支持uClinux操纵体系,在移植uCliuux时,将采取GNU交错编译调试东西。
4 uClinux的嵌入
uClinux是专为无存储器办理单位(MMU)的微控制器打造的嵌入式Linux操纵体系。uClinux起首被移植到摩托罗拉的MC68328 DragonBall集成微处理惩罚器上。从那以后, uClinux越来越受到业界的青睐, 被移植到更多的无MMU芯片上。如今,uClinux已告成移植到ARM7TDMI微处理惩罚器上。
由于uClinux重要是针对无MMU 微处理惩罚器开辟的,大多数内核的二进制代码和源代码都被重写,但保存了Linux 操纵体系的重要好处:稳固性、优秀的网络本领以及良好的文件体系支持。
uClinux的内存办理与传统Linux区别最大的地方在标准Linux是针对有MMU的处理惩罚器计划的。在这种处理惩罚器上,假造地点被送到MMU,把假造地点映射为物理地点。通过付与每个任务差别的假造物理地点转换映射,支持差别任务之间的掩护。对付uCLinux来说,其计划是针对没有MMU的处理惩罚器,即uCLinux不克不及利用处理惩罚器的假造内存办理技能。uCLinux仍旧采取存储器的分页办理,体系在启动时把实际存储器举行分页,在加载应用步伐时步伐分页加载。但是由于没有MMU办理,以是uCLinux实际上是采取实存储器办理战略的。这一点影响了体系事变的很多方面。uCLinux体系对付内存的访问是直接的,全部步伐中访问的地点都是实际的物理地点。操纵体系对内存空间没有掩护,各个进程实际上共享一个运行空间。一个进程在实行前,体系必须为进程分派充足的连续地点空间,然后全部加载主存储器的连续空间中。
移植uClinux重要必要办理以下四个题目
① 交错编译环境的创建
对付差别体系布局,GNU都提供了相应的开辟软件包。这可以到网上查找,有些是源代码包,下载后要颠末GCC的编译才华应用;有些是应用步伐包,安置后即可利用。安置完了arm-elf-tool东西包以后,Linux中就有了基于arm体系布局的编译器、链接器、调试器以及一些实用步伐,以后编译内核,制作文件体系都要依赖交错编译体系。
② uCLinux的内核加载方法的题目
uCLinux的内核有两种可选的运行方法:可以在Flash上直接运行;也可以加载到内存中运行。后者可以淘汰内存必要。
Flash运行方法是把内核的可实行映像文件烧制到flash上,体系启动时从Flash的某个地点开始逐句实行。这种要领实际上是很多嵌入式体系采取的要领。
内核加载方法是把内核的压缩文件存放在Flash上,体系启动时读取压缩文件在内存里解压,然后开始实行,这种方法相对巨大一些,但是运行速率大概更快(RAM的存取速率要比Flash高)。同时这也是标准Linux体系采取的启动方法。这里必要编写一个Bootloader软件。Bootloader软件实现的成果包括开机寄存器的配置、内核与文件体系的加载、转达硬件与启动参数给内核。网上有很多Bootloader可以下载,但是都必要根据本身测试板硬件的信息举行改写。与PC机上的加载进程做比拟,Bootloader的成果雷同BIOS+Linux LILO。
③ uClinux内核的编译
网上有很多uClinux源代码,最闻名的便是uClinux官方网站。从网上下载一个uClinux的源代码,一样平常是压缩格局的。将其解压,比方解压在/home目次下,这时就会孕育产生一个/home/uClinuxdist目次,进入/home/uClinux-dist目次,然后依次键入:
makemenuconfig
makedep
make
末了在/home/uClinuxdist/image目次中孕育产生Image.rom,Image.ram,Romfs.Img。它们分别是内核的映像、内核的调试文件、文件体系的映像文件。
在makemenuconfig时,步伐会依次出现开辟平台,内核配置,文件体系应用步伐的配置界面,可以根据本身的必要举行配置。
④ uCLinux的根(root)文件体系及其加载
uCLinux体系采取romfs文件体系,这种文件体系相对付一样平常的ext2文件体系请求更少的空间。空间的节省来自于两个方面:起首内核支持romfs文件体系比支持ext2文件体系必要更少的代码;其次romfs文件体系相对大略,在创建文件体系超等块(superblock)必要更少的存储空间。Romfs文件体系不支持动态擦写生存,对付体系必要动态生存的数据采取假造ram盘的要领举行处理惩罚(ram盘将采取ext2文件体系)。同时uClinux内核也支持种种文件体系,比方,网络文件体系,在必要时可以举行mount。
办理了上述题目,uClinux可以告成的被移植到测试板中。基于Linux的应用步伐较多且源代码开辟,因此基于uClinux的产品可以举行快速开辟。
uClinux的重要特色包括:通用的Linux API;uClinux kernel < 600 kB;文件体系 < 600 kB;完备的TCP/IP 协议堆栈;支持大量别的的网络协议;支持种种文件体系,包括 NFS、ext2、ROMfs、JFFS、MS-DOS以及FAT16/32。
5 小结
uClinux是Linux操纵体系的一个分支,它保存了Linux稳固和优秀的网络本领以及良好的文件体系支持的特点,同时又降服了Linux必须依赖与MMU的不敷,是一种良好的嵌入式操纵体系。同时ARM7TDMI又是一种高效、低功耗的RISC处理惩罚器。二者的连合将使基于ARM7TDMI和uClinux的嵌入式产品有更高的竞争力。
致谢:对同一项目组的李江,万晨研,袁爱军同砚在此表现谢谢。
参考文献
[1]马忠梅、马广云、 徐英慧、 田泽编着。ARM嵌入式处理惩罚器布局与应用底子[M]。北京:北京航空航天大学出版社,2002
[2] Samsung Electronics。CPUS3C4510BREV1.pdf
[3] Samsung Electronics。CPUANS34510B.pdf
[4] ARM Limited。ARM Software Development Toolkit Version 250 Reference Guide
[5] ARM Limited。ARM Software Development Toolkit Version 250 User Guide
[6] 王云飞着。uClinux+Coldfire.2002-5-08。
[7]uClinux源代码README文件
[8]uClinux源代码Documents目次