ARM9开发—Linux文件系统的移植和制作(1)
上一节《ARM9开发—Linux内核的移植方法》介绍了Linux源码的移植,本节接着介绍文件系统的移植。文件系统的移植一般包含三个步骤:(1)添加Nand Flash支持;(2)yaffs2文件系统移植;(3)利用busybox创建系统所需基本文件。
1. Nand Flash驱动
编辑 /opt/Learn2440/linux-2.6.30.4/arch/arm/plat-s3c24xx/common-smdk.c 文件。
(1)修改分区
在109行,将结构体名为 smdk_default_nand_part[] 的内容修改为:
static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "EmbedSky_Board_uboot", .offset = 0x00000000, .size = 0x00040000, }, [1] = { .name = "EmbedSky_Board_kernel", .offset = 0x00200000, .size = 0x00300000, }, [2] = { .name = "EmbedSky_Board_yaffs2", .offset = 0x00500000, .size = MTDPART_SIZ_FULL, } };
(2)修改时序参数
在140行,修改smdk_nand_info结构体的内容如下:
static struct s3c2410_platform_nand smdk_nand_info = { .tacls = 10, .twrph0 = 25, .twrph1 = 10, .nr_sets = ARRAY_SIZE(smdk_nand_sets), .sets = smdk_nand_sets, };
(3)修改错误校验
编辑 /opt/Learn2440/linux-2.6.30.4/drivers/mtd/nand/s3c2410.c 第752行内容为:
chip->ecc.mode = NAND_ECC_NONE;
(4)添加flash配置
进入配置界面,终端输入如下指令:
make menuconfig
依次选择菜单,配置所需选项:
(5)编译下载
将编译的 zImage.bin 镜像下载到开发板中,对比启动信息如下:
2. yaffs2移植
(1)获取yaffs2源码
在Linux终端执行git命令,获取最新版yaffs2源码:
git clone git://www.aleph1.co.uk/yaffs2
将下载的源码复制到/opt/Learn2440 目录下,如下:
(2)yaffs2补丁
执行补丁脚本patch-ker.sh,将yaffs2添加到linux源码中。
./patch-ker.sh c m /opt/Learn2440/linux-2.6.30.4/
(3)查看目录
在/opt/Learn2440/linux-2.6.30.4/fs目录下,将看到添加的yaffs2文件夹。
cd /opt/Learn2440/linux-2.6.30.4/fs
(4)添加yaffs配置单
cd /opt/Learn2440/linux-2.6.30.4 make menuconfig
依次选择配置内容,如下:
注:图片中未看到的选项内容,默认全部取消选中。
3.busybox移植
(1)获取busybox源码
访问Busybox官网 ,以 busybox-1.16.0.tar.bz2 版本为例下载。
将下载的源码解压到 /opt/Learn2440 目录下,如下:
(2)编辑Makefile
gedit /opt/Learn2440/busybox-1.16.0/Makefile
<1> 修改164行内容为:
CROSS_COMPILE = arm-linux-
<2> 修改189行内容为:
ARCH = arm
<3> 修改431行内容为:
%config: scripts_basic outputmakefile FORCE
<4> 修改1279行内容为:
%/: prepare scripts FORCE
编辑完成后,保存并退出。
(3)修改配置单
make menuconfig
依次选择所需配置,如下:
(4)编译
make install
编译完成后,在 /opt/Learn2440/busybox-1.16.0 目录下生成一个名为”_install”的目录,如下:
至此,所需编译的内容即完成,下一节介绍完整版文件系统的制作。