微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于dsPIC33F系列单片机的应用程序升级方法

基于dsPIC33F系列单片机的应用程序升级方法

时间:04-03 来源:现代电子技术 点击:

3 实际应用中若干问题的探讨

3.1 程序升级正确性问题

上文仅重点说明了程序升级的方法,未对程序升级的正确性展开讨论,但在实际应用中,由于传输干扰的存在,接收的新程序数据可能出错,这时如果没有相应的应对措施,显然会影响到产品的正常运行。为了保证程序升级的正确性,常用的应对措施有以下几种:

(1)对每帧数据进行严格的校验(如CRC校验),校验通过后再更新相应的程序存储区;更新程序存储区后,重新读出程序存储区数据,并与接收到的数据进行比较。只有当数据比较无误后才开始接收下一帧数据。

(2)若不考虑硬件成本,也可外置一个数据存储器,将所有新程序数据完全接收并校验通过后才统一更新程序存储器,最后把整个程序存储器的数据与接收到的数据逐一比对,若比对无误则升级结束。

(3)若应用程序占用空间不大,也可将程序存储器中应用程序区再分为两部分。程序升级时轮流覆盖这两部分,这种操作方式使程序存储器同时保存旧版本和新版本两个应用程序,当新版本程序因某种原因运行不正常时,可由引导程序将应用程序切换到旧版本。

第(1)种方法最容易实现,但是应用程序只有在整个升级过程完全结束后才可以正常运行,若升级过程因某种原因通信中断,则应用程序一直无法运行,这是该方法最大的缺陷。

第(2)种方法也很容易实现,而且由于它是在新程序数据全部接收后才开始升级,因此克服了第(1)种方法的缺陷,但是该方法需增加硬件成本,且要占用单片机更多的硬件资源(用于与外部存储器之间的交互)。

第(3)种方法也可以克服第(1)种方法的缺陷,而且不需增加硬件成本,但是该方法的实现显然比前两种方法复杂得多。以上3种方法各有优缺点,在实际应用中可根据实际情况选择。

3.2 断点续传问题

在实际应用中,可能因某种原因(如断电复位)而需重新开始程序升级,这时如果还是从第1帧数据开始传输,则会造成时间上的浪费,而且对于一些以流量计费的通信网络(如GPRS)还会造成通信费用的浪费,因此在实际应用中有必要实现"断点续传"功能。这可通过模仿FTP断点续传原理来实现,即单片机每正确接收并存储一帧数据则刷新存储于外部非易失性存储器(如EEPROM)中的升级信息(含当前帧号),若重新开始程序升级,则将当前升级信息发给服务器,服务器可从"断点"开始发送数据,从而实现了"断点续传"功能。

4 结语

基于dsPIC33F系列单片机的应用程序升级方法已在开发设计的IPPhone和安防系统等产品中成功应用,且运行稳定可靠。虽然本文讨论的程序升级方法是基于dsPIC33F系列单片机,但其基本原理同样适用于其他具备运行时自编程或有应用编程(In Appplication Program,IAP)功能的单片机中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top