赞
踩
(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卡启动,就会出现烧写界面了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。