首页 > 系统相关 >S5PV210开发 -- Linux dd命令

S5PV210开发 -- Linux dd命令

时间:2023-04-03 20:08:39浏览次数:54  
标签:字节 S5PV210 dd bytes dev -- 512 SD


昨天群里有人询问,为什么破坏 BootLoader 破坏不掉。

出现错误:dd: writing '/dev/mtdblock0': Operation not permitted

我说需要插着 SD卡才可以。(这个也不对,不插SD卡也可以,那这个错误还是没有搞清楚)

然后我们来看一下它操作指令:

    busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync

    为了确保执行数据有效,再执行 sync 同步一下,即可破坏掉前一个块的数据。

进而引出了我们今天要讲的 dd命令。

参看:Linux dd命令

参看:Learning Linux commands: dd

一、dd 命令

Linux dd命令用于读取、转换并输出数据。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

二、参数说明

if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<关键字>,关键字可以有以下11种:
    conversion:用指定的参数转换文件。
    ascii:转换ebcdic为ascii
    ebcdic:转换ascii为ebcdic
    ibm:转换ascii为alternate ebcdic
    block:把每一行转换为长度为cbs,不足部分用空格填充
    unblock:使每一行的长度都为cbs,不足部分用空格填充
    lcase:把大写字符转换为小写字符
    ucase:把小写字符转换为大写字符
    swab:交换输入的每对字节
    noerror:出错时不停止
    notrunc:不截短输出文件
    sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
--help:显示帮助信息
--version:显示版本信息

三、实例

 

