U-BOOT全线移植分析系列之一――――BOOTLOADER介绍

本文详细介绍了Bootloader的基本概念、移植必要性、支持的CPU和嵌入式系统板、烧录存储方法、操作模式以及与主机的通信设备和协议。重点讨论了Bootloader的启动加载和下载模式,以及其通用执行流程,包括Stage1和Stage2的职责。

【摘要】本节介绍了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 制造商预先安排的地址上取指令。 比如,at91rm9200CPU 在复位时通常都从 地址0x00000000 取它的第一条指令。而MPC8260 高端启动则时从0xfff00000 开始取指。 这个地址依据特定的 CPU 而定 通常片外启动时, 基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备 EEPROM FLASH 等, at91rm9200 0x10000000 ) 被映射到这个预先安排的地 址上。因此在系统加电后,CPU 将首先执行Boot Loader 程序。

 

那么bootloader 最初是怎么烧写到flash 中的呢?对于 一个裸板怎么让它跑起来呢? 有两种方式:

1,   通过片内固化的 loader 加载 bootloader 通常某些CPU 内部 ROM 中固化 了一段程序可以用于最初的程序下载,如AT91RM9200 。 这时下载的程序是在内部RAM 中运行的,大小有一定限制,然后由这段程序继续交互下载真正要烧写到flash 中的程序,将其 保存在外部RAM 中,最终烧写到flash 中。

2 ,    通过 JTAG 或者仿真器下载: 通常这些烧录工具可以直接操作flash ,对其进行编程烧录。需要专门的工 具。这种情况多用于那些没有固化loaderCPU ,如三星系列。

 

上图是一个同时装有Boot Loader 内核的启动参数 、内核映像和根文件系统映像的固态 存储设备的典型空间分配结构图。 上述顺序是可变的,但 bootloader 首地址一定要在 CPU 复位取指的地 址上。

 

1.4 Boot Loader 的操作模式(Operation Mode)

主机和目标机之间一般 通过串口建立连接 BootLoader 软件在执行时通常会通过串口来进行数据传输,如输出打印信息到串口,从串口读取用户控制字符。

 

大多数Boot Loader 都包含 两种不同的操作模式:启动加载模式和下载模式 ,这 种区别仅对于开发人员才有意义。从最终用户的角度看, BootLoader 的作 用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。

1,    启动加载 (Boot loading) 模式:这种模式也称为自主模式 bootstrap 。也即 Boot Loader 将存储在目标板 Flash 中的内核和文件系统的镜像装载到 SDRAM 中,整个过程无需用户的介入。这种模式是 BootLoader 的正常工作模式, 因此在嵌入式产品发布的时候, BootLoader 显然必须工作在这种模式下

2,   下载 Downloading 模式:在这种模式下,目标机上的 BootLoader 将通过 串口连接或网络连接等通信手段从宿主机 Host 下载文件 ,比如 下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader 保存到目标机的 RAM 中,然后再 被 BootLoader 写到目标机上的 FLASH 类固态存储设备中 BootLoader 的 这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新(bootloader 自身也可以这样更新)也会使用Boot Loader 的这种工作模式。工作 于这种模式下的BootLoader 通常都会向它的终端用户提供一些简单的命令行接口。

 

U-BOOT 等这样功能强大的BootLoader 通 常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,U-BOOT 在启动时处于正常的启动加载模式,但是它 会延时几秒 ( 在配置文件中可以 设定 ) 等待终端用户按下任意键而将其切换到下载模式(相当于 bios 下按 del 键可进入系统配置界面一样,设置从光盘启动可进行重装) ,如果在给定时间内没有用户按键,则U-BOOT 继续启动, 进行正常的启动加载。

 

1.5 Bootloader 与主机之间进行文件传输所用的通信设备及协议

最常见的情况就是,目标机上的BootLoader 通 过串口与主机之间进行文件传输,传输协议通常是 kermit / xmodem / ymodem 协议中的一种。但是,串口传输的速度是有限的,因此如果该Bootloader 对目 标板的网卡支持良好,还可以通过以太网连接并借助 TFTP (Trivial File Transfer Protocol) 协议来下载文件是个更好的选择 。此时,主机方所用的软件也要考虑,比如,在通过以太 网连接和TFTP 协议来下载文件时,主机方必须有一个软件用来提供TFTP 服务,如Windows 平台上的tftpd.exe 等或Linux 下面的tftp 服务器。

 

1.6 Bootloader 的通用执行流程

从操作系统的角度看,Bootloader 的总 目标就是正确地调用内核来执行。另外,由于Bootloader 的实现依赖于 CPU 的体系结构,因此大多数Bootloader 都分为 stagel stage2 两大部分 。依赖于CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stagel 中,而且通常都用汇编语言来实现 ,以达到短小精悍和高效的目的。而 stage2 则通 常用 C 语言 来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。

 

Bootloaderstagel 位置无关代码,通常在 FLASH 中运行。 所有的指令为相对寻址,可以在任何位置运行。 通常包括以下步骤( 以执行的先后顺序)

Ø        硬件设备初始化(配置 SDRAM 存储控制器及 IO ),中断初始化;

Ø        为加载 Bootloader stage2 准备 RAM 空间(这个地址由链接脚本指定,为运行域地址,通常为 RAM 的高端地址),测试内存空间是否有效;

Ø        拷贝 Bootloader stage2 RAM 空间中;

Ø        设置好堆栈;

Ø        跳转到 stage2 C 入口点。

 

Bootloaderstage2 通常被 拷贝到 RAM 中运行,这样 可以提高运行速度 。通常包 括以下步骤( 以执行的先后顺序)

Ø        初始化本阶段要使用到的硬件设备;

Ø        检测系统内存映射 (memory map)

Ø        没有用户干预时将 kernel 映像和根文件系统映像从 flash 读到 RAM 空间中;

Ø        为内核设置启动参数;

Ø        调用内核。

 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/sailor_8318/archive/2008/08/04/2768049.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值