u-boot-1.3.4源码分析(1)

GNU提供了免费的编译工具,可从网上下载。针对ARM平台的交叉编译工具有汇编器arm-linux-as, C编译器arm-linux-gcc,连接器arm-linux-ld,以及二进制转换工具arm-linux-objcopy。 GNU的编译器功能非常强大,共有上百个操作选项,满足开发者的各种需要。它的特点是开发成本低,无需昂贵的仿真器,不但可以开发操作系统下运行的程序,也可以开发裸机应用程序[3]。GNU工具都运行在Linux下,开发者需要1台运行Linux的PC作为宿主机,开发后下载到板子上。U-boot,vivi等都利用了这些工具。为开发者的开发提供了很好的范例。

一般地,基于GNU工具的程序开发流程如下:

(1)编写C、C++或者汇编源程序;

(2)用相关编译器生成目标文件;

(3)编写连接脚本;

(4)用连接器生成最终文件(elf格式);

(5)用二进制转换工具生成可下载的二进制代码。

编写适用于本系统的Bootloader以完成最基本的引导操作系统的功能为目的。作为引导程序的基本功能应该包括:

(1)对硬件的初始化,如设置异常向量,设置CPU的速度、时钟频率和中断控制寄存器,初始化内存控制器,初始化堆栈等;

(2)支持文件的下载,串口的Kermit协议下载或者支持tftp协议的网口下载,后者实现相对复杂,但是速度快,可以根据情况选择;

(3)对Flash的操作;

(4)最好支持下载和自举两种工作模式;

(5)解压内核,配置参数等。

其中功能(1)直接涉及硬件,实现时应该使用GNU汇编。

 

本文主要从源码来简单分析u-boot1.3.4,硬件平台基于at91sam9263。

作者: zhanghonghu84   发布时间: 2010-09-14