[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1 
1+0 records in 
1+0 records out 
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s 

[root@localhost text]# du -sh sun.txt 
1.1M sun.txt

该命令创建了一个1M大小的文件sun.txt,其中参数解释: 

 

if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。 

of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。 

bs 代表字节为单位的块大小。 

count 代表被复制的块数。

 /dev/zero 是一个字符设备,会不断返回0值字节(\0)。

 

块大小可以使用的计量单位表:

S5PV210开发 -- Linux dd命令_bc

以上命令可以看出dd命令来测试内存操作速度:

 

1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

 

四、解释破坏指令

接下来我们根据 dd 指令参数说明来看一下破坏指令: 

busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync

if 代表输入文件。 /dev/zero 是一个字符设备,会不断返回0值字节(\0)。

of 代表输出文件。/dev/mmcblk0 是一个块设备。

 

bs 代表512字节为单位的块大小。 

seek 代表从输出文件开头跳过 1个块后再开始复制。

count 代表被复制1个块。

conv:若读取的输入块不足512字节,不足部分用空(NUL)字符补齐。

 

注释:输入以上命令的意思为,把板载中iNand的第一个扇区用0来填充,即擦除了iNand的第一个扇区,当再次启动时,IROM还是会先去读取iNand中的前16kb的数据,计算校验和,校验和不通过,启动失败,此时就会执行第二种启动方式即从SD卡启动。
若此时未检测到SD卡,SecureCRT中将会显示:SD checksum Error

分析:

 

然后参看:How to make an image (.img) from what's on the SD card?

使用指令 fdisk -l /dev/mmcblk0 查看:

S5PV210开发 -- Linux dd命令_bc_02

翻译一下:

    磁盘/ dev / mmcblk0:3959 MB,3959422976字节
    229头,33个部门/轨道,1023个汽缸,总计7733248个部门
    单位= 1 * 512 = 512字节的扇区
    扇区大小(逻辑/物理):512字节/ 512字节
    I / O大小(最小/最佳):512字节/ 512字节
    磁盘标识符:0x00000000

可知磁盘大小为 4G,我们的 eMMC 内存大小正好就是 4G 的。可以得出 mmblk0 是 eMMC 的块设备

然后它的单位是 512 字节的扇区。这就是为什么 bs=512 的原因。我们使用 dd 擦除了它的第一个扇区。

 

再思考,删除一个扇区造成了什么影响?

是的,执行完破坏指令,现在将SD卡拔出的情况下,SecureCRT中将会显示:SD checksum Error。

但是我重新将SD卡插入开发板还是可以正常启动进入系统的。就算我将 SD 卡格式化之后,照样可以。

这是为什么??


标签:字节,S5PV210,dd,bytes,dev,--,512,SD
From: https://blog.51cto.com/u_15979522/6167158

相关文章

  • POJ 2773 Happy 2006 二分+容斥原理(二进制枚举或dfs)
    Happy2006TimeLimit: 3000MS MemoryLimit: 65536KTotalSubmissions: 14003 Accepted: 4946DescriptionTwopositiveintegersaresaidtoberelativelyprimetoeachotheriftheGreatCommonDivisor(GCD)is1.Forinstance,1,3,5,7,9...areallrelativel......
  • 日常生活小技巧 -- 文件对比工具 Beyond Compare
    BeyondCompare,文件对比工具,应用还是挺广泛的。下面我们讲一下它的下载安装使用方法。其实很简单!!下载:DownloadBeyondCompare4安装:以管理员身份运行,然后按照提示一步一步的安装即可,没什么好说的。使用:双击new->FolderCompare然后点击Browsefor选择要对比的文件然后进行比较然......
  • LIVE555再学习 -- testOnDemandRTSPServer 源码分析
    一、简介先看一下官网上的介绍:testOnDemandRTSPServer createsaRTSPserverthatcanstream,viaRTPunicast,fromvarioustypesofmediafile,ondemand.(Supportedmediatypesinclude:MPEG-1or2audioorvideo(elementarystream),includingMP3audio;MPEG-4......
  • LIVE555再学习 -- 单播、多播、广播、直播、点播 都是个啥?
    上一篇文章提到单播、多播。但是这是什么意思?接下来我们看一下。参看:搜狗--单播参看:维基百科——单播一、单播简介    Unicast,是客户端与服务器之间的点到点连接。“点到点”指每个客户端都从服务器接收远程流。仅当客户端发出请求时,才发送单播流。Unicast(单播):在客......
  • LIVE555再学习 -- testRTSPClient 实例
    上一篇文章简单看了一遍 testRTSPClient 的源码,接下来举几个应用实例加深一下。首先什么都不做修改,先执行一遍,看一下。一、执行 testRTSPClient 特么,上面的东西我没看明白。。。a=、b=、c=等等这是什么?还有我看别人分析的好像用到什么网络抓包工具,我不知道是什么工具,可能是......
  • LIVE555再学习 -- testH264VideoStreamer 源码分析
    上一篇文章我们已经讲了一部分:testH264VideoStreamer重复从H.264基本流视频文件(名为“test.264”)中读取,并使用RTP多播进行流式传输。 该程序还具有内置的RTSP服务器。Apple的“QuickTime播放器”可用于接收和播放此音频流。要使用它,让玩家打开会话的“rtsp://”URL(程序在......
  • LIVE555再学习 -- testRTSPClient 源码分析
    现在开讲 testRTSPClient。在官网这这样一段介绍,参看:RTSPclient翻译下来就是:testRTSPClient是一个命令行程序,显示如何打开和接收由RTSPURL指定的媒体流,即以rtsp://开头的URL在这个演示应用中,接收到的音频/视频数据什么也没有。但是,您可以在自己的应用程序中使用和调整此代码(......
  • LIVE555再学习 -- Windows 下编译
    然后开始下载编译,其中包含,Windows、Linux和交叉编译三种形式。首先来讲Windows下编译参看:Live555研究之一源代码编译一、下载源码下载:Indexof/liveMedia/public参看:LIVE555StreamingMedia选择下载live555-latest.tar.gz二、文件介绍我的开发环境为win1064位+VS2017将上面......
  • RTSP再学习 -- RTSP协议分析(转载)
    最近一直在看RTSP,但是RTSP协议是个啥?还没有搞清楚。首先流媒体百度百科上有这样一段,从基本的名字上或多或少可以理解一下这些传输协议的区别。这很重要!!传输协议1、RSVP:资源预留协议2、RTP:实时传输协议3、RTCP:实时传输控制协议4、MMS:微软流媒体服务协议5、RTSP:实时流传输协议6、MIM......
  • mysql多实例配置
    实现在一台服务器上开两个数据库服务。配置:[mysqld_multi]user=rootmysqld=/usr/local/mysql/bin/mysqld_safemysqladmin=/usr/local/mysql/bin/mysqladmin[mysqld1]datadir=/dir1port=3307pid-file=/dir1/mysqld1.pidlog-error=/dir1/mysqld1.errsocket=/dir1/mysqld1.sock[mysqld......