Bootloader通常称为系统的引导程序,是系统加电或复位后执行的第一段代码[1]。一般他只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境,并同时提供基本输入、输出系统监控功能和程序调试功能。不同的CPU有不同的Bootloader,即使他们是基
Bootloader通常称为系统的引导程序,是系统加电或复位后执行的第一段代码[1]。一般他只在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境,并同时提供基本输入、输出系统监控功能和程序调试功能。不同的CPU有不同的Bootloader,即使他们是基于同一种CPU而构建的,要想让其运行在一块目标板上的BOOtloader程序也能运行在另一块目标板上,通常也都需要修改与目标硬件相关的代码。因此有必要分析Bootloader,并理解和找出其中的原理和规律,就其特定的嵌入式系统,移植并能够运行其上的Bootloader。
1 系统硬件平台简介
本系统采用的是SamSung公司的S3C2410处理器[2],他是专门为移动手持设备提供的高性价比和高性能的嵌入式微处理器解决方案。其内核是ARM920T,最高能工作在202.8 MHz,为了减少系统总成本和减少外围器件,他集成了如下部件:分别为16 kB指令和数据Cahce、1个LCD控制器、SDRAM控制器、NANDFLASH控制器、3通道UART、4通道DMA、4个具有PwM功能的计时器和1个内部时钟、8通道10位ADC、触摸屏接口、I2S总线接口,2个L1SB主机接口、1个L]SB设备接口,2个SPI接口、SD和MMC卡接口、看门狗定时器、117位通用I/O口、24位外部中断源、8通道10位A/D控制器等。本文涉及的S3C2410开发板的硬件结构如图1所示。本文主要阐述从Norflash引导操作系统要完成的主要任务和实现方法,至于从Nandflash引导操作系统,不打算介绍。