需要下载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文件里的串口名和这里的一致就行了