您的位置:首页 > 运维架构 > Linux

关于SD卡启动linux的问题

2017-01-04 10:45 411 查看
(2013年5月14日)经过前段时间的折腾,到今天为止,对于uboot终于有点头绪了,虽然上星期已经成功移植了uboot到tiny210上,但感觉到很多东西都是半懂不懂的。很多都是照搬来。只能说是会用,那个之 所以而然确不一定能说得上来。

 

 

本次对linux下为SD卡烧写uboot.bin的原理与方法进行一个讲解

一、对于网上关于SD卡烧写的问题,得出以下结论:

原命令为:

$sudo dd iflag=dsync oflag=dsync if=tiny210-uboot.bin of=/dev/sdb seek=1

 

此处查资料可得----

dd是linux 的命令语法以及功能如下-

功能说明:读取,转换并输出数据。

语  法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]

补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2
参数:
1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
  obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
  bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
  ascii:转换ebcdic为ascii
   ebcdic:转换ascii为ebcdic
  ibm:转换ascii为alternate ebcdic
  block:把每一行转换为长度为cbs,不足部分用空格填充
  unblock:使每一行的长度都为cbs,不足部分用空格填充
  lcase:把大写字符转换为小写字符
  ucase:把小写字符转换为大写字符
  swab:交换输入的每对字节
   noerror:出错时不停止
   notrunc:不截短输出文件
  sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
 
 
FLAGS参数说明:
append -append  mode  (makes  sense  only  for output; conv=notrunc sug-gested)
direct 读写数据采用直接IO方式;
directory 读写失败除非是directory;
dsync  读写数据采用同步IO;
sync   同上,但是针对是元数据
fullblock 堆积满block(accumulate full blocks of input )(iflag only);
nonblack 读写数据采用非阻塞IO方式
noatime 读写数据不更新访问时间
noctty -do not assign controlling terminal from file
nofollow -do not follow symlinks
 
 

因此,可以知道前面提到的命令

$sudo dd iflag=dsync oflag=dsync if=tiny210-uboot.bin of=/dev/sdb seek=1

意思为:

 

(sudo为超级用户权限)把tiny210-uboot.bin输出到设备sdb上,跳过该设备的第一个block

(每个block的大小为512B,具体原因请参考本节后的图片(在三星官方的irom说明书中提取))

 

  fdisk -l,检查是否识别了USB设备 fdisk -l,检查是否识别了USB设备 找出SD卡对应的设备

 

前提:
    1、SD卡
    2、linux系统,装虚拟机中就行。

步骤:
    1、格式化SD卡为FAT32格式。
    2、把光盘的images复制到SD卡的根目录
    3、linux命令行中执行: dd iflag=dsync oflag=dsync if=Superboot210.bin of=/dev/sdc seek=1
    /dev/sdc SD卡在linux中的设备名字
    Superboot210.bin 友善bootloader文件
    4、linux命令行中执行: sync
    把缓存中的东西强制写入SD卡
    5、开发板从SD卡启动,就会出现烧写界面了 

 


 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: