基于ARM9的BOOTLOADER的设计与实现

时间:2022-06-16 09:36:50

基于ARM9的BOOTLOADER的设计与实现

摘 要

本文介绍了一个基于ARM9处理器的嵌入式系统的Bootloader的设计与实现。针对已知的硬件平台和U-Boot的源代码,简述了交叉编译环境的搭建、U-Boot的配置、编译和烧写过程。结果表明,移植后的U-boot在开发板上运行稳定可靠。

【关键词】嵌入式系统 U-Boot

随着基于ARM核的嵌入式系统的应用越来越广泛,如何加载操作系统成了学习嵌入式系统遇到的第一个难题,这就需要引入交叉编译环境和U-Boot。

1 硬件环境

本文所使用的是基于英倍特公司ATEB9200,根据需要进行修改之后的开发板。主要的修改如下:

两片K4S561632-UC75的SDRAM,;Nor Flash采用INTEL公司的28F128J3A;网卡为DM9161。

2 搭建交叉编译环境

所谓交叉编译环境,即在一个平台上生成可在另一个平台上执行的代码。

.uk上下载交叉编译链cross2.95.3,了解安装路径在/usr/local/arm/下,在目录/etc/profile下设置环境变量,完成后保存退出。

输入命令#echo $PATH,若显示 /usr/local/arm/2.95.3/bin/……说明我们已经成功搭建了交叉编译环境。

3 U-Boot的编译

3.1 U-Boot程序实现的流程

U-Boot的stage1通常包括以下步骤,如图1所示。

Boot Loader的stage2通常包括以下步骤,如图2所示。

3.2 源代码修改

修改Loader.bin

修改 include/main.h;

修改init.c中对SDRAM的初始化。

Boot.bin的源码修改主要是在main.c中:添加两个解压缩函数的定义;修改宏定义;修改打印语句;

修改U-boot.bin:

建立开发板文件,以at91rm9200dk作为模板进行修改。

修主文件的名字,更改config.mk中TEXT_BASE的数值。

添加flash的设备控制程序,注意位宽。

修改u-boot.lds,设置目标文件地址。

根据具体的硬件配置修改at91rm9200dk.h等。

此时,U-Boot的修改已基本完成。运行redhat9.0Linux操作系统,编译生成u-boot.bin、loader.bin和boot.bin.

4 U-BOOT的烧写

使用交叉网线连接com1和开发板。选择片内启动方式,通电后超级终端显示“CCCC”,即可传输loader.bin和u-boot.bin文件,然后把Boot.bin和U-boot.gz两个程序烧录到Flash中即全部完成。重启电脑,显示U-Boot正常运行。在超级终端中具体显示如图3所示。

5 结论

本文根据已有的硬件环境,详述了U-Boot的编译配置和烧写。至于如何在已有的板子上加载Linux内核和文件系统,还需进一步研究。

参考文献

[1]朱继杭,杨世武.基于AT91RM9200的U-BOOT的移植方法[M].中国学院期刊电子出版社,2005,111-112.

[2]Atmel Corporation,AT91RM9200DK U-Boot Flash Programming Solutions.

作者单位

1.中国石油大学胜利学院 山东省东营市 257000

2.山东莱克工程设计有限公司 山东省东营市 257000

上一篇:基于灰色系统理论的数字图像处理算法 下一篇:依托乡土地理课程资源开展地理研究性学习的探...