bootloader的移植

第二阶段:boorloader的移植

 

一. 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

2vivi

vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这vivi的默认模式。如果修改或更新需要进入下载模式,在下载模式下,vivi为用户提供一个命令行接口通过接口可以使用vivi提供的一些命令,来实现flash的烧写、管理、操作mtd分区信息、启动系统等功能。 

其它还有一些bootloader实现如下表所示:

名称

说明

支持的架构

LILO

Linux的磁盘引导加载程序

x86

GRUB

LILOGNU版本

x86

Loadlin

DOS引导Linux

x86

RedBoot

eCos为基础的引导程序

x86 ARMPowerPCMIPS

ROLO

ROM引导Linux,且不需要BIOS

x86

Etherboot

从以太网卡启动Linux系统的固件

x86

LinuxBIOS

Linux为基础的BIOS的替代品

x86

blob

来自LART计划的引导程序

ARM

由于u-boot的通用性好,功能全面,适合初学者学习和使用,我们选用u-boot作为基准代码,在此基础上进行修改,完成移植工作。

二.移植准备

1.目标板: 

这是进行U-Boot移植首先要明确的。可以根据目标板上CPUFLASHSDRAM的情况,以尽可能相一致为原则,先找出 一个与所移植目标板为同一个或同一系列处理器的U-Boot支持板为移植参考板。 

以上图片是本次移植所用到的开发板实物图

一些重要参数如下:

CPU处理器

– Samsung S3C2440AL,主频400MHz,最高533MHz

SDRAM内存

– 板载64MB SDRAM

– 32bit数据总线

– SDRAM时钟频率高达100MHz

– Hynix809E

Flash存储器

– 板载64MB Nand Flash,掉电非易失

– 板载2MB Nor Flash

– K9F1208u00

网卡

– DM9000EP

       

2.源文件:

   选择一标准的u-boot代码:u-boot-1.1.6

3.烧写工具:

u-boot的烧写使用JTAG线进行下载,用SJF2440.exe软件进行烧写,使用DNW终端进行串口调试。用串口线相连。

4.知识储备:

u-boot的目录结构:

目录

说明

board

和一些已有开发板有关的文件,比如makefileU-Boot.ldS等都和具体开发板的硬件和地址分配有关。

common

与体系结构无关的文件,实现各种命令的C文件

cpu

 CPU相关文件,其中的子目录都是以U-Boot所支持的CPU为名,比如子目录arm926ejSmips等,每个特定的子目录都包括cpu.cinterrupt.cstart.s。其中cpu.c初始化CPU、设置指令cache和数据cache等。Interruput.c设置系统的各种中断和异常;start.sU-Boot自动执行时的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础。

disk

Disk驱动的分区处理代码

你可能感兴趣的:(bootloder)