根文件系统制作
FL2440在移植完linux内核后,需要移植根文件系统才能正常的启动开发板上面的Linux系统。下面介绍一下如何制作根文件系统。
首先要明确几个问题,首先,为什么要制作根文件系统?根文件系统是什么?文件系统又是什么?如何制作根文件系统?这里介绍的是制作方法,所以下面只回答最后一个问题。至于其他问题,网上的资料以及相关的书籍上都有很详细的介绍,并且不是一句两句就能回答出来的,这里不多罗嗦。
开发板:FL2440
SDRAM:64M NAND FLASH:256M
环境:虚拟机vmware7.1.2.14247绿版(网上到处是)、红帽企业版5
交叉编译链:arm-linux-gcc-4.3.2(这里选择这个,低版本的比如3.4.1的等,在编译的过程中可能会提示很多错误)
使用的工具:busybox-1.19.0.tar.bz2
这里先改正一下错误,上次的linux-2.6.28.7内核移植到FL2440开发板时的触屏驱动有问题,需要改正几个错误,否则校正 3.5寸的屏幕时可能会出现错误,FL2440光盘中的linux-2.6.28的触屏驱动也存在此问题。
触屏校正有问题,校正不过去,需要修改源码中的触屏驱动才能解决。
文件:drivers/input/touchscreen/s3c2410_ts.c
static irqreturn_t stylus_updown(int irq, void *dev_id)//172行
函数中的data0 = readl(base_addr+S3C2410_ADCDA T0);//178行
data1 = readl(base_addr+S3C2410_ADCDA T1);//179行
修改为:
data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjw
data0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjw
static irqreturn_t stylus_action(int irq, void *dev_id)//194行
函数中的data1 = readl(base_addr+S3C2410_ADCDA T0);//199行
data0 = readl(base_addr+S3C2410_ADCDA T1);//200行
修改为
data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjw
data0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjw
下面开始介绍根文件系统制作过程。制作步骤如下:
大体来说,有两大步骤,第一步是移植Busybox,第二步是构建根文件系统。下面首先说第一步。
1、下载busybox-1.19.0.tar.bz2,并解压
首先,创建目录,用如下命令
mkdir /arm
进入这个目录
cd /arm
下载busybox-1.19.0.tar.bz2,地址是
busybox/downloads/
或者
www.busybox/downloads/
busybox为
busybox/
下载完后,将busybox-1.19.0.tar.bz2复制到arm目录下,然后解压缩,如下命令jar –jxvf busybox-1.19.0.tar.bz2
这样在/arm目录下就会出现busybox-1.19.0目录,进入这个目录
cd busybox-1.19.0
2、配置Busybox
首先编辑改源码目录中的Makefile文件,
vim Makefile
将下面的两个变量修改
CROSS_COMPILE ?=
ARCH ?=
改后的值为
CROSS_COMPILE ?=arm-linux-
ARCH ?=arm
当然上面的交叉编译链是要创建到环境变量中的。否则添加上绝对地址,不过有时候添加上绝对地址后可能会有错误。
执行下面命令进行配置
make menuconfig
这里做的修改如下,其他没提到的可以不修改(这里直接以飞凌官方论坛的为例,地址为bbs.witech/viewthread.php?tid=6292&highlight=)
B u s y b o x S e t t i n g s--->
B u i l d O p t i o n s--->
•B u i l d B u s y b o x a s a s t a t i c b i n a r y(n o s h a r e d l i b s)
•B u i l d w i t h L a r g e F i l e S u p p o r t(f o r a c c e s s i n g f i l e s> 2G B)
I n s t a l l a t i o n O p t i o n s--->
(./_i n s t a l l)B u s y b o x i n s t a l l a t i o n p r e f i x<—进入这个选项,输入b u s y b o x的安装路径,如:../r o o t f s
B u s y b o x L i b r a r y T u n i n g--->
•v i-s t y l e l i n e e d i t i n g c o m m a n d s
•F a n c y s h e l l p r o m p t s<—要选择这个选项:“F a n c y s h e l l p r o m p t s”,否则挂载文件系统
后,无法正常显示命令提示符:“[\u@\h \W]#”
这样就基本可以了,不过下面的几个配置选项需要注意一下。
如果只配置到此,那么构建的根文件系统在dnw串口软件上面启动来的Linux 在串口打印中会出现乱码的现象,类似于下图
其实这也不是大问题,用超级终端就可以正常显示了。原因在于dnw是不支持彩的。这个是由于在编译busybox时将文件利用颜来区别这个选项选择上了。为了在dnw也能正常显示,可以将按下面修改(默认是选择上的,这里我们不选择)
Coreutils --->下到ls相关的
Allow use of color to identify file types 和Produce colored ls output by default,如下图
嵌入式linux开发书籍将Allow use of color to identify file types这一项不选择就可以了。不过这里推荐选择,因为在开发时比较直观。
FL2440开发板官方给的文件系统是不能用Tab键补齐的,而其他的板子比如mini2440、TQ2440都是可以利用TAB键补齐的,刚开始接触时可能会纳闷,其
实原因就在飞凌配置busybox时有一项给去掉了的原因。这一项是Busybox Settings--------------à
Busybox Library Tuning------à
Tab completion
如下图
还有很多参数,这里不再多介绍。下面给出一个示例,部分内容有出入
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论