新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM-Linux嵌入式系统引导程序的设计

基于ARM-Linux嵌入式系统引导程序的设计

作者:时间:2012-11-01来源:网络收藏

0.概述

  在专用的嵌入式开发板上运行操作系统(如Linux)已经变得越来越流行,而就是为引导操作系统内核运行的一段代码。通过它可以初始化硬件设备、建立或检测内存空间的映射,其功能有点类似于PC机的BIOS(基本输入输出系统)程序。它的主要作用是为运行操作系统提供基本的运行环境,并操作系统的内核装载到存储器(RAM)中的合适位置上去运行。本文将以Samsung公司的开发板为开发平台,具体阐述了的运行原理与实现分析。

  程序与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有着密切关系,因此要为所有类型的嵌入式开发板建立一个通用的Bootloader几乎是不可能的。尽管如此,本文将尽量对Bootloader归纳出一些通用的概念,以帮助特定用户设计实现自己的Bootloader。


1.系统组成

  典型的ARM嵌入式系统硬件平台一般包括一个以ARM为内核的处理器、存储器和必要的外部接口与设备。在本系统中,采用内嵌ARM920T的Samsung公司处理器,工作频率200MHz,存储器使用2MB的NorFlash和64MB的SDRAM,外部接口除了用于下载和通信的串口,还配备有以太网接口、USB接口。
软件平台由以下部分组成:Bootloader、嵌入式操作系统内核(Kernel)、文件系统(Filesystem)[1]。其中,嵌入式操作系统内核是嵌入式系统加电运行后的管理平台,负责实时性任务和多任务的管理。文件系统是嵌入式系统软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分。它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。



2、Bootloader运行流程
  系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。比如SansungCPU,在系统加电或复位时就会从地址0x00000000处读取它的第一条指令。基于CPU构建的嵌入式系统则通常都会有某种类型的固态存储设备(如本例中的FLASH)被映射到这个预先安排的地址上,而Bootloader程序一般正是被烧录或者下载到固态存储设备的0x00000000地址处,因此在系统在加电或复位后,CPU将会首先执行Bootloader程序。

  由于Bootloader的实现依赖于CPU的体系结构,因此Bootloader功能的实现基本可分为Stage1和Stage2两大部分,分别运行于系统的ROM和RAM中。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在Stage1中,基本都用汇编语言来实现,以达到简短精练的目的。而Stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性[3]。

3.1其中,Bootloader的Stage1通常依次执行以下主要步骤:

3.1.1硬件设备初始化。


  其目的是为执行Stage2及随后的操作系统Kernel准备好一些基本的硬件环境。

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