NAND FLASH加载ramdisk文件系统

 虚拟机下制作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 ……时,不会有影响的。(原因??)

posted @ 2012-11-26 21:55  菜鸟飞  阅读(1360)  评论(0编辑  收藏  举报