用GNU工具链开发嵌入式linux系统引导程序
第32卷第1期2006年1月
中国测试技术
CHINAMEAsIJREMENTTECHNOLOGY
V01.32No.1
Jan.2006
用GNU工具链开发嵌入式linux系统引导程序
冯进文,杨荣松
(四川大学制造科学与工程学院,四川成都610065)
摘要:操作系统引导程序--Bootl—oader是嵌入式系统软件开发的第一个环节,在整个开发过程中占有极重要的地位。本文详细论述了BootI∞ader的运行机理,并以在三星公司的S3C44BOX处理器上uClinux的引导程序的开发为实例,着重分析了FLASH,RAM的存储空间分配,介绍了GNU工具链的开发流程、可执行映象文件在存储空间的定位及uClinux内核的相关配置。
关键词:GNU;uClinux;S3C44BOX;BootLoader
中图分类号:TP316.89文献标识码:A文章编号:1672—4984(2006)01—0101.03
Developingthebootl_zmderofembeddedlinuxsystembyGNUtoolschain
FENGJin—Well,YANGRong-song
(SchoolofManufacturingScienceandEngineering,SichuanUniversity,Chengdu610065,China)
Abstract:Osbootstrapprogram(BootI.oader)isthefirststepindevelopingsoftwareofembeddedsystem.Itisveryimportantinthewholedevelopingprocess.ThisarticlediscussedthemechanismofBootLoaderindetail.TakingthedevelopmentofuClinuxbootstrapprogramto
S3C44BOXprocessorof&uT峭eorpasexample,itanalyzedthememoryallocationofFLASHandRAMexpressly,introducedthedevelopmentprocessofGNU
andthelocationofexoc3uteimagefilesandrelatedconfigurationtothekemelofuClinux.
Key
words:GNU;uClinux;s3C44BOX;BootLoader
1引言
当前,遵循GNU通用许可证协议GPL(GeneralPublicLience)的Linux操作系统广泛应用于嵌入式领域。GNU(GNU’SNotUnix)项目是由被尊称为自由软件运动“传教士”的RichardMatthewStallman于1984年发起的。它是一个以开发自由开放的操作系统,并以此向计算机用户提供自由开放的选择为目标的项目。嵌入式Linux系统从软件的角度可分为四个层次:引导加载程序(BootLoader),Linux内核,文件系统和用户应用程序。其中BootI_oader是系统上电复位后,内核启动之前执行的一段程序,其功能是初始化硬件设备后将操作系统内核从固态存储设备装载到RAM中并引导其运行,它是嵌入式系统开发的一个难点,在整个开发中占有相当大的分量。
由于高度依赖CPU体系结构和目标板的硬件配置,并没有一个通用的Bootloader程序可供开发者使用,因此需要自行开发或移植。尽管目前有可供移植的Bootloader,其中比较流行的是blob和U~boot,
收稿日期:2005.06-30;收到修改稿日期:2005.09.07支持多种CPU体系结构。但由于目标板硬件配置的多样性,移植难度并不比自行开发低,而灵活性不如后者。本文首先分析BootLoader的运行机制,给出BootLoader的一般开发方法,然后以三星公司的S3CA4BOX为硬件平台,实现对uClinux的引导。
2BootLoader运行机制
一般将BootLoader分为Stagel和Stage2两部分,依赖于CPU体系结构的代码放在StageI中,一般用汇编语言编写。Stage2用c编写以使其具有较好的可移植性和可读性,且容易实现复杂的功能。其工作流程如图1所示。
3uClinuxBootIx)adelF在s3a480X上的实现uClinux是当前比较流行的一个嵌入式Linux操作系统,其继承了linux的高可靠性,有丰富的网络功能,支持众多的硬件,具有精简和可裁剪的内核。
典型的嵌入式系统硬件平台一般包括处理器、RAM(程序运行空间)、FLASH(存放代码)和必要的外部接口如串口和以太网控制芯片。S3CA4BOX是三星公司一款ARM7TDMI内核的处理器,无MMU单元。其提供8个片选端(nGCS0.nGCS7),内置SDRAM控制器。笔者的系统中采用了1片8Mxl6
万方数据万方数据