linux中的dd命令解析:sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1

dd命令的作用(功能)
主用功能是用于拷贝文件,也就是用指定大小的块去拷贝一个文件,并在拷贝的同时进行指定的转换(默认从标准输入拷贝到标准输出,这意味dd可以在管道中使用)。这个拷贝过程简单理解就是读取,转换并输出数据。
语  法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。

dd命令使用示例一
sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1

解析:sudo是超级用户权限,dd是linux 的命令;dsync  读写数据采用同步IO;

iflag=flag                           使用iflag来控制输入(读取数据)时的行为特征。

oflag=flag                         使用oflag来控制输出(写入数据)时的行为特征。

seek=1                              表示跳过第零个扇区,从第一个扇区开始

因此意思是:使用超级用户权限把210.bin读取进来,经过处理再输出到设备sdb上,跳过该设备的第一个block(每个block的大小为512B)

dd命令使用示例二:破坏iNAND的bootloader
S5PV210默认从内置的eMMC中启动,官方默认在这里iNAND中刷入了Android4.0,如果我们想要从SD卡启动,就需要先破坏iNAND中的Android镜像,方法是这样的:

进入android系统控制台,执行如下指令: busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync 
为了确保执行数据有效,再执行sync同步一下,即可破坏掉前一个块的数据。 

linux的dd命令,是用来读写磁盘的,我们把内部的iNAND作为一个磁盘,位于:/dev/block/mmcblk0,也就是我们这里的of输出文件,输入if文件是:/dev/zero,这样就把iNAND写入了全0,写入块大小为512字节(一个扇区),seek表示写入第一个扇区,因为bootloader就是从扇区1开始的,count为1表示写入长度为1个扇区,剩余的扇区不要动,只要破坏一个扇区uboot就启动不起来了。

【S5PV210_iROM_ApplicationNote_Preliminary_20091126】 这份文档中截图如下:

常用选项说明
  bs=比特数          一次读写的比特数
  cbs=比特数        一次转换的比特数
  conv=CONVS    依照每个逗号分割的标志列表转换文件
  count=块数          只将指定个块数复制到块
  ibs=比特数          一次读取的比特数(默认:512)
  if=文件                 从指定文件中读取
  iflag=flag             按照以逗号分隔的符号列表指定的方式读取
  obs=比特数        一次写入指定比特数(默认:512)
  of=文件               写入到指定文件
  oflag=flag            按照以逗号分隔的符号列表指定的方式写入
  seek=块数          在输出开始处跳过指定的块数
  skip=块数           在输入开始处跳过指定的块数
  status=noxfer      禁止传输统计

   status=LEVEL LEVEL用来控制dd程序的输出信息的。分别有三个,“none”,“noxfer”和“progress”,默认是“progress”。“none”的意思是不输出任何相关信息,除非出错信息。“noxfer”不会输出最后的统计信息,而“progress”会输出所有信息。

补充:在上面所有选项的BYTES和N中,我们都可以使用特殊的字符来表示数据大小,常用的有b=512,K=1024,M=1024*1024,G=1024*1024*1024。

flag参数说明
  append      追加模式(仅对输出有意义;隐含了conv=notrunc)
  direct         使用直接I/O 存取模式
  directory    除非是目录,否则 directory 失败
  dsync         使用同步I/O 存取模式
  sync           与上者类似,但同时也对元数据生效
  fullblock     为输入积累完整块(仅iflag)
  nonblock   使用无阻塞I/O 存取模式
  noatime     不更新存取时间
  nocache    丢弃缓存数据
  noctty         不根据文件指派控制终端
  nofollow     不跟随链接文件
 

你可能感兴趣的:(linux设备驱动,应用软件,嵌入式软件)