虚拟机下制作ramdisk的命令
dd if=/dev/zero of=ramdisk bs=2M count=14 /sbin/losetup /dev/loop2 ramdisk mkfs.ext2 /dev/loop2 mount -t ext2 /dev/loop2 /mnt cp -r /tmp/myroot/* /mnt/ umount /dev/loop2 /sbin/losetup -d /dev/loop2
cp /tmp/ramdisk /tftpboot
其中bs,和count的大小可以改变(分别代表什么??)据观察,发现生成的ramdisk大小,大约为bs*count
用命令查看ramdisk的大小
du -h ramdisk
在超级终端uboot下做相应配制
tftp 0x80700000 uImage-ti-davinci_evm-2.6.10_mvl401-1.1.1.0600990 nand erase 0x2250000 0x200000 nand write 0x80700000 0x2250000 0x200000 tftp 0x82000000 ramdisk
nand erase 0x60000 0x2000000 nand write 0x82000000 0x60000 0x2000000 setenv bootcmd 'nand read 0x82000000 0x60000 0x2000000; nboot 0x80700000 0 0x2250000; bootm' setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,29M ip=192.168.1.14:192.168.1.13:192.168.1.1:255.255.255.0
其中,内核uImage-ti-davinci_evm-2.6.10_mvl401-1.1.1.0600990通过tftp传到ddr中(0x80700000),然后烧写进nand flash(相对于0x02000000的偏移地址0x2250000,大小0x200000)。制作好的ramdisk文件系统ramdisk,通过tftp下载到ddr中(0x82000000),然后烧写进nand flash(相对于0x02000000的偏移地址0x60000,大小0x2000000)。
注意(0x82000000+0x2000000)不要和(0x80700000+0x2250000)重叠了。
bootcmd参数,'nand read 0x82000000 0x60000 0x2000000' ,是把0x60000处的文件系统数据拷贝到0x82000000处,共32M字节(要比文件系统大)。nboot 0x80700000 0 0x2250000,是打开device 0,把0x2000000字节搬移到0x80700000中。
bootargs参数 initrd=0x82000000是文件系统的位置,29M是文件系统的大小。
NOTE:当NAND FLASH报错Skipping bad block ……时,不会有影响的。(原因??)