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填充)。
