基于Power PC系列处理器的BootLoader设计与应用

2020-03-30 07:05李兴国
铁路通信信号工程技术 2020年1期
关键词:串口备份应用程序

李兴国,周 荣,李 旭

(北京全路通信信号研究设计院集团有限公司,北京 100070)

1 概述

BootLoader 技术是应用在Flash 程序存储器的一种编程模式。它可以在应用程序正常运行的情况下,通过调用特定IAP 程序对另外一段Flash 空间进行读与写操作,这样就可以按照传入数据重新配置Flash 空间,从而实现对MCU 程序的更新。相较使用JTAG 工具的传统烧录方法,这种技术为铁路现场固件升级带来了更大的灵活性。

在实际应用中,需要在编译器上开发2 个固件程序:BootLoader 程序和用户程序。首先必须使用烧录工具下载BootLoader 代码,用户代码可以使用BootLoader 代码IAP 功能下载,也可以使用烧录工具下载,一般在现场应用中都使用BootLoader更新用户程序。这两部分项目代码需要同时烧录在 Flash 中,BootLoader 程序用于更新用户程序,用户程序用于实现具体应用。单片机上电进入BootLoader 程序区,如果收到更新程序指令,则对APP 区的程序进行改写操作。如果未收到更新程序指令,程序指针跳到APP 区,开始执行放在APP 区的程序,这样便实现了升级程序的功能。传统使用BootLoader 更新固件程序,大致流程如下。

1)当给芯片上电后,首先执行BootLoader 程序。

2)检查是否需要更新用户代码。

3)如果不需要更新,执行原用户程序。

4)如果需要更新,擦除用户程序区,写入新用户程序,并执行新用户程序。

BootLoader 是以从串口上接收更新标志后进入烧写程序状态的。进入烧写程序状态后,BootLoader 程序做的第一件事情就是擦除原用户程序的空间。如果在程序升级过程中,发生掉电或者通信连接断开的情况,单片机就会处于新程序未更新完毕,原程序已丢失的情景,导致程序更新失败。

为解决这个问题, 本文提出一种解决方法,在Flash 空间划出一个区域用于备份用户程序,MCU进入BootLoader 引导程序后,在收到更新程序指令时,先将程序写入备份区,写入完成后置位待更新标志Upsig,通知MCU 需要更新程序,然后再将备份区程序写入用户程序区,写入完成后清零待更新标志Upsig。因此在每次进入BootLoader 程序,通过读取Upsig 值用来判断是否需要更新程序,相较于传统BootLoader 下载程序的方法,本文提出的方法可以降低风险,保障下载程序的完整性。

2 下载系统硬件构成

基于在C3+ATO 项目的应用中,所述下载系统包括:远程控制模块、通信模块、程序下载控制模块、存储模块,功能结构框如图1 所示。远程控制模块用于提供交互式操作入口,通过交互式操作入口控制所述程序下载,控制模块执行下载流程,远程控制终端为SecureCRT 终端软件。通信模块将系统与所述远程控制模块相连接,本应用使用串口通信。程序下载控制模块包括:下载单元和执行单元,下载单元用于下载应用程序到所述存储模块,执行单元用于执行或更新应用程序。嵌入式系统的处理器是Power PC 系列处理器。

图1 下载系统功能结构框图Fig.1 Block diagram of functions of download system

2.1 CPU模块结构设计

在本应用中使用的硬件环境如下:MCU 选用Freescale 公司的处理器MPC8323E,闪存采用16 M Flash,内存采用2 GB DDR2,设置串口波特率230 400。硬件结构框如图2 所示。

图2 CPU模块硬件结构框图Fig.2 Block diagram of hardware of CPU module

在本应用中,MCU采用Freescale公司的MPC8323E 微处理器, 具有强大的功能。MPC8323E 是Freescale 公司PowerQUICC ™ II Pro 系列的微处理器,此系列微处理器在Power Architecture 架构的e300c2 内核基础上,配置单RISC 版本的QUICC Engine ™通信引擎形成MPC8323E 网络功能的核心,最高可达300 MIPS处理能力。

2.2 Flash存储区分割

根据前面的介绍,需要将Flash 存储分为4 部分:第1 部分为BootLoader 程序区,第2 部分为BootLoader 参数区,第3 部分为应用程序区,第4 部分分配为应用程序备份区。如图3 所示,将Flash 分区划分为如下4 个部分:BootLoader 程序区用于存储引导程序,BootLoader 参数区用于存储程序更新参数, 应用程序备份区用于备份应用程序,应用程序区用于存储应用程序。Flash 空间分布如图3 所示。

图3 Flash空间分布图Fig.3 Distribution of FLASH storage area

首次使用系统时,通过专用JTAG 下载器将BootLoader 程序下载到Flash 存储的0x00000000~0x000BFFFF 区 域,BootLoader。BootLoader 程序烧制完成后,系统上电启动,MCU 从地址0x00000000 开始运行BootLoader程序,通过USB 向远程终端secureCRT 发送交互信息。程序更新完毕后,CPU 直接跳转至应用程序区0x00100000 地址,运行应用程序。

2.3 YModem协议简介

本应用通过串口通信使用YModem 协议进行文件传输, 通过secureCRT 远程控制终端选择YModem 传输文件模式。YModem 协议是由XModem 协议演变而来的,具有快速,稳定传输的优点。每包数据可以传输1 024 Byte,同时支持多文件传输,也就是批文件传输,是一个非常高效的文件传输协议。发送数据时使用CRC 校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK 信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部正确接收。

3 BootLoader程序设计

BootLoader 是嵌入式系统在上电后执行的第一段代码,用于完成CPU 和相关硬件的初始化之后,更新应用程序,再将应用程序装到内存中运行。本实例中,BootLoader 用于与远程控制终端的交互,执行应用程序下载、应用程序备份、应用程序更新和应用程序启动执行。

预先使用专用下载器将BootLoader 程序烧录进Flash 指定空间,给系统上电后,MCU 首先进入BootLoader 程序,系统启动后进入预定时间的倒计时;若所述预定时间的倒计时结束且系统没有接收到预定输入,获取参数区升级标志。若为“1”,则系统进入下载模式第二步。若为“0”,则系统进入执行应用程序流程;若所在述预定时间的倒计时结束前,系统接收到预定的第一键入信息,则系统进入配置模式;在配置模式下,若系统接收到预定的第二键入信息,则系统进入执行原应用程序流程;在配置模式下,若系统接收到预定的第三键入信息,则系统进入应用程序下载模式;在下载模式下,第一步先擦除备份区数据,再将接收数据写入备份区,置位参数区升级标志Upsig;第二步先擦除应用区数据,再将备份区数据写入应用区,清零参数区升级标志Upsig,升级过程完成,系统进入执行应用流程。升级过程程序流程如图4 所示。

4 结论

本文介绍的升级程序方法不需要专用下载器、专用开发环境,不需要对下载软件进行下载地址设置、Flash 擦除,不需要拔出插入板卡等,给程序下载带来很大便利性,解决了Power PC 系列处理器在线升级不方便的问题,提高了列车自动运行系统的开发及测试效率。同时,本方法设置有安全下载控制,避免了下载遇到突发情况时,系统执行错误的目标应用程序,提高系统运行安全性。且下载完成后可以直接执行,提高了效率。

图4 程序流程图Fig.4 Program flowchart

猜你喜欢
串口备份应用程序
浅谈数字化条件下的数据备份管理
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
创建vSphere 备份任务
Windows10应用信息备份与恢复
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
船舶电子设备串口数据的软件共享方法
旧瓶装新酒天宫二号从备份变实验室