文档详情

U-BOOT全线移植分析系列(全集).pdf

发布:2019-03-26约5.27万字共54页下载文档
文本预览下载声明
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
显示全部
相似文档