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

  • 相关阅读:
    day06-Java方法和数组(二)
    day05作业-----------Java方法和数组
    day01作业-------------Java概述
    day04--Java流程控制
    获取数据库连接对象的方法
    oracle数据库时间的处理
    把页面获得的String格式的时间转换成date存入到数据库
    复选下拉菜单
    log4j实现日志记录(搬运)
    js点击按钮打开下拉菜单,再次点击关闭的简单办法
  • 原文地址:https://www.cnblogs.com/mylinux/p/5282341.html
Copyright © 2020-2023  润新知