董晶晶

摘 要:文章描述了将标准Linux系统移植到基于S3C2410微处理器的开发板上的方法,包括安装交叉编译环境、引导程序的移植、Linux内核的裁减和编译。移植后的linux内核虽然减小了软件的开发难度,但是仍具有良好的稳定性和安全性,也降低了开发成本。

关键词:嵌入式Linux;内核;S3C2410处理器;移植

1 概述

S3C2410是基于ARM920T内核的微处理器,具有支持多任务、高效、稳定、内核简单等特点。嵌入式Linux是在标准Linux的基础上对内核进行裁减和编译后的小型操作系统,且占存储空间小。

2 移植前准备工作

嵌入式Linux基于S3C2410处理器上移植首先需要采用交叉编译调试的方式。而交叉编译调试环境建立在PC 机上对应的开发平台,但是可执行的二进制代码只能在开发平台上执行,因此在移植前要建立交叉编译环境。准备工作包括建立交叉编译工具链,配置主机网络接口的IP地址和TFTP服务。

安装Linux的交叉编译环境, 应包括binutils,gcc.gnuc和glibc三部分的工具链。从Linux的官方网站可以下载免费的工具链。其中binutils是用于处理二进制文件的程序集合,gcc.gnuc是编译工具,glibc是保证用户链接C库。交叉编译工具链的安装顺序如下:

(1)下载Crosstol-3.4.1.tar.bz2包,在/usr/local/arm目录下解压缩。

在export之前添加# PATH: /usr / local/arm /,修改PATH环境变量,从而添加交叉编译器的路径。

(2)通过ifconfig 命令查看主机的网络接口驱动是否安装成功后,配置主机网络接口的IP地址。

(3)TFTP 服务:Linux下的TFTP服务在默认情况下处于关闭状态,需要以root 身份登录,修改TFTP的配置文件,开启TFTP服务。

使用命令/etc/init.d/xinetd restart,使TFTP服务重新启动。

3 嵌入式Linux 的移植过程

3.1 引导程序Bootloader的移植

引导程序类似于PC机中的BIOS程序,它可以进行硬件设备的初始化(时钟的设置、内存的映射等), 方便调用系统内核。引导程序是依赖于硬件平台来实现的。而每种cpu芯片的引导程序不可能是通用的,不同的处理器架构都有不同的引导程序。而且系统的板级设备的配置也限制着引导程序。如果在不同的两块嵌入式板上使用同一种cpu,而引导程序在两块板子上运行,就需要修改Bootloader的源程序。u-boot移植主要过程如下:

(1)从Linux官方网址下载u-boot 1. 1. 2包。

在指定目录解压缩后,编译S3C2410板的u-boot:

(2)配制Makefile,修改工具链前缀:

把CROSS _COMP ILE=arm-linux改为:=/usr/local/arm/3.3.2/bin/arm-linux-gcc

(3)配置编译smdk2410 板,执行# make smdk2410 config=/path/from/root install

(4)建立U- Boot开发板,配置开发板。

在configs目录下复制smdk2410

(5)测试系统能否正常运行:

如果系统正常运行,在u-boot-1.1.2目录下生成u-boot.bin文件;但是如果系统运行不成功时,可以将example文件夹下的Makefile中的 %.srec: % 改为: %.srec:%.0。

(6)通过fs2410的nand FLASH,将u- Boot烧写到Flash上,引导程序就可以从FLASH上直接启动了 。

3.2 嵌入式Linux的内核的裁减和编译

对于嵌入式系统来说标准Linux的内核过去庞大,因此要将Linux移植到嵌入式系统上,就需要将Linux内核进行裁减和编译。

3.2.1 裁减Linux内核

(1)进入Linux内核的编辑菜单,运行如下命令:

# make config (进入命令行)

# make mrproper (删除解压缩软件包中的冗余文件)

# make xconfig (进入xconfig配置菜单)

(2)在Linux内核的配置菜单中,对嵌入式系统进行配置。xconfig 配置菜单如图1所示。

图1 xconfig 配置菜单

在配制时,Linux内核配置中只有一部分根据用户不同需要选择或是去掉不需要的模块,添加必须的模块或是驱动程序,但是大部分选项可以选择默认值。(选项中Y表示该功能加入内核;N表示该功不能加入内核;M表示该功可以在需要时动态内核。)

3.2.2 内核的编译

在内核配置完后,需要对内核创建源码树,压缩的内核映像。内核编译命令如下:

#make dep (读取配置文件,并创建源码关系树);

#make clean 命令 (用于清除程序的冗余文件)

#make zImage ( 使用压缩方法,生成更小linux内核)

4 制作RAMdisk(根文件系统)

嵌入式Linux 系统通过根文件系统为设备和用户程序提供接口,调用系统中所有的文件和设备。因此移植Linux系统还需要制作RAMdisk。在RAMdisk的块设备上建立根文件系统的目录一般由下几个组成:

/bin目录 存储文件管理程序的文件;

/lib目录 存储系统的库文件;

/dev目录 存储系统设备文件;

/etc目录 存储系统配置文件。

在文章中基于S3C2410微处理器,创建Cramfs格式的根文件系统。RAMdisk使用压缩映像存放在Flash的地址空间中后,就把RAMdisk设备加载成根文件系统,最终将嵌入式操作系统移植到开发板上,生成可视化操作系统。

5 结束语

文章针对嵌入式系统基于S3C2410处理器上的移植方法,分别介绍了如何建立交叉编译环境、引导程序和根文件系统的移植、对处理器内核的裁减、编译的过程,并且保证移植后的Linux系统的稳定性、实时性、可视性和安全性的特点。生成嵌入式Linux系统,用户可以根据需要,编写开发应用程序。

参考文献

[1]廖日坤.ARM嵌入式应用开发技术白金手册[M].北京:中国电力出版社,2005.

[2]倪继利.Linux内核分析与编程[M].北京:电子工业出版社,2005.

[3]张杰,吴敏,曹卫华.基于S3C2410的Linux移植[J].微型电脑应用,2005.