用户程序在线升级系统和升级方法

文档序号:6380185阅读:189来源:国知局
专利名称:用户程序在线升级系统和升级方法
技术领域
本发明涉及单片机技术,尤其涉及一种用户程序在线升级系统和升级方法。
背景技术
对单片机中的用户程序进行烧录和升级,传统上是采用并行烧录器。用这种方法对单片机进行升级时,需要反复插拔单片机,而铁片封装的单片机进行升级时,则需要反复焊接和拆卸,不但操作麻烦,而且容易损坏单片机。IAP (In-Application Program,在应用中编程)技术则很好地解决了这个问题。 如图I所示,在非易失性程序存储器(FLASH程序存储器)中存储有用户程序;单片机通过加载FLASH (闪存)程序存储器中的用户程序运行来实现各种功能,如采集、计算、控制等功能。用户程序通常存储于FLASH程序存储器中的用户程序区。此外,FLASH程序存储器中还存储有IAP程序,IAP程序是通过专用的下载口,如单片机的JTAG或ISP烧录到FLASH程序存储器中的;IAP程序中通常有IAP功能函数,单片机运行IAP程序时,通过调用IAP功能函数,可以实现从其通用通信端口(如IIC总线、SPI总线或并行总线)接收用户程序,将用户程序烧录到FLASH程序存储器;这样,在进行用户程序升级时,不必通过专用设备或端口,而是通过运行IAP程序,通过通用通信端口实现用户程序的在线升级。IAP程序通常存储于FLASH程序存储器中的IAP程序区。单片机上电后,执行Boot (引导)程序先检测IAPPin管脚的电压;若IAPPin管脚的电平为高电平,则单片机执行FLASH程序存储器中的IAP程序;若LoadPin管脚的电平也为高电平,则IAP程序通过通信总线开始从主机(Host)接收二进制文件烧录到FLASH程序存储器中,作为新版的用户程序;主机在发送二进制文件完毕后,控制LoadPin管脚的电平转为低电平,则单片机结束IAP程序的执行。主机控制ResetPin管脚复位后,单片机重启;单片机重启后,若检测到IAPPin管脚的电压为低电压,则执行之前烧录的新版的用户程序,从而实现单片机的用户程序的在线升级。本发明的发明人发现,现有技术的单片机用户程序的在线升级方法需要占用单片机较多的硬件资源;事实上,为了实现在线升级的控制,占用了单片机3个管脚(1\0端口)分别作为IAPPin、LoadPin、ResetPin管脚与主机相连,主机通过这三个管脚来控制单片机的用户程序的在线升级。因此,现有技术的单片机用户程序的在线升级方法占用单片机较多硬件资源,在单片机功能日益增多的情况下,越来越具有节省单片机硬件资源的需求。

