一. BootLoader简介
应用程序
|
文件系统
|
操作系统内核
|
BootLoader
|
简单的说bootloader是一段程序,它的作用就是加载操作系统,BootLoader(引导加载程序)是系统加电后运行的 第一段软件代码。通过这段代码实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如右图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出 bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。简单的介绍几种:
1.U-BOOT
uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以从下载 U-BOOT是由PPCBOOT发展起来的,是PowerPC、ARM9、Xscale、X86等系统通用的Boot方案,从官方版本 0.3.2开始全面支持SC系列单板机。u-boot是一个开源的bootloader。
2.vivi
vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这是vivi的默认模式。如果修改或更新需要进入下载模式,在下载模式下,vivi为用户提供一个命令行接口通过接口可以使用vivi提供的一些命令,来实现flash的烧写、管理、操作mtd分区信息、启动系统等功能。
其它还有一些bootloader实现如下表所示:
名称
|
说明
|
支持的架构
|
LILO
|
Linux的磁盘引导加载程序
|
x86
|
GRUB
|
LILO的GNU版本
|
x86
|
Loadlin
|
从DOS引导Linux
|
x86
|
RedBoot
|
以eCos为基础的引导程序
|
x86 、ARM、PowerPC、MIPS等
|
ROLO
|
从ROM引导Linux,且不需要BIOS
|
x86
|
Etherboot
|
从以太网卡启动Linux系统的固件
|
x86
|
LinuxBIOS
|
以Linux为基础的BIOS的替代品
|
x86
|
blob
|
来自LART计划的引导程序
|
ARM
|
由于u-boot的通用性好,功能全面,适合初学者学习和使用,我们选用u-boot作为基准代码,在此基础上进行修改,完成移植工作。
二.移植准备
1.目标板:
这是进行U-Boot移植首先要明确的。可以根据目标板上CPU、FLASH、SDRAM的情况,以尽可能相一致为原则,先找出 一个与所移植目标板为同一个或同一系列处理器的U-Boot支持板为移植参考板。
以上图片是本次移植所用到的开发板实物图
一些重要参数如下:
CPU处理器
– Samsung S3C2440AL,主频400MHz,最高533MHz。
SDRAM内存
– 板载64MB SDRAM
– 32bit数据总线
– SDRAM时钟频率高达100MHz
– Hynix809E
Flash存储器
– 板载64MB Nand Flash,掉电非易失
– 板载2MB Nor Flash
K9F1208u00
本文转自 chen138 51CTO博客,原文链接:,如需转载请自行联系原作者