用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

 万方数据万方数据

相关主题
相关文档
最新文档