vivi是韩国mizi公司开发的bootloader,适用于ARM9处理器,支持S3C2410X嵌入式ARM-Linux移植的应用处理器。和所有的bootloader一样,vivi也有两种工作模式,即启动加载模式和下载模式。启动加载模式指在一段时间后(这个时间可更改)自行启动Linux内核,它是vivi的默认模式。下载模式则是指vivi为用户提供一个命令行接口,用户可通过接口使用命令。

2 系统移植方案

在硬件方面,为支持NAND Flash引导模式,S3C2410A处理器在芯片内集成了4 KB的被称为steppingstone的SRAM。NAND Flash引导模式下,系统复位后NAND Flash中的前4位内容首先被复制到steppingstone,接着将steppingstone映射到nGCSO,即内存BankO起始她址为Ox00000000,随后系统开始正常引导。

同样,在软件方面,bootloader程序应被烧写到NAND Flash最前面的部分。通常bootloader程序大于4 KB,因此,在bootloader的前4 KB程序段中,必须先完成内存SDRAM的初始化,并将自身完全复制到SDRAM中,同时设置必要的堆栈,然后跳转到SDRAM中去执行这一系列工作。这样方可完成后续的初始化系统资源及装载操作系统内核的任务。

本次移植使用ARM9开发板,通过跳线方式设置OM[1:0]引脚来支持NAND Flash启动模式,因此,移植方案使用NAND Flash+SDRAM的存储模式,bootloader放在SDRAM中,内核和文件系统都放在NAND Flash中,根据选用的方案,整个系统移植要做的工作包括两方面:

Bootloader:为装载操作系统内核,支持NAND Flash及网络下载和串口通信,从而方便嵌人式ARM.Linux移植以开发调试。

Linux系统:支持NAND Flash,并移植Cramfs+Yaffs混合文件系统;支持NFS文件系统及网络通信、串口等。

3 Linux内核移植

在同一硬件平台上可以嵌入不同的嵌入式操作系统,这就好比PC既可以安装Windows又可以安装Linux一样。同样,有些操作系统经过移植后即可运行在不同的硬件平台上。通常情况下,如果一个系统可以在不同硬件平台上运行,那么这个系统便是可移植的。将某一个平台的代码运行在其他平台上的过程称作移植。嵌入式系统是“硬件可裁剪”的,因此工程师们设计的硬件电路会有所不同,从而使这些代码可能无法正确运行,因而要实现移植就应结合自己的硬件电路,对已有的内核代码进行修改。

3.1 内核移植难点

Linux系统的内核是多层次结构的单体内核,其可移植性比微内核要差一些,但是,这种内核具有较高的效率。从操作系统发展的趋势来看,微内核作为一种先进的操作系统结构,是操作系统发展的一个潮流。但是,微内核结构较低的系统通信效率大大的降低了系统的性能。所以,从系统效率和性能的角度来考虑,Linux并没有采用先进的微内核结构而是选择了传统的单体内核机构。