首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式BootLoader技术内幕(2)

嵌入式BootLoader技术内幕(2)

2. Boot Loader 的安装媒介(Installation Medium)

系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。
比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条指
令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPRO
M 或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行 B
oot Loader 程序。

下图1就是一个同时装有 Boot Loader、内核的启动参数、内核映像和根文件系统映像的固
态存储设备的典型空间分配结构图。

http://tech.ccidnet.com/pub/attachme.../12/267984.gif


图1 固态存储设备的典型空间分配结构


3. 用来控制 Boot Loader 的设备或机制

主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来
进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。

4. Boot Loader 的启动过程是单阶段(Single Stage)还是多阶段(Multi-Stage)

通常多阶段的 Boot Loader 能提供更为复杂的功能,以及更好的可移植性。从固态存储设
备上启动的 Boot Loader 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1
和 stage 2 两部分。而至于在 stage 1 和 stage 2 具体完成哪些任务将在下面几篇讨
论。

5. Boot Loader 的操作模式 (Operation Mode)

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

启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boo
t Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并
没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时
侯,Boot Loader 显然必须工作在这种模式下。

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

像 Blob 或 U-Boot 等这样功能强大的 Boot Loader 通常同时支持这两种工作模式,而且
允许用户在这两种工作模式之间进行切换。比如,Blob 在启动时处于正常的启动加载模式
,但是它会延时 10 秒等待终端用户按下任意键而将 blob 切换到下载模式。如果在 10
秒内没有用户按键,则 blob 继续启动 Linux 内核。

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

最常见的情况就是,目标机上的 Boot Loader 通过串口与主机之间进行文件传输,传输协
议通常是 xmodem/ymodem/zmodem 协议中的一种。但是,串口传输的速度是有限的,因
此通过以太网连接并借助 TFTP 协议来下载文件是个更好的选择。

此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和 TFT
P 协议来下载文件时,主机方必须有一个软件用来的提供 TFTP 服务。在讨论了 BootLoa
der 的上述概念后,下面我们来具体看看 BootLoader 的应该完成哪些任务。
继承事业,薪火相传
返回列表