新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于U-BOOT的S3C44B0引导装载程序的设计与实现

基于U-BOOT的S3C44B0引导装载程序的设计与实现

作者:时间:2012-05-21来源:网络收藏

引言

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

嵌入式Linux的引导装载程序()是操作系统内核启动之前运行的一段程序,其作用与PC机上的BIOS类似。通过这段程序,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好正确的环境[1]。 与底层硬件相关密切,即每个不同配置的目标板都有不同的。对于两块不同的嵌入式板,即使它们使用同一种CPU构建,要想让运行在其中一块上的Bootloader程序也能够运行在另一块板子上,通常也都需要修改Bootloader源程序。

嵌入式系统的硬件部分不可能是完全一致的,不可能有通用的bootloader。因此,需要针对硬件系统进行有关引导程序的设计。对于嵌入式系统来说,引导程序比较复杂,一般采用对基本符合硬件体系要求的现有引导程序进行移植,然后加以应用的方法设计引导程序。本文我们选择功能强大的U-BOOT进行移植。

1.简介

,全称Universal Boot Loader,是德国DENX小组开发的用于多种嵌入式CPU的Bootloader引导程序,遵循GPL条款的开放源码项目。U-Boot是在 ppcboot以及armboot的基础上发展而来,现在已经非常成熟与稳定,在许多嵌入式系统开发过程中被采用。目前支持的目标操作系统包括 VxWorks、QNX、RTEMS、NetBSD、Lynxos等。就目前来看,对PowerPC系列处理器支持最丰富,同时还支持 MIPS,x86,ARM,Nios,XScale等诸多常用系列的处理器。U-BOOT对Linux的支持非常完善,是嵌入式Linux Bootloader的最佳选择。

U-BOOT支持的主要功能:

◆系统引导——支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统,从Flash中引导压缩或非压缩系统内核。

◆基本辅助功能——强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最强劲。

◆设备驱动——串口、SDRAM、以太网、PCI、RTC等驱动支持。

◆上电自检功能——自动检测FLASH、SDRAM选型及使用情况。

2.U-boot的启动流程[2]

从操作系统的角度看,Bootloader的总目标就是正确的调用内核来执行。由于Bootloader的实现依赖于CPU的体系结构,因此U-BOOT启动大多数分为stage1和stage2两大部分。

第一阶段主要包含依赖于CPU的体系结构硬件初始化代码,通常都用汇编语言来实现。U-BOOT的stage1如图1所示。通常包括以下步骤:

①基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据cache等)。

②为加载Bootloader的Stage2准备空间。

③如果是从某个固态存储媒质中,则拷贝Bootloader的stage2到RAM空间中。

④设置好堆栈。

⑤跳转到stage2的C程序入口点。

第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的任务有: ①初始化本阶段要使用到的硬件设备。②检测系统内存映射。③将kernel映像和根文件系统映像从flash上读到RAM空间中。④为内核设置启动参数⑤调用内核。


上一页 1 2 3 下一页

关键词: Bootloader U-BOOT S3C44B0

评论


相关推荐

技术专区

关闭