新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PxA255的U-B00t启动分析及移植

基于PxA255的U-B00t启动分析及移植

作者:时间:2009-05-19来源:网络收藏

摘要:Bootloader在嵌入式系统中是必不可少的重要组成部分,这里使用U-Boot 1.3.O在PXA255的嵌入式系统上,构建引导加载程序。在对目标板的硬件资源进行简要说明之后,详细了U-Boot的流程;接着从参考板的选择、目标板支持文件的建立和相关代码的修改,阐述的全过程;最后给出了编译和调试的方法。结果表明,U-Boot能稳定地运行。将U-Boot到自制的以PXA255为处理器的目标板上,并能成功引导Linux内核,该目标板已经应用于无线传感器网络的汇聚节点,取得了良好的效果。
关键词:U-Boot;PXA255;Bootloader;嵌入式系统;软件

本文引用地址:http://www.eepw.com.cn/article/152485.htm


0 引 言
Bootloader是操作系统运行之前执行的一小段程序,用来初始化硬件设备,建立一个系统空间映射图和一个适当的系统软硬件环境。最终Bootloader把操作系统内核映像加载到RAM中。并将系统控制权交给内核。
U-Boot被认为是功能最多,最具弹性以及开发最积极的开放源码Bootloader。U-Boot已经能够支持PowerPC,ARM,X86和MIPS体系结构的上百种开发板,U-Boot还具有通过TFTP,从IDE或SCSI磁盘以及DOc的能力,还提供了JFFS2的只读功能。正是由于U-Boot较高的可靠性和稳定性;高度灵活的功能设置;丰富的设备驱动程序和丰富的开发和调试文档,因此选择U-Boot作为目标板的Boot-loader。
对于嵌入式系统,Bootloader是特定的硬件来实现的,因此建立一个通用的。Bootloader是不可能的,要使Bootloader能在目标板上运行,必须做出相应的修改。


l 目标板
目标板采用Intel PXA255处理器,频率最高可达400 MHz,配置了32 MB的FLASH(Intel StrataFLASH)和64 MB的SDRAM(Samsung),网卡采用LAN91C96。板上有JTAG口、串口和网口,可分别完成程序的下载和调试工作。目标板的主要硬件资源如图1所示。

2 U-Boot过程
充分理解代码的启动流程,对于准确地判断出移植过程中出错的原因和出错的位置具有重要的作用。
2.1 U-Boot启动的入口点
一个可执行的Image必须有一个入口点,并且只能有一个全局入口。可执行Image的入口一般通过链接脚本文件来实现,链接脚本主要用于规定如何把文件内的section放入输出映像文件内,并控制输出文件内各个部分在程序地址空间内的分布。链接脚本文件位于board目录下的各个开发板目录。
以U-Boot支持的开发板1ubbock为例,查看链接脚本board/lubbock/u-boot.lds,就可以知道各个部分的链接顺序。这个连接脚本决定了U-Boot的第一阶段的代码是从0xO开始的,入口由_start符号指定(ENTRY(_start)),第一个链接的文件是cup/pxa/start.o,那么U-Boot的入口指令一定位于这个程序中。
2.2 U-Boot的启动步骤
U―Boot的启动一般分为stagel和stage2两个部分。依赖于CPU体系结构的代码,通常用汇编语言实现,放在stagel;而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。
根据对链接脚本文件和源代码的,U-Boot的启动过程中函数调用的顺序如图2所示。

2.2.1 stagel部分
U-Boot的stagel代码从人口函数start.S开始,它用汇编语言写成,主要完成的工作为:设置异常向量;设置CPu的速度、时钟频率及中断控制寄存器;初始化内存控制器;将ROM中的程序复制到RAM中;初始化堆栈;转到RAM中执行。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