专利名称:加载升级单板启动程序的方法
技术领域:
本发明涉及程序的加载升级方法,特别涉及一种加载升级启动程序的方法。
背景技术:
每一个计算机系统的启动都需要一个BOOTROM来引导,完成功能板CPU最小系统硬件初始化,为整个软件系统提供底层的硬件支持,为操作系统提供设备驱动程序和系统中断服务程序,订制操作系统的功能,为应用软件提供一个实时多任务的运行环境。BOOTROM也是一段软件程序,因而也需要存储载体来存放。BOOTROM的存储载体必须能在系统掉电后保证载体内容不丢失,否则系统掉电后将无法启动,常用的存储载体有EEPROM和FLASH等。BOOTROM只是用来引导系统,正真的系统功能并不在这部分实现,而是在高层软件中实现,因而BOOTROM的功能要求尽量精简,具有相对的稳定性,不会随上层软件的更新而更新,BOOTROM的损坏将导致系统无法启动,并必须借助其它设备来恢复BOOTROM,使系统恢复。由于BOOTROM的这些特点和在系统中的特殊作用及其存储载体的特殊性,人们常把它作为一个硬件设备看待。由于BOOTROM和硬件、操作系统密切相关,系统硬件的变化、操作系统功能的裁减都有可能需要BOOTROM的更新升级。
要将BOOTROM放入到其载体中必须借助其它的系统或设备完成。EEPROM载体多用烧片机烧片的方式来完成BOOTROM的加载。用EEPROM做载体时,BOOTROM载体多设计成可插拔的,因而BOOTROM的升级多采用重新烧片或更换加载有新BOOTROM的载体实现。BOOTROM以FLASH做载体时必须用其它的手段来实现BOOTROM的加载,如JTAG电缆等,这种加载方式非专业人士不易掌握。
BOOTROM的升级可以也采用在线升级的方式完成,在线升级需要上层软件的支持,一般采用文件传送协议,如XMODEM、TFTP、FTP等将新的BOOTROM文件传送到待升级的系统中,然后由系统将收到的BOOTROM软件写入到BOOTROM载体中,系统下次重启后将用新的BOOTROM引导系统,如此便实现了系统BOOTROM的升级。
现有BOOTROM的加载多采用烧片机烧制EEPROM的方式,BOOTROM的升级多采用更换BOOTROM及其载体、重新烧制BOOTROM和在线升级的方式。BOOTROM的烧制过程比较麻烦,要用专门的工具(如烧片机),BOOTROM载体的插拔也需要借助一定的工具。烧制一套只能给一套产品使用。
虽然有些设备提供在线升级BOOTROM的功能,但在线升级需要单板上层软件和文件传送程序(如超级终端的xmodem、Tftp server等)的支持,在线升级存在一定的风险,操作不当或掉电将导致单板启动不了,只能通过更换芯片,该方法解决不了系统第一次启动前的BOOTROM加载。
发明内容
本发明的目的在于提供一种加载升级单板启动程序的方法,以简化升级操作和减少升级风险。
本发明包括步骤A、将存储有升级版启动程序的闪存卡与待升级的功能板连接,并将该功能板存储启动区程序的存储器设置为可写状态;B、将功能板上电并由闪存卡的引导程序启动功能板运行;以及C、由闪存卡将升级版启动程序复制到待升级功能板存储器的启动区域。
根据上述方法预先用烧片机将升级版启动程序烧制到闪存卡的E2PROM中。
在烧制升级版启动程序前还包括将该程序进行压缩的步骤;在步骤C中还包括相应地解压缩的步骤。
待升级功能板通过串口与一终端连接,由该终端监视功能板的串口信息。
本发明采用闪存(flash)卡加载升级BOOTROM,每次只烧制一套EEPROM,即可给所有需要升级的设备加载升级BOOTROM,不用为每一套设备烧制一套EEPROM;而且不用借助其它工具,也不会因加载失败和系统掉电等导致单板无法启动。因此,本发明具有操作简单,可重复利用,以及受外界干扰小等特点。
图1为计算机软件系统结构示意图;图2为闪存卡与单板存储结构示意图;图3为系统正常启动的流程图;图4为本发明的流程图。
具体实施例方式
本实施例以对MA5200 HAC单板中的启动程序升级为例对本发明进行详细说明。
参阅图2,HAC单板上没有用EEPROM存储器作为单板的引导程序(BOOTROM)载体,而是用单板上8M闪存(flash)空间中低端地址部分的空间作为BOOTROM载体,该8M闪存(flash)都是以贴片的方式焊接在单板上。所以BOOTROM的升级不能通过更换或重新烧制EEPROM的方式实现,而必须用加载的方式升级。闪存的8M空间分为启动区和运行区,分别用来存储启动区代码和运行区代码,分别占用flash空间的4M。
启动区的内容主要有单板的BOOTROM,系统的相关配置信息和保证单板能正常加载运行区代码的相关代码,各种逻辑,微码等,启动区的作用是保证系统能够通过软件升级运行区的代码,当单板升级运行区代码失败时(包括升级过程中单板掉电,运行区文件不对等)单板将启动不起来,此时可以强制单板从启动区启动,再次加载运行区代码。启动区可以通过硬件跳线实现写保护功能。
参阅图3,正常情况下,单板上电从BOOTROM引导后将运行代码搬移到内存(SDRAM)中并运行运行区代码,即自动从运行区启动,启动后正常运转。当运行区启动连续多次失败,单板就会从启动区启动自动或等待手动加载运行区代码。
由于启动区的代码主要功能就是加载升级运行区代码,现场有效的代码存放在运行区,因而其代码具有相对的稳定性,其升级操作也不会太频繁,升级时整个启动区是一起升级。现有单板提供在线升级功能,由于更新启动区代码需要同时更新多个软件包,在线升级操作比较复杂,存在一定的风险,一旦在升级过程中单板掉电或某一软件包错误将导致单板不能引导程序不能引导或启动区程序无法启动,此时没法进行进一步的升级操作。
参阅图4,加载升级的主要流程包括步骤将存储有升级版启动程序的闪存卡插在待升级单板的插座上,通过跳线柱将单板上8M闪存的启动区设置为可写状态;对单板上电,由闪存卡的引导程序启动单板运行;闪存卡将升级版启动程序复制到待升级单板闪存的启动区域,直到完成加载升级。
详细的加载升级过程如下(1)用烧片机将版本机上4个压缩的启动区的升级版程序分别烧制到4片EEPROM中。
(2)将4片EEPROM安装到闪存(flash)卡上;该4片EEPROM中的主要内容除了有待升级单板的启动区代码外,还有flash卡的引导程序(BOOTROM)。
(3)将闪存(flash)卡插到待升级单板相应的插座上,用跳线柱将待升级单板上的J12短路器短接,使单板闪存的启动区处于可写状态。
(4)将单板串口线插到单板的调试串口上,另一头接到一计算机(超级终端)的串口上,启动该计算机,设置相应串口通信参数,以监视串口信息。
(5)将待升级单板插入机框并上电,由闪存卡上的引导程序引导单板启动,并将闪存卡4片EEPROM中的升级版程序代码解压缩后写入到单板8M闪存中的启动区域。同时,通过所述计算机监视单板串口信息。
没有插闪存卡时,单板的8M闪存的编址从0开始,插上闪存卡后,闪存卡上的2M EEPROM空间的编址从0开始,单板的8M闪存的编址从4M开始。系统启动的时候固定从物理0地址开始获取指令,这样当没有闪存卡的时候,单板启动就从板载的8M闪存上启动,当有闪存卡的时候,单板启动就从闪存卡上启动。因此,通过硬件设置从而保证单板从闪存卡上的4片EEPROM中启动,即采用闪存卡上的BOOTROM引导单板。
单板从0地址启动后,进行CPU初始化,内存初始化等,然后打开内存管理单元(MMU)和相关地址映射,并启动上层软件。上层软件使用的地址空间是通过内存管理单元映射后的地址空间。如打开内存管理单元和相关地址映射之后,单板的8M闪存空间映射到0×8000000~0×8800000处,因此,闪存卡将升级版程序代码解压缩后写入到该地址范围的启动区域中。
(6)等待一段时间后,系统会在调试串口上提示操作完成,此时,从机框中拔出单板并取下闪存卡,然后取下单板上的跳线柱,完成单板启动区代码升级。
完成加载升级的单板上电后会用刚拷贝到启动区的单板BOOTROM引导系统。
对多个其他单板要进行同样的升级时,不需重新烧制EEPROM,直接用该闪存卡重复操作2~6步就可实现单板启动区的加载和升级。
权利要求
1.一种加载升级启动程序的方法,其特征在于包括步骤A、将存储有升级版启动程序的闪存卡与待升级的功能板连接,并将该功能板存储启动区程序的存储器设置为可写状态;B、将功能板上电并由闪存卡的引导程序启动功能板运行;以及C、由闪存卡将升级版启动程序复制到待升级功能板存储器的启动区域。2、如权利要求1所述的方法,其特征在于预先用烧片机将升级版启动程序烧制到闪存卡的EEPROM中。
3.如权利要求2所述的方法,其特征在于在烧制升级版启动程序前还包括将该程序进行压缩的步骤;在步骤C中还包括相应地解压缩的步骤。
4.如权利要求1所述的方法,其特征在于待升级功能板通过串口与一终端连接,由该终端监视功能板的串口信息。
5.如权利要求1所述的方法,其特征在于对功能板加载升级完成时出现提示信息。
全文摘要
本发明公开了一种加载升级启动程序的方法,该方法包括步骤将存储有升级版启动程序的闪存卡与待升级的功能板连接,并将该功能板存储启动区程序的存储器设置为可写状态;由闪存卡的引导程序启动功能板运行;以及闪存卡将升级版启动程序复制到待升级功能板存储器的启动区域。本发明具有操作简单,可重复利用,以及受外界干扰小等特点。
文档编号G06F9/445GK1517865SQ0313731
公开日2004年8月4日 申请日期2003年6月8日 优先权日2003年1月28日
发明者曹恒盛, 余清波 申请人:华为技术有限公司