欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

Linux在嵌入式系统上的移植

时间:2011-04-23  作者:秩名

论文导读:有Linux、uClinux、WinCE、VxWorks等。本文叙述了嵌入式Linux操作系统在AMR9平台上的移植过程。它基于ARM920T内核。是韩国MIZI公司为其ARM9系列产品而研发的Bootloader。
关键词:Linux,嵌入式系统,移植,Bootloader,内核
 

0引言

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

目前,可以使用的嵌入式操作系统有很多,有Linux、uClinux、WinCE、VxWorks等。其中,Linux操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统。由于其体积小、可裁剪、运行速度快、安全性能高等优点,常被制作成嵌入式Linux,广泛地应用于嵌入式系统中。嵌入式Linux是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。

本文叙述了嵌入式Linux操作系统在AMR9平台上的移植过程,以及构建一个完整嵌入式Linux开发环境的方法。

1系统平台

1.1 硬件平台

本文使用的硬件平台为武汉创维特信息技术有限公司研发的JXARM9-2410系列AMR9嵌入式教学实验系统。核心CPU采用韩国三星公司的主流ARM9处理器S3C2410X。它基于ARM920T内核,主频高达203MHz,带MMU(内存管理单元),片上资源丰富,性/价比极高,是目前ARM9处理器中,出货量最大的一款主流芯片。

主板包含的硬件资源:(1)64MBSDRAM,由两片16位数据宽度的SDRAM存储器组成,地址范围为0x30000000~0x33fffffff;(2)32MB NOR Flash存储器,其数据宽度为32位,地址范围为0x00000000~0x01ffffff;(3)8MB NAND Flash;(4)3个UART接口:UART0和UART1用作RS232串行接口,UART2用作RS485接口;(5)以太网接口;(6)USB接口;(7)MMC/SD卡接口;(8)彩色LCD显示器加触摸屏;(9)JTAG接口等。

1.2 软件平台

1.2.1 准备工作

我们将在一台安装了RedHat Linux 9.0操作系统的PC机下完成大部分的工作:要在主机上将源文件变成最终可以在目标机上执行的二进制文件,然后下载到目标机上执行,完成移植。在开始移植之前,先要从网上下载需要的源代码:

(1)vivi源代码。vivi是韩国MIZI公司为其ARM9系列产品而研发的Bootloader,小而灵巧,这里选用它作为嵌入式Linux系统的Bootloader。

(2)Linuxkernel源代码。用来裁剪成需要的嵌入式Linux系统,选用的是2.6.18.8版本。论文大全,Bootloader。

(3)交叉编译工具链。cross toolchain2.95.2(用来编译vivi)和4.0.0(用来编译内核)。使用两个版本的原因是vivi用4.0.0交叉编译器,编译出错,所以需选择用2.95.2交叉编译器。

1.2.2 配置开发环境

(1)安装cross toolchain工具,搭建交叉编译环境。构建交叉编译环境的方法有好几种,通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法简单,并且出错的机会也较少,这里使用该方法构建交叉编译工具链。

(2)配置主机网络设置,建立TFTP服务器,设置NFS Server。

(3)需要使用串口实现主机与目标机的通信,在Redhat Linux操作系统下使用的串口通信工具是minicom。

2移植实现

一个最基本的Linux操作系统应该包括:引导加载程序、Linux内核与文件系统三部分。实现移植就是要在开发主机上安装开发工具,编辑、编译目标板所需的引导程序、内核和文件系统,使其能在目标板上运行。

2.1 移植Bootloader

引导程序Bootloader是嵌入式系统在加电后执行的第一段代码,我们需要通过它来初始化必要的硬件设备,将操作系统映像装载到内存中,然后跳转到操作系统所在的空间,启动操作系统运行。Bootloader是依赖硬件实现的,所以我们要根据开发板的设备来构建合适的Bootloader。

(1)修改vivi根目录下的Makefile文件中的相关设置:

lCROSS_COMPILE =…../toolchain/2.95.2/bin/arm-linux-

lARM_GCC_LIB =…../toolchain/2.95.2/lib/gcc-lib/arm-linux/2.95.2

lLINUX_INCLUDE_DIR =…../kernel/linux-2.6.18.8/include

(2)修改arch/s3c2410/smdk.c文件中的default_mtd_partitions[],设置NAND flash。如下表1所示。

 

文件 地址空间 标志 存储空间
vivi 0x00000000 0x00020000 0 128K=0x00020000
param 0x00020000 0x00030000 0 64K=0x00010000
kernel 0x00030000 0x00300000 0 2M+832K=0x002d0000
root 0x00300000 0x00600000 4 3M=0x00300000
user 0x00600000 0x04000000 8 48M=0x03000000

表1 Nand Flash 分区表

(3)编译生成vivi.bin可执行文件。

(4)将vivi烧写到Flash。用开发板上自带的JTAG线和开发板连接,使用三星公司提供的SJF工具将上面生成的vivi.bin文件烧写到开发板上。

(5)正确烧写完vivi后,断开JTAG线,连上串口线,给开发板上电,检验vivi是否正常启动。

2.2 Linux内核移植

