1) 什么是 BootLoader?
BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,
从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
2) BootLoader 有哪几种操作模式?
自启动模式,交互模式。
3) 简述 BootLoader 的 2 个阶段
阶段一:基本的硬件初始化,为第二阶段准备RAM空间,设置堆栈,跳转到第二阶段的C程序接入点。
阶段二:初始化本阶段要用的硬件设备,将内核映像和根文件系统从Flash读到RAM,设置内核启动参数,调用内核。
4) 为什么 BootLoader 由汇编程序和 C 语言程序两部分组成,这样设计的目的是什么?
汇编语言用于依赖于CPU体系架构的硬件的初始化。
C语言用于实现更复杂的内容,使有更好的可读性和可移植性。
5) 在 BootLoader 第 1 阶段为什么要设置堆栈?
为了运行下一阶段的C程序。
6) BootLoader 第 1 阶段测试内存是否可以读写用到了什么算法?
test_mempage
7) 简述 BootLoader 编译过程
为了编译Bootloader程序,需要事先在目标板上安装交叉编译工具Toolchain。(见linux使用手册Toolchain安装部分)。
(1)、利用 tar zxvf Boot-XSBase270.tar.gz 指令解压。
[root@localhost BootLoader]$tar zxvf Boot-XSBase270.tar.gz
利用上述命令解压后,bootloader源代码解压到当前目录中Boot-XSBase270文件夹中。
(2)、编译。在解压的目录里进行make编译。
[root@localhost BootLoader]$ cd Boot-XSBase270
[root@localhost Boot-XSBase270]$make
编译完成后, 在当前目录下会生成bootloader映象文件boot。
8) 列举 3 种常见的开源 bootloader
Redboot,ARMboot,U-Boot
9) Uboot 编译后生成的映像文件位于那个位置?
Boot-XSBase270文件夹中