论文部分内容阅读
摘要:简要介绍了TE2410开发板的硬件特性,重点阐述了Linux 内核在ARM9上的移植过程。其中包括:建立交叉编译环境、系统内核的移植和根文件系统的移植等。移植后的操作系统在开发板上运行稳定,并且可以根据需要编写应用程序,将该开发板用于工业控制。
关键词:ARM Linux;TE2410;移植;Bootloader
中图分类号:TP311.54文献标识码:A文章编号:1009-3044(2008)31-0915-02
Porting ARM Linux to TE2410 Board
YAN Guo-yingZHANG Ji-kou
(Hebei University, Baoding 071002, China)
Abstract:The hardware properties of TE2410 board are presented. The technique of Porting ARM Linux to TE2410 board are introduced in this paper. All the work consists of the building the cross compile environment,the Porting of ARM Linux kernel and the Porting of root File system. After finished the porting successfully,the system run stable on the board. We can design application programme to meet control requirements.
Key words: ARM Linux; TE2410; Porting; Bootloader
1 引言
ARMLinux是一个将Linux内核移植到各种基于ARM处理器的目标系统的项目,由RussellKing主持,已经为超过100种不同的目标机器成功完成了移植工作[1]。本文以TE2410 ARM9开发板为开发平台,详细介绍了Linux内核在ARM9上的移植过程。其中包括:建立交叉编译环境、内核的配置和编译、内核文件的烧写、根文件系统的移植等。移植成功后开发人员可以直接调用Linux 已经集成好的各种函数及接口,为新产品早日上市及抢占最有利的市场提供了帮助。
2 TE2410开发板介绍
不同的硬件平台所定制的Bootloader和Linux系统内核是不同的。本设计中用到的Bootloader是vivi,版本:0.1.4。开发主机和目标板卡通过串口相连。设计的目标平台为TE2410-1型开发板,基于三星公司的S3C2410X处理器,采用6层板设计。S3C2410X使用ARM920T内核,内部带有MMU(内存处理单元),适用于设计移动手持设备类产品。
TE2410-1型开发板具有以下主要特性:CPU采用S3C2410XARM9内核,稳定运行200M与258M;64M SDRAM内存;64M nandflash.采用yaffs文件系统可以安全可靠的读写;基于cs8900a的10M网络;显示最高可以达到800x600的VGA和TV输出;基于uda1341的声音输入输出;1个标准串口, 2个usb host,1个usb device,标准SD卡接口,标准20pin JTAG接口;CPU内置STN/CSTN/TFT LCD控制器,支持1024*76分辨率下的各种液晶;板上4个按键5个led;留出总线插座,供用户扩展其他产品用。系统的 Bootloader和Linux内核都是基于以上硬件资源配置的。
3 移植过程
3.1建立交叉编译环境
移植的Linux内核版本为Linux2.6.22.1,交叉编译器(CROSS-COMPILE)版本为4.2.0,开发操作系统为Fedora 6,交叉编译环境建立的具体步骤如下:
1)解压文件:tar jxvf obsolete-gcc-4.2.0.tar.bz2;
2)把解压的文件夹中的“4.2.0”文件夹拷贝到 /usr/local/arm目录下。这里需要注意:如果没有arm目录就新建arm目录,但是一定要是拷贝到这个目录,不然不能运行;
3)在命令窗口输入export PATH=/usr/local/arm/4.2.0/bin:$PATH;
4)如果输入“arm-”然后按下tab键能自动补全命令 arm-linux-说明搭建成功。
3.2 内核配置和编译
在TE2410板卡中,内核的配置和编译主要涉及对下列文件的修改。
1)修改 Makefile:[root@localhost linux-2.6.22.1]# vi Makefile
ARCH ?=arm;CROSS_COMPILE ?=/usr/local/arm/arm-2007q1/bin/arm-none-eabi-
2)修改common-smdk.c文件
a. vivi 目录下输入vim ./arch/s3c2410/smdk.c命令,在mtd_partition_t default_mtd_partitions[] = {……}查看vivi的分区信息。
b. 根据vivi中的分区信息,在static struct mtd_partition smdk_default_nand_part[] = {……}
中设置内核分区。注意:内核分区信息必须和 vivi 的分区信息相同,否则分区表不能显示,烧写的内核也不能运行。TE2410 开发板的分区如表1所示。
c. 在 arch\arm\mach-s3c2410\mach-smdk2410.c 文件中加入S3C2410X需要初始化的设备接口,主要包括对usb、lcd、i2c总线、nand等的初始化。命令格式如:
Startic struct platform_device *smdk2410_devices[] _initdata={
&s3c_device_usb,
&s3c_device_lcd;
……/*add here*/ }
3)禁止nand flash 的ECC:内核中的ECC校验码是由S3C2410中nand flash控制器产生的,一般内核烧写时生成的ECC校验码与内核ECC不一致。所以,通常选择禁止内核ECC校验。步骤如下:打开drivers/mtd/nand/s3c2410.c ;搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里修改NAND_ECC_SOFT为NAND_ECC_NONE。
4)支持启动时挂载devfs:为了内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,需要在[root@localhost linux-2.6.22]# vi fs/Kconfig找到menu "Pseudo filesystems"添加如下语句:
config DEVFS_FS bool "/dev file system support (OBSOLETE)" default y
config DEVFS_MOUNT bool "Automatically mount at boot" default y depends on DEVFS_FS
5)配置内核:输入[root@localhost linux-2.6.21.1]# make xconfig命令,通过对选项的添加和去除,可以实现对内核资源的配置。主要内容如表2所示。
6)编译内核:[root@localhost linux-2.6.22.1]# make zImage
3.3 烧写linux内核到开发板上
1)在Windows下:将编译生成的内核镜像 zImage 拷贝到电脑的某个硬盘上,将和TE2410开发板配套的安装光盘上所给的Mytftp.exe 文件拷贝到和 zImage 同一个文件夹下。
2)重启开发板,到vivi 敲空格,然后在vivi> load flash kernel t
3)启动 dos 命令:到zImage所在的文件夹下输入 mytftp –i 192.168.0.12 PUT zImage
回车稍等就会出现vivi>表示烧写成功。
3.4 根文件系统的移植
嵌入式Linux系统的根文件系统通常是以Ramdisk的方式存在的,Ramdisk的映像文件一般以压缩的形式存放在Flash中,在内核启动时将这个压缩的文件解压存放到内存中再作为根文件系统装载。根文件系统的移植主要步骤如下:
1)下载用busybox制作好的root_china.tar.gz,解压以后用命令进入root_china /dev,并输入mknod console c51;
2)用制作工具mkcramfs将root_china 文件夹里的所有文件做成文件系统;
3)执行 ./mkcramfs root_chinaroot_china.cramfs将其制成可烧写的cramfs文件系统。
4)烧写到flash,方法与内核烧写类似。
在步骤1中容易出现“ VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 112K,Warning: unable to open an initial console”的现象?原因是不能正确挂接文件系统。在2.6以前的版本挂接文件系统时会在dev 文件夹下自动生成console 文件。在以后的版本不会自动生成,必须手动在此文件的节点上添加mknod console c51。
4 结论
在具有操作系统的嵌入式产品中Bootloader、操作系统内核、根文件系统是必需的,也是保证系统能运行的最小单元。本设计中TE2410开发板的配套光盘中有编译好的Bootloader并已完成Bootloader的烧写。本文主要实现了的Linux2.6.22.1内核和根文件系统的移植过程。移植后的操作系统在开发板上运行稳定,可以减少以后项目的开发周期。
参考文献:
[1] 李程远,刘文峰,李善平. ARMLinux在EP7312上的移植[J]. 计算机工程与设计,2003.7,24(7):73-76.
[2] 孙天泽等.嵌入式设计及Linux驱动开发指南—基于ARM9处理器[M].电子工业出版社,2007(1):191-214.
[3] 徐英慧.ARM9嵌入式系统设计——基于S3C2410与Linux[M].电子工业出版社, 2007(9):97-121.
关键词:ARM Linux;TE2410;移植;Bootloader
中图分类号:TP311.54文献标识码:A文章编号:1009-3044(2008)31-0915-02
Porting ARM Linux to TE2410 Board
YAN Guo-yingZHANG Ji-kou
(Hebei University, Baoding 071002, China)
Abstract:The hardware properties of TE2410 board are presented. The technique of Porting ARM Linux to TE2410 board are introduced in this paper. All the work consists of the building the cross compile environment,the Porting of ARM Linux kernel and the Porting of root File system. After finished the porting successfully,the system run stable on the board. We can design application programme to meet control requirements.
Key words: ARM Linux; TE2410; Porting; Bootloader
1 引言
ARMLinux是一个将Linux内核移植到各种基于ARM处理器的目标系统的项目,由RussellKing
2 TE2410开发板介绍
不同的硬件平台所定制的Bootloader和Linux系统内核是不同的。本设计中用到的Bootloader是vivi,版本:0.1.4。开发主机和目标板卡通过串口相连。设计的目标平台为TE2410-1型开发板,基于三星公司的S3C2410X处理器,采用6层板设计。S3C2410X使用ARM920T内核,内部带有MMU(内存处理单元),适用于设计移动手持设备类产品。
TE2410-1型开发板具有以下主要特性:CPU采用S3C2410XARM9内核,稳定运行200M与258M;64M SDRAM内存;64M nandflash.采用yaffs文件系统可以安全可靠的读写;基于cs8900a的10M网络;显示最高可以达到800x600的VGA和TV输出;基于uda1341的声音输入输出;1个标准串口, 2个usb host,1个usb device,标准SD卡接口,标准20pin JTAG接口;CPU内置STN/CSTN/TFT LCD控制器,支持1024*76分辨率下的各种液晶;板上4个按键5个led;留出总线插座,供用户扩展其他产品用。系统的 Bootloader和Linux内核都是基于以上硬件资源配置的。
3 移植过程
3.1建立交叉编译环境
移植的Linux内核版本为Linux2.6.22.1,交叉编译器(CROSS-COMPILE)版本为4.2.0,开发操作系统为Fedora 6,交叉编译环境建立的具体步骤如下:
1)解压文件:tar jxvf obsolete-gcc-4.2.0.tar.bz2;
2)把解压的文件夹中的“4.2.0”文件夹拷贝到 /usr/local/arm目录下。这里需要注意:如果没有arm目录就新建arm目录,但是一定要是拷贝到这个目录,不然不能运行;
3)在命令窗口输入export PATH=/usr/local/arm/4.2.0/bin:$PATH;
4)如果输入“arm-”然后按下tab键能自动补全命令 arm-linux-说明搭建成功。
3.2 内核配置和编译
在TE2410板卡中,内核的配置和编译主要涉及对下列文件的修改。
1)修改 Makefile:[root@localhost linux-2.6.22.1]# vi Makefile
ARCH ?=arm;CROSS_COMPILE ?=/usr/local/arm/arm-2007q1/bin/arm-none-eabi-
2)修改common-smdk.c文件
a. vivi 目录下输入vim ./arch/s3c2410/smdk.c命令,在mtd_partition_t default_mtd_partitions[] = {……}查看vivi的分区信息。
b. 根据vivi中的分区信息,在static struct mtd_partition smdk_default_nand_part[] = {……}
中设置内核分区。注意:内核分区信息必须和 vivi 的分区信息相同,否则分区表不能显示,烧写的内核也不能运行。TE2410 开发板的分区如表1所示。
c. 在 arch\arm\mach-s3c2410\mach-smdk2410.c 文件中加入S3C2410X需要初始化的设备接口,主要包括对usb、lcd、i2c总线、nand等的初始化。命令格式如:
Startic struct platform_device *smdk2410_devices[] _initdata={
&s3c_device_usb,
&s3c_device_lcd;
……/*add here*/ }
3)禁止nand flash 的ECC:内核中的ECC校验码是由S3C2410中nand flash控制器产生的,一般内核烧写时生成的ECC校验码与内核ECC不一致。所以,通常选择禁止内核ECC校验。步骤如下:打开drivers/mtd/nand/s3c2410.c ;搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里修改NAND_ECC_SOFT为NAND_ECC_NONE。
4)支持启动时挂载devfs:为了内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,需要在[root@localhost linux-2.6.22]# vi fs/Kconfig找到menu "Pseudo filesystems"添加如下语句:
config DEVFS_FS bool "/dev file system support (OBSOLETE)" default y
config DEVFS_MOUNT bool "Automatically mount at boot" default y depends on DEVFS_FS
5)配置内核:输入[root@localhost linux-2.6.21.1]# make xconfig命令,通过对选项的添加和去除,可以实现对内核资源的配置。主要内容如表2所示。
6)编译内核:[root@localhost linux-2.6.22.1]# make zImage
3.3 烧写linux内核到开发板上
1)在Windows下:将编译生成的内核镜像 zImage 拷贝到电脑的某个硬盘上,将和TE2410开发板配套的安装光盘上所给的Mytftp.exe 文件拷贝到和 zImage 同一个文件夹下。
2)重启开发板,到vivi 敲空格,然后在vivi> load flash kernel t
3)启动 dos 命令:到zImage所在的文件夹下输入 mytftp –i 192.168.0.12 PUT zImage
回车稍等就会出现vivi>表示烧写成功。
3.4 根文件系统的移植
嵌入式Linux系统的根文件系统通常是以Ramdisk的方式存在的,Ramdisk的映像文件一般以压缩的形式存放在Flash中,在内核启动时将这个压缩的文件解压存放到内存中再作为根文件系统装载。根文件系统的移植主要步骤如下:
1)下载用busybox制作好的root_china.tar.gz,解压以后用命令进入root_china /dev,并输入mknod console c51;
2)用制作工具mkcramfs将root_china 文件夹里的所有文件做成文件系统;
3)执行 ./mkcramfs root_chinaroot_china.cramfs将其制成可烧写的cramfs文件系统。
4)烧写到flash,方法与内核烧写类似。
在步骤1中容易出现“ VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 112K,Warning: unable to open an initial console”的现象?原因是不能正确挂接文件系统。在2.6以前的版本挂接文件系统时会在dev 文件夹下自动生成console 文件。在以后的版本不会自动生成,必须手动在此文件的节点上添加mknod console c51。
4 结论
在具有操作系统的嵌入式产品中Bootloader、操作系统内核、根文件系统是必需的,也是保证系统能运行的最小单元。本设计中TE2410开发板的配套光盘中有编译好的Bootloader并已完成Bootloader的烧写。本文主要实现了的Linux2.6.22.1内核和根文件系统的移植过程。移植后的操作系统在开发板上运行稳定,可以减少以后项目的开发周期。
参考文献:
[1] 李程远,刘文峰,李善平. ARMLinux在EP7312上的移植[J]. 计算机工程与设计,2003.7,24(7):73-76.
[2] 孙天泽等.嵌入式设计及Linux驱动开发指南—基于ARM9处理器[M].电子工业出版社,2007(1):191-214.
[3] 徐英慧.ARM9嵌入式系统设计——基于S3C2410与Linux[M].电子工业出版社, 2007(9):97-121.