(1)修改Makefile文件。Linux 2.6内核加入了对S3C2410芯片的支持,驱动的交叉编译非常简单,在其Makefile中修改交叉编译器:

lARCH = arm

lCROSS_COMPILE = arm-linux-

其中ARCH=arm表示是以arm为体系结构,CROSS_COMPILE=arm-linux-表示是以

arm-linux-为前缀的交叉编译器。注意,需要把交叉编译工具链的路径添加到环境变量中,否则CROSS_COMPILE必须使用交叉编译工具链的绝对路径。

(2)修改arch/arm/mach-s3c2410/devs.c文件。我们使用NAND Flash作为Flash存储器,所以需要建立一个NAND Flash分区表来实现空间划分,定义分区存放的起始地址以及大小等。Flash分区信息必须与vivi的Flash分区信息相一致。论文大全,Bootloader。若两者不同,则很可能导致不能正常启动内核或读取文件系统。同时,要建立内核对NAND Flash的支持,加入NAND Flash的驱动程序。

(3)修改arch/arm/mach-s3c2410/mach-smdk2410.c文件。添加对NAND Flash分区表的初始化配置,使上面的修改生效。

(4)修改drivers/mtd/nand/s3c2410.c文件。禁止Flash ECC校验,因为Bootloader通过软件已经产生ECC校验码,这与内核ECC校验码不一致。

(5)内核定制。makemenuconfig显示一个基于文本的图形化配置菜单,是目前被公认为使用最广泛的配置内核方式。在终端下输入命令make menuconfig,将内核中不必要的功能除去,留下一些最基本的功能模块。根据我们开发板的情况,做了几点针对硬件的配置:

l选择处理器的类型——SamsungS3C2410

l加入内核对S3C2410 DMA的支持

l配置可加载模块的支持

l设置文件系统,支持devfs以及cramfs

配置保存后,生成.config文件,接下来的编译工作就是根据这个配置文件来进行的。

(6)内核编译。在内核2.4版本之前,编译内核相对复杂,需要使用好几个命令配合完成。在内核2.6上,可以简单地输入make来完成内核image的生成和模块的编译。在执行完make操作,会在arch/arm/boot目录下生成image和zImage两个内核映像文件,其中image为正常大小的映象文件,而zImage为压缩后的映像文件。压缩的Linux内核映像文件zImage就是将要在目标板上运行的Linux系统的核心。

(7)内核下载。使用minicom在vivi命令行下使用tftp服务下载内核。

2.3 Linux文件系统的移植

此时下载的内核文件在断电后不能保存,要想固化内核和模块到开发板需要添加根文件系统。Cramfs是针对Linux内核2.4之后的版本所设计的一种新型文件系统,是压缩和只读格式的。在嵌入式的环境下,内存和外存资源都需要节约使用,所以这里采用Cramfs文件系统。

(1)下载mkcramfs和cramfsck工具。mkcramfs用来创建Cramfs文件系统,cramfsck用来进行Cramfs文件系统的释放以及检查。

(2)建立根文件系统目录。论文大全,Bootloader。论文大全,Bootloader。根据FHS定义建立一个根文件顶层目录:bin,boot,dev,etc,home,lib,mnt,opt,proc,root,sbin,tmp,usr,var。

(3)借助BusyBox软件进行功能裁剪。BusyBox是很多标准 Linux工具的一个单个可执行实现。输入命令make menuconfig,我们通过界面化的配置得到一个自己需要的Linux工具库。

(4)修改BusyBox的Makefile内容,使用交叉编译环境进行编译。然后执行make install进行安装,将生成目录下的相应文件(bin,sbin,urs/bin,usr/sbin)复制到所构建文件系统的相应目录下。

(4)使用mkcramfs工具制作Cramfs根文件系统的映像,生成rootfs.cramfs映像文件。

(5)下载rootfs.cramfs映像文件到开发板上。

3结语

基于2.6内核的Linux凭借其突出的嵌入式特性与性能优越的ARM9 S3C2410相结合,在嵌入式领域有着广阔的应用天地。论文大全,Bootloader。文章详细阐述了Linux系统在S3C2410处理器上的移植方法,对其中的关键技术和重要步骤都给出了具体说明。论文大全,Bootloader。嵌入式操作系统的制作与移植是进行嵌入式开发的基础,必须熟练掌握。


参考文献:
[1]陈赜.ARM9嵌入式技术及Linux高级实践教程[M]. 北京航天航空出版社, 2005年.
[2]邹颖婷李绍荣.ARM9上的嵌入式Linux系统移植[J]. 计算机应用, 2009年第28卷第6期.
[3]田磊.Linux体系结构及嵌入式Linux的移植与应用[J].西安邮电学院学报, 2009年5月第14卷第3期.
[4]杜文军侯立刚王艳梅.基于ARM的Linux移植分析与实现[J].辽宁石油化工大学学报, 2009年6月第29卷第2期..
[5]王晓宁王振臣张少兵姚帆.Linux操作系统在ARM9处理器上的移植[J].化工自动化及仪表,2010年第37卷第2期.
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:JNDI技术及其使用方法(图文)
下一篇论文:LoadRunner在Web测试中的应用(图文)
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文