基于“Steppingstone”的Bootloader的设计与优化

时间:2022-09-23 05:52:39

基于“Steppingstone”的Bootloader的设计与优化

摘 要:在嵌入式系统中,Bootloader起着引导加载系统镜像的重要作用,通常运行于具有XIP特性的NOR FLASH中。在以SAMSUNG S3C2440A嵌入式处理器为核心的硬件平台上,基于处理器内置的称为“Steppingstone”的SRAM缓存,设计并实现一个从NAND FLASH启动的Bootloader,对处理器及其内部功能模块进行初始化工作,并通过采用串口下载等方法改进调试过程,提高平台的开发速度,极大地方便了开发人员的研发工作。

关键词:Bootloader;S3C2440A;NAND;Steppingstone

中图分类号:TP368 文献标识码:B 文章编号:1004373X(2008)1609802

Design and Optimization of Bootloader Based on "Steppingstone"

LIU Yuhua,ZHANG Zhe,ZHANG Meng

(National ASIC System Engineering Center,Southeast University,Nanjing,210096,China)

Abstract:In embedded system,Bootloader plays an important part on loading and booting the operating system mirror image.It often runs on NOR FLASH with XIP characteristic.Based on an internal SRAM buffer called "Steppingstone",a bootloader booted from NAND FLASH,which initializes the processor′s function block,is designed and realized on the hardware platform with the core of SAMSUNG S3C2440A embedded microprocessor.Several methods,such as downloading through serial port,are used to improve debugging process,which enhance the platform development speed,enormously facilitate development personnel′s research and development work.

Keywords:Bootloader;S3C2440A;NAND;Steppingstone

随着社会信息化的日益加强,新型嵌入式系统设备广泛应用于工业生产。ARM体系结构的微处理器与Windows CE操作系统的不断应用与推广,有效地促进了嵌入式系统的发展。嵌入式系统由板级支持包(BSP)为系统软件(主要是嵌入式操作系统和用户程序)和目标硬件(包括嵌入式微处理器和设备等)提供接口,其中BootLoader是BSP最重要的组成部分。

1 硬件平台结构

硬件平台采用SAMSUNG S3C2440A作为处理器, S3C2440A作为一款基于ARM920T核

开发的16/32位RISC微处理器,为手持设备等嵌入式系统设备提供低功耗、高性能的微控制器解决方案。

如图1所示,S3C2440A的一大特点是内置了称为“Steppingstone”的SRAM缓存以支持BootLoader 从NAND FLASH而非NOR FLASH启动,因而Bootloader无需再存放于NOR FLASH中。SRAM弥补了NAND FLASH的非XIP特性,为了在NAND FLASH与SRAM,SDRAM间有效地传送数据,S3C2440A通过NAND FLASH 控制器进行管理,由控制器通过相连的Pin脚状态获取相关信息,主要GPIO引脚功能如表1所示:

在此需要特别注意的是,在Steppingstone中运行的镜像是不使用ECC校验的,所以应保证在NAND FLASH的前4 kB空间中,没有任何1位的错误。

2 BootLoader的设计与实现

Bootloader在整个系统中的位置如图2所示,这段在操作系统内核运行之前的程序主要实现以下几项基本功能:

(1) 将系统设置为某一确定的状态,即对系统设备进行初始化;

(2) 更新/加载系统镜像;

(3) 跳转到系统镜像的入口点。

上述几项任务的完成,将系统的软硬件环境置于合适的状态,为最终调用系统内核作好准备。

2.1 Bootloader的流程

由于采用从NAND FLASH启动Bootloader,而Steppingstone的大小仅为4 kB,因而将Bootloader划分为2个阶段:Steppingstone Loader(Stepldr)和XBoot。其中,在Stepldr阶段,代码只负责初始化CPU和一些核心器件,主要完成GPIO口、CPU时钟频率、内存控制寄存器以及UART和NAND FLASH的初始化,并要屏蔽所有中断。初始化工作完成后,即需将XBOOT镜像加载到SDRAM中运行,XBOOT将完成其余系统硬件的初始化直到加载操作系统镜像并启动操作系统。

2.2 软件设计

在嵌人式系统中,Bootloader是依赖于硬件而实现的,不同的体系结构对Bootloader有不同的需求,需要根据不同的板级配置修改相应的Bootloader,以适应不同的应用需要。

