用dd命令生成bin文件,而不用拆flash读取文件

对于linux系统,善用dd命令,可以做到直接生成bin文件,而不用生产拆flash。


1) 读flash,保存成bin文件:
~ $ cat /proc/mtd 
dev: size erasesize name 
mtd0: 00260000 00020000 "U-Boot" 
mtd1: 00020000 00020000 "U-Boot Env" 
mtd2: 00300000 00020000 "U-Boot Logo" 
mtd3: 00440000 00020000 "Kernel" 
mtd4: 0c820000 00020000 "File System" 
mtd5: 02e20000 00020000 "Reserved" 
~ $ dd if=/dev/mtd0 of=/tmp/uboot.bin 
4864+0 records in 
4864+0 records out 
2490368 bytes (2.4MB) copied, 0.509397 seconds, 4.7MB/s 


这样就把uboot存下来了。


2)  读多个分区,保存成一个bin文件
(dd if=/dev/mtd0; dd if=/dev/mtd1; dd if=/dev/mtd2; dd if=/dev/mtd3; dd if=/dev/mtd4; dd if=/dev/mtd5) >/test/4230_flash.bin


顺序保存mtd0-mtd5,这个会有点大,建议mount nfs,写到nfs上去。


当然如果mtd不连续,这个方法就不好用了,只能直接生成。




3)直接生成bin文件
dd if=uboot.bin of=$RELEASE_DIR/9550A_flash.bin seek=UBOOT_START bs=1k 
dd if=uImage of=$RELEASE_DIR/9550A_flash.bin seek=KERNEL_START bs=1k 
dd if=rootfs.ext2 of=$RELEASE_DIR/9550A_flash.bin seek=FS_START bs=1k


将uboot、kernel和文件系统打包成bin。UBOOT_START 等指的是相应的内容在生成的bin文件中的起始偏移(也即在flash中的偏移),注意seek的单位是block(bs)。
要注意的是,这种方法对不连续的区域,是置为全0的。

你可能感兴趣的:(linux/内存管理,flash)