一种新型一种新型DSP软件在线升级方法的研究与实现软件在线升级方法的研究与实现
提出并实现了一种新型DSP系统软件版本在线升级方法及其3种升级方式,详细论述了Flash的存储分配结构以
及系统BOOT程序的设计。具有实现简单、更新方式灵活、程序可靠性高等优点,可广泛应用于数字控制芯片领
域。
摘摘 要:要: 提出并实现了一种新型
关键词:关键词: DSP;在线升级;Flash;BOOT程序
随着IT技术的迅猛发展,数字化技术已被广泛应用到国民经济的各个领域。数字化技术的核心包括两个部分:MCU或DSP
等数字控制芯片和相应的软件程序。一般的数字芯片均带有Flash存储空间、丰富的外设模块,其中包括各种常见的通信接口
(例如I2C、RS232等)。同时,为了满足不断变化的应用需求,一般会在相应的软件程序设计中加入Bootloader功能,即利用
系统已有的通信接口,依靠BOOT程序在线更新MCU或DSP中的软件。完成软件更新之后,运行更新版本程序来实现系统功
能的扩展或升级。
目前,常用的更新方法有2种:(1)直接刷新Flash中已有的代码来实现软件的升级。虽然该方法实现简单,但是存在意外风
险,即当系统在更新软件过程中意外断电时,MCU或DSP中原有的正常版本程序也将被破坏、无法运行,导致系统崩溃。(2)
在MCU或DSP的Flash中开辟2个空间A和B,分别作为主BOOT区和备BOOT区。这种方法虽然提高了软件更新的可靠性,但
却增加了程序设计或硬件电路的复杂性。因为MCU或DSP中断向量表的地址一般是固定的,所以只能依靠复杂的版本切换程
序或硬件选择器来实现A、B区域中2个版本软件的切换。
为了克服现有技术的不足,提出了一种新型的软件版本在线更新方法和3种更新方式,并且在数字控制芯片领域中得到了实
际应用。
1
1..1 dsPIC33F微控制器微控制器
美国
1..2 Flash地址空间分配地址空间分配
为了做到故障保护,防止在更新过程中发生更新文件出错、意外断电等灾难性故障,本设计将dsPIC33F的Flash空间分为3
个区域,如图1所示。图中(A)区用于存储应用程序正常版本;(B)区用于存储应用程序更新版本;(C)区用于存储BOOT程序。
其中(A)区、(B)区的分配空间大小相等,因为(B)区的主要用途在于存储(A)区的运行程序的更新版本软件。
在实际应用中,可以根据Flash的大小、程序代码长度等因素灵活调节。如果采用dsPIC33FJ64GP710控制器,其Flash空
间范围为0x0000-0xFFFF,每页的大小为0x100,则dsPIC33FJ64GP710的Flash空间地址典型分配如表1所示。应用程序更
新版本和正常版本的Flash空间大小都为0x7000,而且,不论是应用程序正常版本或是更新版本,其第一个运行的指令都是跳
转到BOOT程序,其最后的2组地址都用于存放新的、有效的标志位。所以,当更新升级程序时,仅需要将应用程序更新版本
中的更新程序整体拷入应用程序正常版本中即可,而不需区分其中的标志位、跳转指令和程序本体,简化了BOOT程序的设
计。
2 BOOT功能的设计与实现功能的设计与实现
本软件程序设计主要分为两部分:应用程序的设计和BOOT程序的设计。出厂时,应用程序的正常版本放在图1中(A)区,而
BOOT程序放在图1中(C)区。更新时,仅对应用程序进行更新。
系统上电复位时,软件首先跳转至BOOT程序开始运行。BOOT程序首先检测图1(B)区中的更新版本程序是新的、有效
的,BOOT程序才会擦除图1(A)区中的正常版本,再将图1(B)区中的更新版本拷入图1(A)区中,覆盖正常版本后在图1(A)区中
设置正常版本有效标志位;否则BOOT程序将终止软件版本的更新,并设置更新失败标志。然后软件将从图1(C)区中BOOT程
评论0
最新资源