返回列表 发帖

[站长原创] s3c6410 的boot方式的进阶级讲解

[站长原创] s3c6410 的boot方式的进阶级讲解

s3c6410 boot方式的进阶级讲解

嵌入式开发联盟www.mcuos.com

Osboy站长原创

QQ:82475491

Mcuos.com@gmail.com


(一)
SD卡的boot为例子讲解下上面提到的IROMboot原理

6410IROM要求普通的SD卡的存储镜像位置:




6410IROM要求SDHC卡的存储镜像位置:




对于普通的SD卡,我有个2gsd卡,拿它作为例子:

1)使用本站提供的windows工具完全格式化一次你的sd

2)进到ubuntu的环境下查看SD卡扇区数量:

zswan@zswan-laptop-ubuntu:~/tmp$ sudo fdisk /dev/sdb1

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb1: 2059 MB, 2059278848 bytes

64 heads, 62 sectors/track, 1013 cylinders

Units = cylinders of 3968 * 512 = 2031616 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000


计算扇区数量:

2059278848/512 = 4022029个扇区,按图1的结构,BL1应该烧写在第4022029-18=4022011个扇区当中。BL2应该烧写在第(4022011-BL2扇区数)的中。

飞凌提供的MMC启动的bin文件,其实就是个支持SD卡的uboot,其结构是这样的:


所以为了一次性烧写方便,MMC.bin其实应该是BL2的代码,BL2的前8k字节作为BL1的代码。但是由于BL2,BL1是分着烧写的,不大方便,所以干脆在BL2的后面再附上一个BL1的相同代码,这样结合出来的mmc.bin,我只需要把它烧写到:4022029-2-560mmc.bin280k=560个扇区)= 4021467起始的扇区中去,就可以了。

烧写方法:

Ubuntu环境下:

sudo dd of=/dev/sdb1 if=./mmc.bin count=560 seek=4021467

这样就可以了。

SDHC的类同,只是总的扇区数减去(1026+560)才是mmc bin烧写的位置。


(二)
拷贝的过程


BL1被拷贝到8ksteppingstone中这个是硬件就做好了的。但是BL2被拷贝到SDRAM中是BL1中的代码实现的。在BL1中也使用了IROM硬件code定义好了的copyMMCtoMEM函数,直接从MMC中拷贝BL2的代码。


两次拷贝执行完后MMC.BIN作为一个完整的uboot就已经被拷贝到SDRAM中了。


ok6410的开发板上,SDboot主要的作用就是启动mmc.BINuboot去初始化NAND,把保存在sd
中的uboot.bin, zImage拷贝到内存中,然后写进NAND中,是为了从NANDboot做准备的。有兴趣的就紧接着我的这篇文章研究下mmc.binuboot把看看BL1,BL2的代码如何实现的。

附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

老大,
那是不是说那个SD_Writer.exe自动就会帮我们把mmc.bin烧写到了正确的位置了??

TOP

是的啊

TOP

回复 3# osboy


    那

烧写方法:

Ubuntu环境下:

sudo dd of=/dev/sdb1 if=./mmc.bin count=560 seek=4021467

这样就可以了。

SDHC的类同,只是总的扇区数减去(1026+560)才是mmc bin烧写的位置。



这个的意思就是不用SD_writer.exe的话用这个方法也可以是吗?

TOP

回复  osboy


    那烧写方法:Ubuntu环境下:sudo dd of=/dev/sdb1 if=./mmc.bin count=560 seek=402146 ...
nomaze 发表于 2012-5-12 17:34


是的,你应该看了我的另外一篇帖子了,哈哈。

TOP

回复 5# osboy


    老大,

你的帖子让我受益匪浅啊,哈哈,深入浅出啊

TOP

其实这个硬盘的原理差不多,MBR标志位55AA是一样的,大同小异,不过还是受教了。

TOP

”BL1被拷贝到8k的steppingstone中这个是硬件就做好了的“,这个硬件的实现原理是what?谢谢!

TOP

请教个问题:       按照某些资料上说法,我生成一个sd卡启动的u-boot,u-boot.bin文件大小为192kb,然后用一个脚本生成一个256kb的u-boot-tmp.bin,加上8kb的BL1部分,总共是264kb,这里的280kb的mmc.bin是怎么组成的,求教。
       另外,倘若我不用工具软件,在命令行中对sd卡写入,那只需要根据sd卡类型计算写入位置即可,是这样的吗?

TOP

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服