基于PXA255的嵌入式Linux应用平台的构建
器体系结构选择适合的内核,在本文中选用2.4.18的内核版本,下载已经打好补丁的内核资源linux-2.4.18-rmk7.tar.bz2。
# tar jxvf linux-2.4.18-rmk7.tar.bz2
# cd linux-2.4.18-rmk7
# make menuconfig
# make dep
# make zImage
完成后在arch/arm/boot 路径下生成映像文件zImage,下载到开发平台上并烧写到FLASH中。
2.3 配置根文件系统
Linux并不使用设备标志符(如设备号或驱动器名称)来访问独立文件系统,而是通过一个将整个文件系统表示成单一实体的层次树结构来访问它。一个根文件系统需要包含支持Linux系统运行的所有文件,通常包括:
(1)基本的文件系统结构。
(2)基本的目录: /dev, /proc, /bin, /sbin, /etc, /tmp等。
(3)基本的工具: sh, ls, cp, cd, mv等。
(4)基本的配置文件: rc, inittab, fstab等。
(5)设备: /dev/hd*, /dev/tty*, /dev/fd0, /dev/ram*, /dev/console等。
(6)基本的运行库。
为了建立根文件系统,可以利用BusyBox工具,在网上下载最近版本busybox-1.1.0.tar.gz,一些主要步骤如下:
#tar zxvf busybox-1.1.0.tar.gz
#cd busybox-1.1.0
#make menuconfig
在build Options菜单下,可以选择静态库编译方式
[*]Build BusyBox as a static binary (no shared libs)
还需要使用带glibc库支持的交叉编译器arm-linux-gcc
[*]Do you want to build BusyBox with a Cross Compiler?
/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-
在installation Options中选安装路径,默认是_install目录
[*]Don't use /usr
(./_install)BusyBox installation prefix
之后选择一些需要的编译命令后就可以编译BusyBox了。
#make dep
#make
#make install
完成后生成_install目录,目录下有bin linuxrc sbin目录,下面介绍对根文件系统的进一步配置:
建立etc目录
#mkdir etc
建立rc文件,内容如下:
#!/bin/sh
hostname XScale
mount -t proc proc /proc
cat /etc/motd
改变rc属性
#chmod 777 rc
建立inittab文件,主要内容如下:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdowm:/bin/umount -a -r
::shutdowm:/sbin/swapoff -a
在init.d目录下,建立rc文件的符号连接文件rcS
#ln -s ../rc rcS
建立dev目录,创建设备文件,可以用mknod命令创建,也可以复制主机平台/dev目录下的一些需要的设备文件到/_install/dev目录下。
制作JFFS2文件映像,在busybox-1.1.0目录下
#./mkfs.jffs2 -o newfs.img -e 0x40000 -r _install -p -l
生成映像文件newfs.img,下载并烧写到FLASH中。
3 结束语
本文在Intel XScale PXA255处理器和Linux操作系统的基础上构建嵌入式Linux应用平台。主要分析了Bootloader的功能特点和实现Bootloader映像的制作、Linux系统的特点和交叉编译环境下加载和编译Linux内核,最后介绍支持Linux系统运行的精简根文件系统的实现。
本文作者创新点是:利用BusyBox这一工具,详细介绍了在PXA255处理器上精简根文件系统的实现过程,由于采用接口功能强大的XScale处理器和运行稳定的Linux操作系统构建嵌入式Linux应用平台,降低了开发难度,在很大程度上提高了应用平台的可靠性、稳定性和可维护性。可以根据需要编写程序,使开发板用于实际的工业应用等。
参考文献:
[1] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006
[2] 夏玮玮,沈连丰,肖 婕,等.嵌入式系统关键技术分析与开发应用[J].业界论坛,2003,(2):5-9.
[3] SARWAR.A1.SAGABI.LINUXUNIX程序开发基础教程[M].英宇,姚锋,译.北京:清华大学出版社,2004.
[4] 英海燕.基于ARM的嵌入式Linux操作系统移植[J].现代情报,2005,(5):155-156.
[5] Karim Yagbmour.Building embedded Linux system[M].O'Reilly Associates,Inc.2003
[6] 白伟平, 包启亮.基于ARM的嵌入式Bootloader 浅析[J].微计算机信息, 2006, 4- 2:99- 100.
嵌入式Linux Bootloader Linux内核 相关文章:
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 基于嵌入式Linux的组态软件实时数据库的设计(02-01)
- 基于ARM+DSP的嵌入式Linux数控系统设计(11-18)
- 基于嵌入式Linux的细胞特征提取算法设计(11-19)
- 基于S3C2410的嵌入式Linux系统构建(03-02)
- 嵌入式Linux网络编程之:网络基础编程(08-13)