返回列表 发帖

[站长原创] s3c6410 的boot方式的入门级讲解

[站长原创] s3c6410 的boot方式的入门级讲解

s3c6410 boot方式的入门级讲解

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

Osboy站长原创

QQ:82475491

Mcuos.com@gmail.com


(一)还不了解什么是bootloader

那就请先看看这篇帖子,对bootloader有个大致的概念吧。

http://mcuos.com/thread-349-1-1.html

如果你没时间读,那就看下面我的总结:


1)你应该有下面这些基本概念。

那就是NOR flash,内存(ddr,sdram,ram…)作为存储介质,都是可以直接运行程序的,SD,EMMC,NANDflash一定不能运行程序,只能充当存储介质。而且这些硬件都是死的啊,只能通过软件,对其进行初始化过才能访问的。

2)提到Bootloader这个软件概念,你一定会想到uboot

想不到uboot的那你真应该看看上面的那个链接哦:),uboot是干什么的?就是初始化内存,NANDSD等的一些外设,程序搬运的功能。

3)那么uboot为什么要初始化这些外设啊?

根据(1)的分析,如果你的程序是存储在NAND,SD中的话,在这些设备里不能运行程序啊,那怎么办?只能把程序拷贝到能够运行的存储介质中啊,这个介质就是DDR内存。拷贝的动作不是需要从NAND,SD中读出来,然后写进DDR中去的动作嘛,根据(1)的介绍这些外设必须先经过初始化才能访问的哦。

4)先有鸡还是先有蛋?

根据(3)的分析,以NANDboot为例子。

如果访问NANDDDR必须软件对其初始化;如果想初始化NAND DDR,必须读NAND,然后写到DDR中软件才能运行。死循环:软件先能运行才能初始化NAND DDRNAND DDR必须先初始化才能使软件能够运行……

5)解决先有鸡先有蛋问题的方法

我相信上帝创造了鸡,然后鸡下了蛋,然后蛋再孵成鸡,因为上帝很忙,所以不可能每只鸡都他都创造啊,其他的鸡就靠蛋来孵啦。(姑且这么认为吧)

这里把”NAND SDRAM初始化比喻成鸡,软件能够运行比喻成蛋。那么上帝就是6410IROM。这个比喻并不贴切,只是要大家有这个概念,下面引出我们重要的结论。


IROM应该是固化在芯片中的硬code,上电开机CPU自动运行IROMIROM初始化了boot device这里是NAND(创造了鸡),并且把NAND中的号称uboot的前4kboot代码(称为BL1)拷贝到芯片内置的ram中,BL1ram中执行初始化SDRAM的工作,然后把ubootC代码(称为BL2)拷贝到SDRAM中运行。那么现在号称BL2boot程序也可以运行了。在以后的程序阶段uboot将会对很多外设初始化,然后loadkernel。对SD卡的boot方式类同。


下面给出一张boot图:


(6)boot设备的选择

boot设备的选择是有讲究的,属于硬件级别的支持,ok6410支持nand,sd卡boot。

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

非常感谢。。。弄懂原理性的东西,我觉得是学习技术最重要的

TOP

谢谢.......

TOP

iROM 初始化NAND 之后初始化DDR

DDR再执行u-boot,u-boot再执行stage1,stage2

再读取OS第一行执行开始启动OS

TOP

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