时间:2022-06-16 09:36:50
摘 要
本文介绍了一个基于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