移植yaffs文件系统

时间:2021-05-24 17:34:50

需要下载yaffs2-d43e901.tar.gz,busybox-1.13.0.tar.bz2

使用的交叉编译器是4.33

1.修改配置编译busybox

修改Makefile

CROSS_COMPILE = arm-linux-

ARCH = arm

make menuconfig 根据实际情况来进行配置

make; make install

2. 构建文件系统

建立一个目录root_2.6.30.4,复制上面编译出来的busybox的“bin”目录,“sbin”目录,“usr”目录和“linuxrc”到root_2.6.30.4目录下,然后

mkdir -p dev etc /home/sky lib mnt opt proc root sddisk sys tmp udisk usr/lib usr/share var,接着向这些文件里填写内容,我是直接从天嵌提供的文件系统里复制的

做好后使用命令mkyaffs2image root_2.6.30.4 root_2.6.30.4.bin制作文件系统

3.移植文件系统

获取到yaffs2源码解压后,用命令./patch-ker.sh c 内核目录给内核打上补丁,然后输入 make menuconfig 进入配置菜单进行配置,使内核支持yaffs2

4.完善串口驱动

修改"arch/arm/mach-s3c2440/mach-smdk2440.c"文件,

static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
/* IR port */
[2] = {
.hwport     = 2,
.flags     = 0,
.ucon     = 0x3c5,
.ulcon     = 0x03,
.ufcon     = 0x51,
}
};

修改 "drivers/serial/samsung.c"文件,在s3c24xx_serial_startup函数返回前,加上

if (port->line == 2) {
   s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2);
   s3c2410_gpio_pullup(S3C2410_GPH6, 1);
   s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2);
   s3c2410_gpio_pullup(S3C2410_GPH7, 1);
}

在文件开始加上头文件 #include <mach/regs-gpio.h>

串口设备名就不需要改了,只要在制作文件系统时,/etc/inittab文件里的串口名和这里的一致就行了