zz-tiny210-sd卡烧写141029c

//zz//####################################################################################

zz-tiny210-sd卡烧写141029c

zz-write:
@2014-10-28 23:14:34
@2014-11-24 00:03:55
@

REF:
嵌入式Linux学习笔记(基于S5PV210 TQ210)
http://blog.csdn.net/zjhsucceed_329/article/details/32336019
u-boot\学习笔记TQ210陶海武zz141028a时钟宏.pdf
tq210_noos_zz141028b.zip
5-CopySDMMCtoMem
DD_For_Windows.exe

VMware 中怎么用u盘?

http://zhidao.baidu.com/link?url=gdLamVxyyTJf00cLdWjDawYU_TljQGoIene3YYI49a9PCQiqSzvPpC0gBEZMfCmFSPoLYj3B-sybSg9Vdu0prK


KeyWord:


//zz//####################################################################################
1.
编译 5-CopySDMMCtoMem/bl1 出错,提示信息是
arm-linux-ld: cannot find -lgcc

原因:
Makefile 中 -L/opt/... 没有改过来
把这句改好就行了
arm-linux-ld -Ttext 0xD0020010 -o $(OBJ).elf $^ -lgcc -L/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/


//zz//####################################################################################
2.
DD_For_Windows.exe 烧写

sector 1
BL1烧写时候要把"添加头信息"勾上
相当于 addheader.c 编译出的程序,添加的16Bytes 的操作
BL1中的 main() 函数,最后return就行;系统会自动的调用BL2在内存中的程序代码;内存中地址是 iRAM:0xD0022800

sector 20
BL2烧写到这里是由BL1中程序copy决定的,并不一定要是推荐的sector 32处
后面u-boot.bin也说明,大小也无80KB的限制的(just recommended)

//zz//####################################################################################
3.
linux 下的SD卡操作

1)
制作 addheader 软件
# gcc -Wall -O2 addheader.c bl1head

2)
拷贝到 bl1.bin 同一个路径下
# ./bl1head bl1.bin bl1_head.bin
查看文件属性,确实多了16bytes

3)
烧写

查看分区情况的命令
# fdisk -l
# df
# df -hT
查看容量详情及盘符的文件系统类型

###############################################
注意:
插入 USB优盘/SD卡读卡器的时候,要保证鼠标焦点在 VMware里面
只有这样才能让U盘/读卡器 插入到虚拟机中,否则,插入后,USB转串口/USB蓝牙等是可以在 虚拟机=>可移动设备 里面找到;但是U盘/读卡器却不能找到
##############################################

可以看到有个 /dev/sdb1 的盘符就是U盘

# dd bs=512 iflag=dsync oflag=dsync if=bl1_head.bin of=/dev/sdb seek=1
bs=512 表示块大小为512Bytes; seek=1 表示从第一簇开始写

# dd bs=512 iflag=dsync oflag=dsync if=bl2.bin of=/dev/sdb seek=20

################################
参考 write2sd 这个脚本
#!/bin/sh
sudo dd bs=512 iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1

#########################################
实际操作命令记录如下:
# dd bs=512 iflag=dsync oflag=dsync if=bl1_head.bin of=/dev/sdb seek=1
记录了10+1 的读入
记录了10+1 的写出
5204字节(5.2 kB)已复制,0.0595135 秒,87.4 kB/秒

# dd bs=512 iflag=dsync oflag=dsync if=bl2.bin of=/dev/sdb seek=20
记录了4+1 的读入
记录了4+1 的写出
2224字节(2.2 kB)已复制,0.0514541 秒,43.2 kB/秒

结果OK成功:
串口终端输出了两个程序的输出

##### Running in BL1 #####

##### Running in BL2 #####


//zz//####################################################################################
4.
linux 下将BL1 BL2 两个文件合并


将一个文件扩展成 15.5KB 大小(先扩到16K,再去掉尾部512Bytes)
# truncate -c -s 16K bl1_head_x.bin
# truncate -c -s -512 bl1_head_x.bin


将 bl2.bin 添加到 bl1_head_x.bin 尾部去
# cat bl2.bin >> bl1_head_x.bin


将 bl1 + bl2 合并后的文件从 sector 1 写入sd卡
# dd bs=512 iflag=dsync oflag=dsync if=bl1h2.bin of=/dev/sdb seek=1


#########################################
2)
实际命令记录如下:


因为BL2 放的位置是 sector 20 (不是 32 = 0x20),所以bl1.bin扩充到10K
因为SD卡的 bl1.bin 是从 sector 1 开始摆放的,所以实际是扩充 9.5K


# truncate -c -s 10k bl1h2.bin
# truncate -c -s -512 bl1h2.bin


# cat bl2.bin >> bl1h2.bin 


用 winhex 把SD卡的 sector 1 开头几行写0,存盘 => 放到tiny210从SD卡启动,已经不会启动了..
或者使用如下命令清掉 sector 1 的512 bytes
# dd bs=512 iflag=dsync oflag=dsync if=/dev/zero of=/dev/sdb seek=1 count=5
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000255396 秒,2.0 MB/秒
查看一下是否为0
# hexdump -C /dev/sdb -s 512 -n 512


# dd bs=512 iflag=dsync oflag=dsync if=bl1h2.bin of=/dev/sdb seek=1
记录了23+1 的读入
记录了23+1 的写出
11952字节(12 kB)已复制,0.0889259 秒,134 kB/秒


结果OK成功:
串口终端输出了两个程序的输出


##### Running in BL1 #####


##### Running in BL2 #####









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值