1. 使用dd命令制作烧写文件
环境:
bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),3M(kernel),2560K(rootfs),10M
MTD partitions :
0x000000000000-0x000000080000 : "boot" 0x000000080000-0x000000380000 : "kernel" 0x000000380000-0x000000600000 : "rootfs" 0x000000600000-0x000001000000 : "app"
材料:uboot.bin, kernel,rootfs.jffs2, app.img
kernel是zImage(没有头部)而不是uImage.
: http://www.cnblogs.com/mylinux/p/3994455.html
由uImage生成zImage: dd if=uImage of=zImage bs=64 skip=1
工具脚本:makeprogrammingflashimg
脚本的写法应该和mtd分区保持一致。
#! /bin/shrm -rf PROGRAMMING.bindd if=$1 of=PROGRAMMING.bin bs=1k conv=syncdd if=$2 of=PROGRAMMING.bin bs=1k seek=512dd if=$3 of=PROGRAMMING.bin bs=1k seek=3584 conv=syncdd if=$4 of=PROGRAMMING.bin bs=1k seek=6144 conv=sync#0.5 3 2.5 10 echo ''echo 'flash.bin address map'echo '0x00000000 : u-boot'echo '0x00100000 : Linux Kernel'echo '0x00200000 : JFFS2'echo '0x00600000 : APP '
操作方法: ./makeprogrammingflashimg uboot.bin kernel rootfs.jffs2 app.img
如果不想使用app分区,直接在脚本里注释掉$4,使用脚本的时候不传入app.img即可。
2.
使用方式: dd [option]
如果你想要在线看 manual, 可以试试:
dd --help 或是 info dd如果你想要看看这个版本如何:
dd --version输入或输出
dd if=[STDIN] of=[STDOUT]强迫输入或输出的Size为多少Bytes
bs: dd -ibs=[BYTE] -obs=[SIZE]强迫一次只做多少个 Bytes
cbs=BYTES跳过一段以后才输出
seek=BLOCKS跳过一段以后才输入
skip=BLOCKS
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。 ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。 skip = blocks 跳过读入缓冲区开头的ibs*blocks块。 obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。 bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。 cbs = byte 一次转换bytes字节。 count=blocks 只拷贝输入的blocks块。 conv = ASCII 把EBCDIC码转换为ASCIl码。 conv = ebcdic 把ASCIl码转换为EBCDIC码。 conv = ibm 把ASCIl码转换为alternate EBCDIC码。 conv = block 把变动位转换成固定字符。 conv = ublock 把固定位转换成变动位。 conv = ucase 把字母由小写转换为大写。 conv = lcase 把字母由大写转换为小写。 conv = notrunc 不截短输出文件。 conv = swab 交换每一对输入字节。 conv = noerror 出错时不停止处理。 conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。