U-BOOT全线移植分析系列(全集).pdf
文本预览下载声明
U-BOOT 全线移植分析系列之一
――――BOOTLOADER 介绍
Sailor_forever sailing_9806@163.com 转载请注明
/sailor_8318/archive/2008/08/04/2768049.aspx
【摘要】本节介绍了bootloader 的基本概念。首先分析了为什么要针对特定的CPU 和开发
板移植bootloader 的必要性。然后介绍了两种如何在裸板中烧写bootloader 的方法以及如何
确定烧写地址。其次介绍了产品发布的启动加载模式和开发使用的下载模式(更新内核文件
系统及bootloader 自身)。最后介绍了bootloader 的两个通用启动阶段的流程及代码特性和
运行位置。
【关键词】bootloader ,烧写,复位地址,固化loader ,启动加载,stage1,位置无关
一 bootloader 介绍
1.1 Bootloader 移植的必要性Bootloader 是与系统硬件环境高度相关的初始化软件,它担负
着初始化硬件和引导操作系统的双重责任。一些ARM 平台可以共用同一种Bootloader ,但
是总的说来,每一个特定系统的Bootloader 都会有所不同。Bootloader 广泛用于有操作系统
的手持终端设备、智能家电及机顶盒等嵌入式设备上,它负责完成硬件初始化、操作系统引
导和系统配制等。Bootloader 移植是在特定硬件平台上操作系统移植至关重要的一步。
1.2 BootLoader 所支持的 CPU 和嵌入式系统板每种不同的 CPU 体系结构都有不同的
BootLoader 。有些BootLoader 也支持多种体系结构的CPU,比如U-BOOT 就同时支持ARM 、
MIPS、POWERPC 等体系结构。除了依赖于CPU 的体系结构外,BootLoader 实际上也依赖
于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们是基
于同一种CPU 而构建的,要想让运行在一块板子上的BootLoader 程序也能运行在另一块板
子上,通常也都需要修改BootLoader 的源程序。
1.3. Boot Loader 的烧录和存储系统加电或复位后,所有的CPU 通常都从某个由CPU 制造商
预先安排的地址上取指令。比如,at91rm9200 的 CPU 在复位时通常都从地址 0
取它的第一条指令。而MPC8260 高端启动则时从0xfff00000 开始取指。这个地址依据特定
的CPU 而定。通常片外启动时,基于CPU 构建的嵌入式系统通常都有某种类型的固态存储
设备(EEPROM 或FLASH 等,at91rm9200 是0被映射到这个预先安排的地址上。
因此在系统加电后,CPU 将首先执行Boot Loader 程序。
那么bootloader 最初是怎么烧写到flash 中的呢?对于一个裸板怎么让它跑起来呢?有两种方
式:
² 通过片内固化的loader 加载bootloader :通常某些CPU 内部ROM 中固化了一段程
序可以用于最初的程序下载,如AT91RM9200 。这时下载的程序是在内部RAM 中运行的,
大小有一定限制,然后由这段程序继续交互下载真正要烧写到flash 中的程序,将其保存在
外部RAM 中,最终烧写到flash 中。
² 通过JTAG 或者仿真器下载:通常这些烧录工具可以直接操作flash,对其进行编程
烧录。需要专门的工具。这种情况多用于那些没有固化loader 的CPU,如三星系列。
上图是一个同时装有Boot Loader 、内核的启动参数、内核映像和根文件系统映像的固态存
储设备的典型空间分配结构图。上述顺序是可变的,但bootloader 首地址一定要在CPU 复
位取指的地址上。
1.4 Boot Loader 的操作模式(Operation Mode)主机和目标机之间一般通过串口建立连接,
BootLoader 软件在执行时通常会通过串口来进行数据传输,如输出打印信息到串口,从串口
读取用户控制字符。
大多数Boot Loader 都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对
于开发人员才有意义。从最终用户的角度看,BootLoader 的作用就是用来加载操作系统,而
并不存在所谓的启动加载模式与下载工作模式的区别。
² 启动加载(Boot loading)模式:这种模式也称为自主模式bo
显示全部