今天接了个小任务, 写个程序用板子上的整个flash做个镜像, 量产的时候要用. 据说之前用那个专用软件读取超慢, 只有几K每秒.

我第一个念头就是可以用dd或者cat, 但总觉得没这么简单, 试过之后发现, 就是这么简单. 而且只要几秒钟, 整个镜像就做好了.

#!/bin/sh

PARTNUM=11

if [ -z $1 ]
then
	echo ERROR: Please specify the output filename
	exit 1
fi

for i in `seq 0 $[$PARTNUM - 1]`;do
	#dd if=/dev/mtd$i >> $1
	cat /dev/mtd$i >> $1
done

exit 0

PARTNUM是板子上的分区数, 我们这个项目是11个分区, 从0到10.

两点说明:
1, 参数只有一个, 即生成的目标文件路径, 可以写到外接usb设备或者nfs目录里.
4, 用mtd或者mtdblock都可以, 生成的文件是一样的, 但这个可能取决于具体情况.