发明内容
本发明的实施例提供了一种用户程序在线升级系统和升级方法,用以在用户程序的在线升级时减少对单片机的硬件资源的占用。根据本发明的一个方面,提供了一种用户程序在线升级方法,包括所述单片机上电或复位后,读取非易失性程序存储器中的烧录标识;
若所述烧录标识为数值A,则运行所述非易失性程序存储器中的IAP程序,对所述非易失性程序存储器中的用户程序进行在线升级;若所述烧录标识为数值B,则运行所述非易失性程序存储器中的用户程序;在运行所述用户程序时,若接收到烧录指令,则更改所述烧录标识为数值A后,进行软复位。其中,所述运行所述非易失性程序存储器中的IAP程序,对所述非易失性程序存储器中的用户程序进行在线升级具体包括所述单片机运行所述IAP程序后,若接收到写数据指令,则根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区中,作为升级版的用户程序对所述非易失性程序存储器中的用户程序进行在线升级。进一步,在所述单片机运行所述IAP程序后,还包括
若所述单片机接收到写烧录标识指令,则根据所述写烧录标识指令将数值B写入到非易失性程序存储器中的烧录标识中;之后,跳转到所述非易失性程序存储器的用户程序区的入口处,开始执行所述升级版的用户程序。进一步,在所述接收到写数据指令后,还包括所述单片机根据所述写数据指令中的校验位对所述写数据指令进行校验;若校验结果错误,则返回接收错误的反馈指令;以及所述根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区具体为若校验结果正确,则根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区,并返回接收正确的反馈指令。较佳地,在所述执行所述升级版的用户程序后,还包括在所述升级版的用户程序运行过程中,若所述单片机接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位。根据本发明的另一个方面,还提供了一种用户程序在线升级系统,包括单片机,用于上电或复位后读取非易失性程序存储器中的烧录标识;若所述烧录标识为数值B,则运行所述非易失性程序存储器中的用户程序;主机,用于向所述单片机发送烧录指令;所述单片机在运行所述用户程序时,若接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位;复位后根据读取的数值A的烧录标识,运行所述非易失性程序存储器中的IAP程序;所述主机向所述单片机发送升级版用户程序;所述单片机将接收的升级版用户程序写入所述非易失性程序存储器的用户程序区中,进行用户程序的在线升级。其中,所述主机向所述单片机发送升级版用户程序具体为所述主机将所述升级版用户程序的二进制文件通过至少一个写数据指令发送到所述单片机。较佳地,所述主机还用于向所述单片机发送升级版用户程序完毕后,向所述单片机发送写烧录标识指令;以及
所述单片机还用于根据接收的写烧录标识指令,将数值B写入到非易失性程序存储器中的烧录标识中;之后,跳转到所述非易失性程序存储器的用户程序区的入口处,开始执行所述升级版的用户程序。较佳地,所述单片机还用于根据接收的写数据指令中的校验位对接收的写数据指令进行校验;若校验结果错误,则向所述主机返回接收错误的反馈指令;以及所述主机在接收到所述单片机返回的接收错误的反馈指令后,重新发送写数据指令。较佳地,所述单片机还用于在执行所述升级版的用户程序后,在所·述升级版的用户程序运行过程中,若所述单片机接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位。本发明实施例提供的技术方案中,由于在非易失性程序存储器中增加有烧录标识,用以在单片机上电后,指示单片机执行IAP程序还是用户程序;而且,在单片机运行的用户程序中增加一个接收与处理主机发送的烧录指令的功能在接收到主机发送的烧录指令后,将烧录标识修改为指示单片机执行IAP程序的值(数值B)后,复位单片机;单片机在复位后根据烧录标识执行IAP程序,从主机获取升级版用户程序,实现用户程序的在线升级。在此过程中,主机不必通过硬件管脚来控制对单片机用户程序的升级,而是通过发送烧录指令的软件方式来实现升级控制的;从而节省了单片机的管脚资源,即减少了对单片机的硬件资源的占用。进一步,在主机对用户程序进行在线升级完毕后,主机还控制单片机将烧录标识修改为指示单片机执行用户程序的值(数值A),使得单片机在用户程序在线升级完毕后,在每次上电或复位后可自动执行用户程序。


