AM1808的RBL UBL

源地址:http://blog.csdn.net/chlputi/archive/2011/05/11/6411004.aspx

 

RBL  ARM ROM Boot Loader )在芯片出厂的时候就已经烧写到 ROM 里了,这不需要大家关心,上电后, RBL 会自动从 EMIFA EM_CS2 memory space (0x0200 0000). 执行指令,这个地址就是 NAND FLASH  NOR FLASH 的片选起始地址。当你的系统设置为 NAND BOOT 的时候, UBL  User Boot Loader )是必不可少的,否则 RBL 不能直接把 UBOOT 给 BOOT 起来,因为 RBL 只支持 14K NAND FLASH 的 BOOT 程序,而 UBOOT 编译出来后的 bin 文件一般都大于 80K ,特别是版本越高, UBOOT 的代码越大,所以这时候就需要写一个 UBL 。 UBL 从 NAND FLASH 读取 UBOOT ,然后把 UBOOT COPY  DDR2(RAM) 的相关地址上,然后把 UBOOT  BOOT 起来。根据 TI DAVIN RBL 的规定,不同型号的 NAND FLASH  UBL 保存的地址是不同的, 512 字节 PAGE  NAND (即 SMALL PAGE ),保存的地址是: 0x00004000(16K,32页)  2048 字节 PAGE  NAND (即 LARGE PAGE )保存的地址是: 0x20000 (128K,64页)。

 

 

------------------------------------------------------我想说的话-----------------------------------------------------------------------

看来TI的片子与三星的有所不同。

据我了解,三星的片子上电后会自动从nandflash中搬移4kb到RAM,然后这4K的程序会完成后面的搬移工作。

而TI的片子,说RBL会从nand里执行指令,所以先nand的头上要放个ubl来帮助uboot boot起来。

不知道我这样理解是否正确。

——————————————————————————————————————————————

2011-8-11 添加

RBL, UBL, Uboot的关系:RBL=ROM Bootloader,UBL=user Bootloader。RBLTI固化在芯片ROM中的bootloader,OMAP上电启动过后首先将运行RBL,然后通过RBL加载UBL,再通过UBL加载uboot,而uboot就是用来加载Linux内核的。如果在具体应用过程中不需要使用到Linux(实际上一般都会用到的),uboot甚至是UBL都可以省去。UBL为一级Bootloader,uboot二级Bootloader,一级Bootloader的大小是有限制的(应该是64KB以下,没查到具体数值),这也是为什么会有二级Bootloader的原因。如果一个应用程序小于这个大小,那么我们可以不需要烧写UBL,而只用烧写该应用程序相应的bin文件(下面第3点将阐述如何得到这个文件)就行了。


你可能感兴趣的:(工作,linux,user,Flash,三星,linux内核)