嵌入式:使用dd命令制作烧写文件

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.

  由zImage生成uImage: http://www.cnblogs.com/mylinux/p/3994455.html

  由uImage生成zImage:  dd if=uImage of=zImage bs=64 skip=1

工具脚本:makeprogrammingflashimg

脚本的写法应该和mtd分区保持一致。

#! /bin/sh
rm -rf PROGRAMMING.bin
dd if=$1 of=PROGRAMMING.bin bs=1k conv=sync
dd if=$2 of=PROGRAMMING.bin bs=1k seek=512
dd if=$3 of=PROGRAMMING.bin bs=1k seek=3584 conv=sync
dd 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.  Linux-dd命令详解 http://www.cnblogs.com/dkblog/archive/2009/09/18/1980715.html

使用方式: 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填充)。 

原文地址:https://www.cnblogs.com/mylinux/p/5282341.html