RBL, UBL, Uboot的关系

1)RBL=ROM Bootloader,UBL=user Bootloader。

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

UBL的程序设计,相对UBOOT、KERNEL、ROOTFS、设备驱动、DSP开发来说,还是比较简单。我们先从DAVINCI的启动说起,了解UBL在DAVIN系统中的位置和作用。对于固件程序烧写在NAND FLASH 的Davinci dm644x嵌入式系统, 上电启动的过程如下:

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;2048字节PAGE的NAND (即LARGE PAGE)保存的地址是:0x20000。至于如何通过XDS560仿真器烧写UBL或通过UART BOOT烧写UBL,本人放在DAVINCI UBOOT移植的文章介绍。(提示:RBL和UBL不要混淆!多看看BOOT的顺序图。)
UBL的移植,比较简单,当然,前提条件你已经搭好交叉编译环境。进入UBL文件包最上层的文件夹,使用make 就可以编译出:ubl_davinci_nand.bin。UBL主要有:
ubl.c
dm644x.c
util.c
nand.c
nandboot.c
nor.c
norboot.c
uart.c
uartboot.c
ubl_davinci.lds
相关的*.h 文件和两个makefile文件。如果最上层的makefile选择$(MAKE) -C src FLASH=nand,表示使用ARM nand flash boot模式,这时NOR,UART BOOT模式相关的c文件不会编译。
介绍一下:
ubl_davinci.lds: 指定UBL的SECTIONS及UBL本身的入口地址;
ubl.c:从selfcopy函数开始运行,COPY自己到RAM,然后跳到正常入口地址,执行boot(),main()等函数,调用DM644xInit(),COPY UBOOT到RAM相关地址,最后执行UBOOT的入口地址(EntryPoint),这时UBOOT就可以运行了。
dm644x.c:主要配置最小系统,比如关中断、PLL1、PLL2设置、DDR2 时序设置、UART设置,等等。
util.c:是一些相关的malloc等公共函数。
nand.c:主要是NAND FLASH的驱动;
nandboot.c:主要是实现NAND_Copy,把UBOOT从NAND COPY到相应的DDR2(RAM)里。
UBL要移植的东西不是很多,主要是在dm644x.c里要定义好:
Uint32 PLL1_Mult = 22;  // DSP=594 MHz for DM6446,DM6441一般使用Uint32 PLL1_Mult = 19;  // DSP=513 MHz。在PLL2Init()函数里,使用不同型号的DDR,要设置不同的参数,即时序参数等,这是关键的地方。
Nand.c及nand.h主要移植就是定义好UBOOT在NAND的存储地址,不同型号的NAND FLASH ,比如SMALL PAGE(512字节)和LARGE PAGE(2048字节)这些都要修改除非你的NAND的类型和TI EVM 兼容。
nandboot.c主要任务就是如何把u-boot.bin或带有头的u-boot.img正确COPY到DDR里,这里最容易出问题,编译出来的U-BOOT文件一般带有Valid magic number(MAGIC_NUMBER_VALID),入口地址entrypaoit,这些信息不对都使UBOOT 运行不起来,建议看一下或COPY UBOOT的image.h。
UBL把UBOOT运行起来,很多事情都可以做了,LINUX KERNEL,ROOTFS,NFS,DSP,设备驱动,应用等等,都可开始按部就班开发。

RBL, UBL, Uboot的关系相关推荐

  1. 底层移植之RBL, UBL, Uboot的关系

    首先RBL = ROM Bootloader,UBL= user Bootloader UBOOT = Universal Boot Loader. RBL为TI固化在芯片ROM中的bootloade ...

  2. AM1808的RBL UBL

    源地址:http://blog.csdn.net/chlputi/archive/2011/05/11/6411004.aspx RBL ( ARM ROM Boot Loader )在芯片出厂的时候 ...

  3. DM36X UBL UBoot

    一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM6467完全是一样的,因为都是ARM926EJS架构,里边都有一个RBL,这RBL在芯片出厂的时候都烧写在ROM里,芯片上 ...

  4. 烧写ubl,uboot,内核。

    原创:http://blog.sina.com.cn/u/2312748742 1.打开超级终端,将开发板设置为串口模式.确定可以收到数据,即bootcm循环,关闭超级终端. 2.用命令打开F:\li ...

  5. 达芬奇系列RBL 简介

    RBL, UBL, Uboot的关系 1)RBL=ROM Bootloader,UBL=user Bootloader. 2)RBL为TI固化在芯片ROM中的bootloader,OMAP上电启动过后 ...

  6. DM368开发 -- Bootloader 开发(转毕设)

    参看:基于 DM368 的高清视频监控系统设计与实现 -- 文波 DM368 的启动过程大致如下: 首先进行启动代码的加载与执行, 主要是指 Bootloader启动阶段,其次启动系统内核并挂载文件系 ...

  7. mx51 uboot启动感悟

    http://blog.csdn.net/evilcode/article/details/6079767 arm内部有rom,该rom有代码,上面驻留着系统真正启动的代码,和uboot没有关系. 通 ...

  8. u-boot nand flash read/write cmd

    支援的命令函數說明 1. nand info/nand device 功能:顯示當前nand flash晶片資訊. 函數調用關係如下(按先後順序): static void nand_print(st ...

  9. MTD NANDFLASH驱动相关知识介绍

    转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877 目录 MTD总概述 MTD数据结构 MTD相关层实现 MTD,Memory ...

最新文章

  1. PHP判断iPhone、iPad、Android、PC设备的方法
  2. java堆栈句柄,深入了解JVM—内存区域
  3. JS判断是移动端还是电脑端访问该网站
  4. spring配置数据源(加载properties文件)
  5. 鸿蒙系统没有优势了吗,“鸿蒙系统”超震撼,带你细数它的优势
  6. webapi get请求 FromUri list参数传递
  7. 【100亿次的挑战】之春晚控制后台故事分享
  8. babylonjs 设置面板位置_一篇关于开关面板的详细集合,值得收藏转发
  9. 听说这样可以加快oracle入表速度
  10. Ubuntu中打开.ipynb文件
  11. NERDTree 快捷键辑录
  12. 利用破解dll来获取到一个软件的注册码
  13. java 删 除文件操作_Java File文件处理 删除文件
  14. 最新AWVS14.9.220913107 支持Windows使用教程(附下载地址)
  15. 移动网优大神VoLTE学习笔记(四):主叫信令流程
  16. 红杉资本投资的企业汇总
  17. java代码防查重工具_代码查重工具sim
  18. 【板栗糖GIS】联想win11如何解决浏览器edge默认页面无法修改的问题
  19. 计算机丢失msvc80.dll,msvcr80.dll
  20. 第7章第31节:四图排版:四张图片两两一组并行排列 [PowerPoint精美幻灯片实战教程]

热门文章

  1. 一行命令搞定AD数据库备份
  2. 996.icu 不加班的程序员有前途吗?
  3. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用
  4. 在 .Net 中使用 Plupload 上传图片
  5. linux 发送邮件
  6. uvm_dpi——DPI在UVM中的实现(一)
  7. HttpWebRequest下载文件,乱码问题解决方案
  8. Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy
  9. 共谋大数据产业发展新篇章
  10. AC日记——信息传递 洛谷 P2661 (tarjan求环)