2.2.1 BIB文件的配置

在Stepldr阶段的最后部分,需要完成XBOOT镜像加载,并跳转到相应的位置运行。所以,这里在Stepldr代码段中指定的跳转地址必须与XBOOT所存放的地址相一致,才能保证Bootloader的正常运行。

首先,在BIB文件中,对XBOOT镜像的起始地址等参数做如下配置:

MEMORY

; Name Start Size Type

;---- ----- -----

XBOOT 8C078000 00040000 RAMIMAGE

CONFIG

ROMSTART=8C078000

ROMSIZE=00040000

图3显示从NAND FLASH启动时存储空间分配情况。BIB文件中定义了XBOOT起始地址为0x8C078000,但此处所使用的是虚拟地址,而在Stepldr代码中所指定的跳转地址必须为物理地址,因而在映射后定义:

JumpAddr = 0x30078000;

在尾段调用Launch(JumpAddr)函数,即可完成XBOOT镜像的加载运行。

2.2.2 通过串口加载XBOOT镜像

Stepldr镜像只有4 kB大小,可通过并口下载到NAND FLASH中后上电运行;但XBOOT的镜像却达256 kB,若仍通过JTAG下载则需要超过10 min方能完成镜像的下载过程,直接造成每次修改代码后都需要花费很长时间用于镜像的烧录工作,严重影响正常的调试与开发。因而,改进Stepldr代码段中加载XBOOT的方式,不再采用通过JTAG直接访问NAND FLASH的方式将XBOOT读取到SDRAM中运行,而是直接通过串口完成XBOOT的加载过程。串口下载基于XModem通信协议实现。XModem协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议,这种协议以128字节块的形式传输数据,并且每个块都使用1个校验的过程来进行错误检测。因为XBOOT数据量较小,在XModem协议的基础上稍做简化,以便传输更加快捷与方便,简化后数据包格式如表2所示:

定义: 01H, 04H, 06H, 15H , 18H

由于XBOOT镜像是经串口直接下载到SDRAM中运行,因而下载的对象不能是含有压缩数据的BIN文件,而必须为NB0文件,其数据未经压缩,展开以后即可在内存中直接运行,完成加载。

但SDRAM具有掉电易失性,串口下载的完成仅适宜于对XBOOT的调试工作。调试完成后,XBOOT镜像仍需保存到NAND FLASH中。由于Steppingstone的4 kB大小限制,无法在Stepldr代码段中加入SDRAM回写NAND FLASH的内容。所以必须在XBOOT加载运行后,再通过USB或串口方式将XBOOT镜像重新下载至NAND FLASH中,由此达到与原先通过JTAG方式下载异曲同工之效,但由于XBOOT下载时间的大幅缩短,加载整个Bootloader所花费的时间却仅需一两分钟,极大地提高了开发速度。

3 结 语

Bootloader在操作系统和硬件之间起着无可替代的桥梁作用,是设计好嵌人式系统的关键。本文以S3C2440A处理器为例,介绍基于NAND FLASH的Bootloader的成功加载与运行,这一技术应用于工业生产,可使开发工作更为方便快捷,而成本也更低廉,从而更快地推动嵌入式系统设备的发展。

参 考 文 献

[1]S3C2440A 32Bit CMOS Microcontroller User′s Manual [EB/CD].Samsung Electronics,2004.

[2]陈向群,王雷,向勇.Windows 系统分析及实验教程[M].北京:机械工业出版社,2003.

[3]单承刚,戴学丰,刘树东.基于ARM的嵌入式Bootloader设计与启动过程[J].微信息机信息:嵌入式与SOC,

2006(32):139142.

[4]周毓林,陆贵强,付林林.Windows 内核定制及应用开发[M].北京:电子工业出版社,2005.

作者简介 刘裕华 男,1983年出生,江苏赣榆人,硕士研究生。研究方向为嵌入式系统开发。

张 哲 男,1976年出生,东南大学电子科学与工程学院讲师。

张 萌 男,1964年出生,东南大学电子科学与工程学院副教授。

上一篇:全自动坐便器电器控制系统设计 下一篇:AD7705在万能试验机数据采集中的应用