Ramdisk文件系统烧写



     randisk(虚拟内存盘)是通过软件将一部分内存(RAM)模拟硬盘来使用的一种技术。我们要做的工作就是将轻量级的文件系统镜像ramdisk.gz烧写到flash里面,当板子上电后将文件系统加载到内存。当然RAM的易失性也就意味着板子断电后这部分数据丢失。因此板子起来后,仍然需要通过网络(nfs)来传输文件(例如bin文件,或者动态库.so)。

注:使用DM3730开发板


前提:
内核支持文件系统(ext2),在menuconfig中修改
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
选择支持文件系统(ext2)
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
/arm/arch/boot


过程:
修改文件系统内容及重新制作步骤:
gunzip ramdisk.gz
mount -o loop ramdisk /test/
umount /test


flash的分区如下:
dev:    size   erasesize  name
mtd0: 00080000 00020000 "X-Loader"
mtd1: 001e0000 00020000 "U-Boot"
mtd2: 00020000 00020000 "U-Boot Env"
mtd3: 00400000 00020000 "Kernel"
mtd4: 1f980000 00020000 "File System" 


Kernel地址:0x280000 
Kernel占用:0x400000




文件系统地址:0x680000
文件系统占用:0x800000 (根据ramdisk.gz文件大小的实际情况进行计算)


1、sd卡初始化:
mmc init
2、初始化一部分内存用于装载内核或文件系统,要保证所初始化的空间足够大
mw.b 0x82000000 0xff 0x800000
3、设置nand校验模式
nandecc sw
4、从sd卡加载内核到内存
fatload mmc 0 0x82000000 uImage
5、擦除kernel flash指定分区
nand erase 0x280000 0x400000
6、烧写内核到flash
nand write 0x82000000 0x280000 0x300000
7、重新初始化内存,用于加载文件系统
mw.b 0x82000000 0xff 0xA00000
8、设置nand校验模式
nandecc sw
9、从sd卡加载文件系统到内存
fatload mmc 0 0x82000000 ramdisk.gz
10、擦除文件系统 flash分区
nand erase 0x680000 0x800000
9、烧写文件系统到flash
nand write 0x82000000 0x680000 0x800000


烧写结束:

uboot修改:
setenv bootcmd  'nand read 0x80300000 0x280000 0x300000;nand read 0x8A000000 0x680000 0xa00000;bootm 0x80300000'
setenv bootargs 'console=ttyS2,115200n8 rw  mem=55M@0x80000000 mpurate=1000 mem=128M@0x88000000 omap_vout.vid1_static_vrfb_alloc=y omapfb.vram=8M root=/dev/ram0 rw ramdisk_size=65536 initrd=0x8A000000,64M rootfstype=ext2'




如果启动内核出现Error: unrecognized/unsupported machine ID (r1 = 0x00000ae9).这个错误,则修改如下文件的相应machine id内容arch/arm/tools/mach-types


你可能感兴趣的:(Ramdisk文件系统烧写)