开发板:s3c2410
各种工具版本:
busybox:busybox-1.13.3(从http://www.arm9.net/download.asp下载busybox-1.13.3-mini2440.tar解压)
linux:linux-2.6.32.2(从http://www.arm9.net/download.asp下载linux-2.6.32.2-mini2440-20110413.tar解压)
gcc (arm-linux-gcc-3.4.1.tar,安装在、home/jimmy/usr/local/3.4.1)
mtd:(mtd-snapshot-20050519.ta,安装在home/jimmy)
zlib(mtd依赖它):(zlib-1.2.3.tar 安装在home/jimmy)
u-boot-1.1.4(/home/u-boot-1.1.4,因为软浮点问题,用2.95.3编译 make smdk2410_config;make CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-)
制作的镜像(放在/tftpboot中):
1. uImage_new_ramdisk
- make menuconfig 记得选择ramdisk
a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项
b):DeviceDrivers-->Block devices-->选择 RAM block devicesupport 项
修改(4920)Default RAM disk size kbytes选项为(8192)Default RAM disk size kbytes
特别要注意的一点是,ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。
所以一定要在make menuconfig的时候进入 File systems菜单,选上<*>Second extended fs support。以提供内核对ext2文件系统的支持。
- /usr/src/linux-2.6.32.2/.config中initrd=0x30800000,0x800000大小要与制作的ramdisk一致,否则会报错EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #XX
CONFIG_CMDLINE="initrd=0x30800000,0x800000 root=/dev/ram rw init=/linuxrc console=ttySAC0,115200"
2.ramdisk.gz(由/home/ramdiskfs制作,含busybox1.13.3)
>cp etc-linux/* ramdiskfs/etc/
记得修改 inittab中的ttyS0为ttySAC0
>../genext2fs -b 8192 -d ramdiskfs/ ramdisk
>gzip -9 -f ramdisk
>mv ramdisk.gz /tftpboot
3.u-boot操作
>setenv bootargs initrd=0x30800000,0x800000 root=/dev/ram rw init=/linuxrc console=ttySAC0,115200
>tftp 30800000 ramdisk.gz
>tftp 30008000 uImage_new_ramdisk
保存内核镜像到nand flash
> nand erase 30000 2d0000(大小)
>nand write 30008000 30000 1dc100(内核实际大小)
保存ramdisk到nandflash的mtblock4(本来是给cramfs用的)
"U-Boot-1.2.0", 0-128k(0x0-0x20000,大小0x20000)
"U-Boot-1.2.0 Parameter", 128k-192k(0x20000-0x30000,大小0x10000)
"Linux2.6.22.2 Kernel", 192k-5M(0x30000-0x500000,大小0x2d0000)
"Root-JFFS2", 5M-10M(0x500000-0xA00000,大小0x500000)
"Boot-Root(cramfs)", 10M-20M (0xA00000-0x1400000,大小0xA00000)
"YAFFS", 20M-64M (0x1400000-0x4000000,大小0x2C00000)
> nand erase 0xA00000 0xA00000(大小)
>nand write 30800000 0xA00000 dad3a(ramdisk实际大小)