嵌入式,可信计算
2010 年 第19卷 第 10 期 计 算 机 系 统 应 用
嵌入式Linux系统在ARM平台上的构建
①
李宗海1 陈蜀宇2 李海伟1
(1.重庆大学 计算机学院 重庆 400044;2.重庆大学 软件学院 重庆 400044)
摘 要: 嵌入式系统在人们的日常生活中使用越来越广泛。主要研究了如何在ARM平台上构建嵌入式系统,
讲述了u-boot的工作原理、启动流程,详细介绍了Linux内核、u-boot的裁剪和编译以及根文件系统的制作过程,最后在SBC2410硬件平台上成功的构建了嵌入式Linux系统。
关键词: ARM; 嵌入式Linux; 内核移植; u-boot移植; busybox;
Construction of the Embedded Linux System Based on ARM Platform
LI Zong-Hai1, CHEN Shu-Yu2, LI Hai-Wei1
(puter Science Department, Chongqing University, Chongqing 400044, China; 2.Software Engineer Department, Chongqing University, Chongqing 400044, China)
Abstract: The embedded system, installed in the micro electronic products, is used widely in our daily life. The paper
illustrates the process of building a scalable embedded system on the ARM platform effectively. In the beginning, the theory of u-boot and Linux kernel is introduced. Then, the paper gives some details about u-boot, such as initialization, adjusting and so on. After that, the process of building a root file system is given as well. Finally, an experimental embedded Linux system based on ARM SBC2410 platform is constructed successfully.
Keywords: ARM; embedded Linux; transplantation of the Linux kernel; transplantation of u-boot; busybox
1 引言
嵌入式系统已经成为当今最为热门的领域之一,它迅猛的发展势头引起了社会各方面人士的关注,广泛渗透到人们工作、生活中的各个领域,与我们的生活息息相关,嵌入式处理器已经占分散处理器市场份额的90%以上。
与此同时,嵌入式 Linux操作系统也在嵌入式领域中蓬勃发展,它不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,而且还具备支持广泛的处理器和硬件平台、占有空间小、成本低廉、结构紧凑等特点[1],是嵌入式操作系统的理想选择。本文主要研究在ARM9平台上搭建嵌入式Linux系统。 ① 基金项目:重庆市自然科学基金(CSTC2008BB2307)
收稿时间: 2010-02-07;收到修改稿时间:2010-03-25
2 嵌入式Linux系统的构成
在嵌入式系统中,操作系统内核是不能够直接运行的,在操作系统内核运行之前必须运行一段程序,我们称之为bootloader,它类似于PC机中的
BIOS程序,通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,为操作系统内核的运行做准备。
嵌入式Linux系统要想正常运行,除了操作系统内核外,还必须有根文件系统,二者缺一不可,整个嵌入式系统的构成如图1所示。
Application Case 实用案例 153
嵌入式,可信计算
计 算 机 系 统 应 用 2010 年 第19卷 第 10 期
图1 嵌入式系统构成
与大多数bootloader一样,u-boot的启动流程也分为stage1和stage2两个阶段,stage1阶段通常用汇编语言实现,主要完成基本硬件初始化、设置堆栈等工作,为执行stage2阶段的C语言代码做好准备,其具体的工作流程如图2所示。
Stage2阶段通常用C语言实现,以便于实现更复杂的功能和更好的代码可读性及可移植性,并引导操作系统内核,其工作流程如图3所示:
图3 Stage2工作流程
3.3 U-boot源代码组织
board :平台依赖,存放开发板相关的目录文件,cpu :平台依赖,存放CPU相关的目录文件,每一款CPU对应一个目录,如arm920t、i386等目录;
lib_arm :平台依赖,存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数;
common :通用,通用的多功能函数实现,如环境、命令、控制台相关的函数实现;
include :通用,头文件和开发板配置文件,所lib_generic :通用,通用库函数的实现; net :通用,存放网络协议的程序;
drivers :通用,通用的设备驱动程序,主要有以太网接口的驱动,nand驱动等; 3.4 与开发板sbc2410相关的重要文件
SBC2410开发板,其硬件资源为:型号为
图2 Stage1工作流程
S3C2410X的ARM9处理器、2片32M SDRAM、一
系统加电或复位后,所有的CPU通常都从某个由
3 Bootloader移植
CPU制造商预先安排的地址上取指令,而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(如本平台中的Flash)被映射到这个预先安排的地址上,该地址上存放的代码就是bootloader。通常,bootloader是严重依赖于硬件实现的,因此,在嵌入式世界里建立一个通用的bootloader几乎是不可能的。 3.1 U-boot介绍
常见的bootloader有很多种,而u-boot是使用最广泛的bootloader之一。U-boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目,由FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似;U-boot不仅支持嵌入式Linux系统的引导,还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、 LynxOS等嵌入式操作系统的引导[2]。另外,硬件方面,u-boot支持PowerPC、MIPS、 x86、ARM、NIOS、Xscale等诸多常用系列的处理器。U-boot项目的开发目标就是支持尽可能多的嵌入式处理器和嵌入式操作系统。
每一套板子对应一个目录,如smdk2410(arm920t);
有开发板的配置文件都在configs目录下;
154实用案例 Application Case
嵌入式,可信计算
2010 年 第19卷 第 10 期 计 算 机 系 统 应 用
片64M Nand Flash、一片2M Nor Flash、一个串口COM0, 一个标准JTAG接口等等。
include/s3c24x0.h :该文件中定义了s3x24x0芯片的各个特殊功能寄存器(SFR)的地址;