关键词:Linux;嵌入式系统;BootLoader;Genesis;DDR
引言
引导装载程序(BootLoader)通常是在硬件上执行的段代码。虽然目前在Linux开源社区里有大量的引导装载程序,但是对于很多嵌入式设备上的应用来说,这些引导装载程序都显得过于复杂和冗长。为此,本文专门针对PowerPC E300系列处理芯片,设计了一款小型BootLoader程序,并命名为Genesis。该程序结构简单、功能完善,能很好地引导Linux内核以及文件系统。
环境要求及系统映像
硬件环境
本文中开发的硬件环境如下:处理器采用MPC83xx系列;内存采用512M的DDR2内存;闪存采用8MB的闪存;串口采用uart16550;波特率采用115200。
编译环境
程序在mvl-linux、linux-kernal-2.6.10和gcc编译器环境下编译。
系统文件存放映像
Genesis程序存放在一块闪存里面。对于小型的Linux系统,包括内核和文件系统都和装载引导程序BootLoader一起编译产生二进制文件,存放在闪存中,在上电之后搬移到内存执行。图1就是编译产生的系统文件代码在闪存中以及搬移到内存以后的示意图。
图1 系统文件映像
Genesis的实现
Genesis的主体结构
功能完善的引导装载程序BootLoader必须经过以下几个步骤,即:初始化CPU;初始化内存,包括启用内存库、初始化内存配置寄存器等;初始化串行端口(如果在目标板上有的话);启用指令/数据高速缓存;设置堆栈指针;设置参数区域并构造参数结构和标记(这是重要的一步,因为内核在标识根设备、页面大小、内存大小以及更多内容时要使用引导参数);打开/关闭看门狗;调用主体入口函数;跳转到内核的开始。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。