图I为现有技术的单片机用户程序在线升级系统的示意图;图2为本发明实施例的单片机用户程序在线升级系统的示意图;图3为本发明实施例的单片机引导程序流程图;图4为本发明实施例的用户程序在线升级方法流程图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。
本发明的技术方案中,省去了主机用于控制单片机用户程序在线升级的三个管脚,而是在FLASH程序存储器中增加有烧录标识,用以在单片机上电后,指示单片机执行IAP程序还是用户程序;而且,在单片机运行的用户程序中增加一个接收与处理主机发送的烧录指令的功能在接收到主机发送的烧录指令后,将烧录标识修改为指示单片机执行IAP程序的值后,复位单片机;单片机在复位后根据烧录标识执行IAP程序,从主机获取新版的用户程序,实现用户程序的在线升级。在此过程中,主机不必通过硬件管脚来控制对单片机用户程序的升级,而是通过发送烧录指令的软件方式来实现升级控制的;从而节省了单片机的管脚资源,即减少了对单片机的硬件资源的占用。下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的单片机的用户程序在线升级系统,如图2所示,包括主机201、单片机202、非易失性程序存储器203。其中,非易失性程序存储器203具体可以是FLASH器件。 主机201与单片机202之间连接有通用通信总线,比如串行总线IIC(Inter-Integrated Circuit,交互集成电路)或 SPI(Serial Peripheral Interface,串行外设接口)总线,或者并行总线等。主机201具体可以是计算机、CPU (Central ProcessingUnit,中央处理器)、微处理器等。单片机202上电或复位后,先执行Boot (引导程序),执行该程序的流程图3所示,包括如下步骤S301 :单片机202上电或复位;S302 :单片机202执行Boot程序,读取非易失性程序存储器203中的烧录标识。非易失性程序存储器203通常分为多个块(Block),单片机在对其进行烧录时,即单片机向非易失性程序存储器203写入数据时,通常是整块操作。烧录标识可以写入到非易失性程序存储器203中的某个特定块中,例如,烧录标识存储在非易失性程序存储器203中的最后一个块中,该块专用于存储烧录标识,不存储其它信息,以免对烧录标识的错误写入;为便于描述,本文将专用于存储烧录标识的块称为烧录标识块。单片机202执行Boot程序,从非易失性程序存储器203的烧录标识块中读取烧录标识。S303 :判断烧录标识的数值;若烧录标识为数值A (第一数值),则执行步骤S304,跳转到IAP程序的入口 ;若烧录标识为数值B (第二数值),则执行步骤S305,跳转到用户程序的入口。本步骤中的数值A和数值B为预先设定的,比如,可以设定数值A、数值B分别为OxFFFFFFFF、0x00000000。当单片机202读取的烧录标识为OxFFFFFFFF,则跳转到IAP程序的入口,开始执行IAP程序;若单片机202读取的烧录标识为0x00000000,则跳转到用户程序的入口,开始执行用户程序。S304 :单片机202跳转到非易失性程序存储器中的IAP程序的入口,运行IAP程序。S305:单片机202跳转到非易失性程序存储器中的用户程序的入口,运行用户程序。在单片机202运行用户程序时,若主机201需要对非易失性程序存储器203中的用户程序进行升级,则具体的升级方法流程,如图4所示,包括如下步骤S401 :单片机202运行用户程序。S402 :主机201向单片机202发送烧录指令。在本步骤中,主机201通过通信总线向单片机202发送烧录指令。主机201和单片机202可以事先约定一套用于用户程序在线升级的指令,这些指令中可以包括烧录指令,用以主机201指示单片机202进行烧录操作;写数据指令,用以主机201指示单片机202向非易失性程序存储器203中的特定块写入特定数据;反馈指令,用以单片机202向主机201反馈写入数据的结果。
S403 :单片机202接收到烧录指令后,修改烧录标识为数值A后,进行软复位。具体地,单片机运行的用户程序通常具有从主机201接收指令和数据的功能,而本发明的单片机202运行的用户程序中除了包括通常的应用功能模块外,还包括一个烧录指令接收处理模块。单片机202运行的用户程序在接收到主机201发送的指令后调用该烧录指令接收处理模块,若烧录指令接收处理模块识别出接收的指令为烧录指令,则执行修改烧录标识为数值A,将本单片机进行软复位。S404 :单片机202在复位后,重启;S405 :单片机202根据烧录标识,执行IAP程序。具体地,单片机202在重启后,重新执行Boot程序;执行Boot程序的具体流程已在上述图3所示的步骤中介绍了,此处不再赘述;由于烧录标识已经在之前修改为数值A,因此,在执行Boot程序的过程中,单片机202在判断烧录标识为数值A后,跳转到IAP程序的入口,开始执行IAP程序。S406 :单片机202执行IAP程序,接收从主机201发送的升级版用户程序写入到非易失性程序存储器203,进行用户程序的升级。具体地,主机201在发送烧录指令后可以等待一段设定的时间段,比如等待ls,在这时间段内单片机202完成重启,已经运行了 IAP程序;之后,主机201将新的用户程序,SP升级版用户程序的二进制文件通过发送多个写数据指令到单片机202,由单片机202将升级版用户程序烧录到非易失性程序存储器203中单片机202执行IAP程序,IAP程序接收主机201发送的写数据指令,根据接收的写数据指令将接收的二进制文件写入到非易失性程序存储器203的用户程序区中的相应块中。一般而言,升级版用户程序被写入到非易失性程序存储器203的用户程序区中,用以覆盖掉原有用户程序。也就是说,单片机202运行所述IAP程序后,将主机201发送的二进制文件写入到非易失性程序存储器203中的用户程序区,作为升级版的用户程序对非易失性程序存储器203中的用户程序进行在线升级。较佳地,在单片机202的IAP程序在接收到写数据指令后还可根据其校验位对其进行校验;若校验结果正确,则根据接收的写数据指令将接收的数据写入到非易失性程序存储器203中的相应的块中,并向主机201返回接收正确的反馈指令;若校验结果错误,则向主机201返回接收错误的反馈指令。主机201在接收到接收错误的反馈指令后将重新发送之前发送的写数据指令。
如果主机201在发送烧录指令后向单片机202发送写数据指令时,单片机202还未重启,或还未运行IAP程序,则主机201在设定时间段(比如IOms)内将接收不到单片机202返回的反馈指令,因此,主机201可以重新发送之前发送的写数据指令,直到单片机202运行IAP程序后向其返回接收正确的反馈指令。S407 :主机201发送用以指示将数值B写入到烧录标识块的烧录标识中的写数据指令,为便于描述,本文中将该写数据指令称为写烧录标识指令。主机201通过发送写烧录标识指令,作为结束该次用户程序升级过程的标志;即主机201在完成发送升级版用户程序到单片机202后,向单片机202发送写烧录标识指令,单片机202根据所述写烧录标识指令将数值B写入到非易失性程序存储器203中的烧录标识中单片机202根据接收的写烧录标识指令,将数据写入非易失性程序存储器203中的烧录标识块,在写入到烧录标识块的数据中,写入到烧录标识位置处的数据为数值B。S408 :单片机202根据接收的写烧录标识指令,将烧录标识块中的烧录标识修改为数值B。·具体地,单片机202的IAP程序根据接收的写烧录标识指令,将数据写入非易失性程序存储器203中的烧录标识块,将烧录标识块中的烧录标识修改为数值B。S409:单片机202跳转到非易失性程序存储器203的用户程序的入口,开始执行新写入的升级版用户程序。由于单片机202将接收到写烧录标识指令,作为结束该次用户程序升级过程的标志;因此,单片机202的IAP程序在根据写烧录标识指令,将烧录标识块中的烧录标识修改为数值B后,不再从主机201接收写数据指令,而是跳转到非易失性程序存储器203的用户程序区的入口处,开始执行新写入的升级版用户程序。从上述可以看出,为了在用户程序升级完毕后单片机可以执行新的用户程序,主机需要在发送升级版用户程序完毕后,控制单片机将烧录标识写为数值B。此外,为了保证用户程序的持续升级,每次升级过程中写入的升级版用户程序也都具有如上所述的烧录指令接收处理模块,并在接收到主机发送的指令时调用烧录指令接收处理模块用以识别是否为烧录指令,若是烧录指令则进行相应处理;也就是说,在单片机执行升级版的用户程序后,在升级版的用户程序运行过程中,若单片机接收到主机发送的烧录指令,则更改所述烧录标识为数值A后,进行软复位。复位后,单片机根据为数值A的烧录标识进行用户程序的在线升级,具体过程如上述图3所示的步骤所述,此处不再赘述;从而实现了用户程序的持续升级。因此,本发明中除了需要在非易失性程序存储器203中设置有烧录标识外,主机也需要进行相应的烧录流程修改即主机201需要在进行用户程序升级前发送烧录指令,在升级版用户程序传送完毕后,将烧录标识写为数值B ;而且,单片机中运行的用户程序也需要具有识别和处理烧录指令的功能在接收到烧录指令后,将烧录标识写为数值A,进行软复位。本发明实施例提供的技术方案中,由于在非易失性程序存储器中增加有烧录标识,用以在单片机上电后,指示单片机执行IAP程序还是用户程序;而且,在单片机运行的用户程序中增加一个接收与处理主机发送的烧录指令的功能在接收到主机发送的烧录指令后,将烧录标识修改为指示单片机执行IAP程序的值(数值B)后,复位单片机;单片机在复位后根据烧录标识执行IAP程序,从主机获取升级版用户程序,实现用户程序的在线升级。在此过程中,主机不必通过硬件管脚来控制对单片机用户程序的升级,而是通过发送烧录指令的软件方式来实现升级控制的;从而节省了单片机的管脚资源,即减少了对单片机的硬件资源的占用。进一步,在主机对用户程序进行在线升级完毕后,主机还控制单片机将烧录标识修改为指示单片机执行用户程序的值(数值A),使得单片机在用户程序在线升级完毕后,在每次上电或复位后可自动执行用户程序。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如R0M/RAM、磁碟、光盘等。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
权利要求
1.一种用户程序在线升级方法,包括 所述单片机上电或复位后,读取非易失性程序存储器中的烧录标识; 若所述烧录标识为数值A,则运行所述非易失性程序存储器中的IAP程序,对所述非易失性程序存储器中的用户程序进行在线升级; 若所述烧录标识为数值B,则运行所述非易失性程序存储器中的用户程序;在运行所述用户程序时,若接收到烧录指令,则更改所述烧录标识为数值A后,进行软复位。
2.如权利要求I所述的方法,其特征在于,所述运行所述非易失性程序存储器中的IAP程序,对所述非易失性程序存储器中的用户程序进行在线升级具体包括· 所述单片机运行所述IAP程序后,若接收到写数据指令,则根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区中,作为升级版的用户程序对所述非易失性程序存储器中的用户程序进行在线升级。
3.如权利要求2所述的方法,其特征在于,在所述单片机运行所述IAP程序后,还包括 若所述单片机接收到写烧录标识指令,则根据所述写烧录标识指令将数值B写入到非易失性程序存储器中的烧录标识中;之后, 跳转到所述非易失性程序存储器的用户程序区的入口处,开始执行所述升级版的用户程序。
4.如权利要求2或3所述的方法,其特征在于,在所述接收到写数据指令后,还包括 所述单片机根据所述写数据指令中的校验位对所述写数据指令进行校验;若校验结果错误,则返回接收错误的反馈指令;以及 所述根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区具体为 若校验结果正确,则根据接收的写数据指令将接收的二进制文件写入到所述非易失性程序存储器的用户程序区,并返回接收正确的反馈指令。
5.如权利要求4所述的方法,其特征在于,在所述执行所述升级版的用户程序后,还包括 在所述升级版的用户程序运行过程中,若所述单片机接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位。
6.一种用户程序在线升级系统,包括 单片机,用于上电或复位后读取非易失性程序存储器中的烧录标识;若所述烧录标识为数值B,则运行所述非易失性程序存储器中的用户程序; 主机,用于向所述单片机发送烧录指令; 所述单片机在运行所述用户程序时,若接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位;复位后根据读取的数值A的烧录标识,运行所述非易失性程序存储器中的IAP程序; 所述主机向所述单片机发送升级版用户程序; 所述单片机将接收的升级版用户程序写入所述非易失性程序存储器的用户程序区中,进行用户程序的在线升级。
7.如权利要求6所述的系统,其特征在于,所述主机向所述单片机发送升级版用户程序具体为 所述主机将所述升级版用户程序的二进制文件通过至少一个写数据指令发送到所述单片机。
8.如权利要求7所述的系统,其特征在于, 所述主机还用于向所述单片机发送升级版用户程序完毕后,向所述单片机发送写烧录标识指令;以及 所述单片机还用于根据接收的写烧录标识指令,将数值B写入到非易失性程序存储器中的烧录标识中;之后,跳转到所述非易失性程序存储器的用户程序区的入口处,开始执行所述升级版的用户程序。
9.如权利要求7或8所述的系统,其特征在于, 所述单片机还用于根据接收的写数据指令中的校验位对接收的写数据指令进行校验;若校验结果错误,则向所述主机返回接收错误的反馈指令;以及 所述主机在接收到所述单片机返回的接收错误的反馈指令后,重新发送写数据指令。
10.如权利要求9所述的系统,其特征在于, 所述单片机还用于在执行所述升级版的用户程序后,在所述升级版的用户程序运行过程中,若所述单片机接收到所述烧录指令,则更改所述烧录标识为数值A后,进行软复位。
全文摘要
本发明公开了一种用户程序在线升级系统和升级方法,所述方法包括单片机上电或复位后,读取存储器中的烧录标识;若烧录标识为数值A,则运行存储器中的IAP程序,对存储器中的用户程序进行在线升级;若烧录标识为数值B,则运行存储器中的用户程序;在运行用户程序时,若接收到烧录指令,则更改烧录标识为数值A后,进行软复位。由于单片机在运行用户程序时若接收到烧录指令,则将烧录标识修改为数值B后,复位单片机;单片机在复位后根据烧录标识执行IAP程序,实现用户程序的在线升级。此过程中,主机不必通过硬件管脚来控制对单片机用户程序的升级,从而节省了管脚资源。
文档编号G06F9/445GK102945173SQ20121042828
公开日2013年2月27日 申请日期2012年10月31日 优先权日2012年10月31日
发明者马军涛, 李刚, 宋哲韬, 孙黎明 申请人:青岛海信宽带多媒体技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1