专利名称:单片机在线加载升级方法及系统的利记博彩app
技术领域:
本发明涉及电子技术领域,具体涉及一种单片机在线加载升级的方法及系统,尤其是单片机作为从CPU时的在线加载升级的方法及系统。
背景技术:
目前,随着超大规模集成电路的发展,单片机已从4位、8位字长,发展到16位、32位字长,甚至64位。单片机是器件级计算机系统,是在一块芯片上集成CPU(中央处理单元)、存储器(RAM(随机存取存储器)、ROM(只读存储器)或EPROM(可编程只读存储器))和各种输入/输出接口(包括定时器/计数器、并行I/O(输入/输出)口、串行I/O口、A/D(模/数)转换器等),它常常是针对工业控制以及与控制有关的数据处理而设计的,可以嵌入到任何对象体系中去,实现智能化控制。而且,随着人们生产和生活水平的提高,对自动化程度的要求也会越来越高,所以单片机的用途也会越来越广泛。
单片机按用途大体上可分为两大类1、通用型单片机;2、专用型单片机。专用型单片机是指用途比较专一,出厂时程序已经一次性固化好,不能再修改的单片机。通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。小到家用电器、仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
由于单片机的器件级计算机系统,以及其成本低廉、设计方便、运行可靠等特点,使得其可以在很多单板上用作从CPU,以实现一些固定功能。
图1是单板使用单片机作为从CPU的系统框图在主、从CPU系统中,将单片机作为从CPU,与主CPU一起分别完成不同的功能。从系统和主系统之间是相互独立的,主系统对从系统没有任何控制能力。外界通过主CPU的对外接口与主CPU进行数据交互,主CPU和单片机之间通过通信电路进行数据传递。
通常,在单片机的设计中,在使用前采用编程器将其应用程序写入单片机中,当其应用程序代码较多时,有时还会需要片外程序存储器配合单片机使用。然后,将单片机插在单板上,配合主CPU完成一些特定的功能。当系统发生改变或需要增强单片机的应用功能时,需要修改单片机的应用程序。这时,就要中断单板业务,将单片机从单板上取下,先将其内部的程序代码擦除,然后再通过编程器将新的程序写入单片机中。
这种设计方式不能实现程序的在线加载和升级,不仅给单片机应用软件的升级维护带来困难,增加了维护的成本,也增加了系统设计的风险性,对应用程序前期开发提出了更高的要求,也不利于系统及应用软件的稳定。
发明内容
本发明的目的是提供一种单片机在线加载升级的方法,以克服现有技术中单片机中的程序不能在线加载升级的问题,实现对单片机的在线加载升级。
本发明的另一个目的是提供一种单片机在线加载升级的系统,以克服现有系统中单片机作为从CPU时不能在线加载升级的缺点。
本发明提供的技术方案如下一种单片机在线加载升级方法,用于对作为从CPU工作的单片机进行在线加载升级,所述方法包括A、将所述单片机的BOOT软件写入所述单片机的内部程序存储区,并将其应用程序写入片外掉电保持介质中;B、当所述单片机需要升级时,由主CPU控制所述单片机工作在运行片内BOOT软件状态,并将加载代码通过所述BOOT软件写入所述片外掉电保持介质中;C、由所述主CPU复位所述单片机,并控制其重启后工作在运行片外应用程序状态,完成加载升级过程。
所述步骤B包括B1、所述主CPU获取所述单片机的加载代码;B2、由所述主CPU复位所述单片机,并控制其重启后工作在运行片内BOOT软件状态;B3、判断所述单片机是否需要加载升级;B4、当需要加载升级时,将所述加载代码通过所述BOOT软件写入单片机片外掉电保持介质中。
所述步骤B1具体为所述主CPU通过通信接口从远端获取所述单片机的加载代码。
所述步骤B1具体为所述主CPU通过串口从近端获取所述单片机的加载代码。
所述步骤B3包括B31、所述BOOT软件读取所述片外掉电保持介质中的版本信息;B32、将所述读取的版本信息传送给所述主CPU;B33、当所述版本信息与所述单片机的加载代码版本信息不同时,所述单片机需要加载升级。
所述步骤B4包括B41、所述主CPU通过通讯电路将所述加载代码传送给所述BOOT软件;B42、所述BOOT软件将所述加载代码写入所述掉电保持介质中。
所述通讯电路具体为双口RAM、或者并行数据总线、或者串行数据总线、或者I2C总线、或者高速并行接口。
所述掉电保持介质具体为闪存或可电改写存储器。
一种单片机在线加载升级系统,所述系统包括主CPU、用作从CPU的单片机、用于所述主CPU和所述单片机进行数据交互的通信电路,
还包括掉电保持介质,耦合于所述单片机,用于存储所述单片机的应用程序;控制电路,分别耦合于所述主CPU和所述单片机,用于控制所述单片机的工作状态。
所述控制电路包括复位控制装置,其受控端与所述主CPU的一个输入/输出管脚相连,其控制端与所述单片机的复位控制管脚相连,用于控制所述单片机进行复位;模式控制装置,其受控端与所述主CPU的另一个输入/输出管脚相连,其控制端与所述单片机的片内/片外程序存储区选择控制管脚相连,用于控制所述单片机的工作模式。
所述掉电保持介质具体为闪存或可电改写存储器。
由以上本发明提供的技术方案可以看出,本发明将单片机的BOOT(引导)程序放在单片内部存储器中,将其应用程序放在片外掉电保持介质中。由主CPU对作为从CPU工作的单片机的工作方式进行控制,使其工作在加载方式或正常运行方式,通过远端控制即可方便地实现单片机程序的加载和升级。这种设计方式,使得在单片机程序加载升级过程中,不需要中断整个单板的运行,提高了业务的连续性;同时,方便了单片机应用程序的维护,降低了系统维护成本。
图1是单板使用单片机作为从CPU的系统框图;图2是本发明方法的流程图;图3是本发明系统框图;图4是本发明系统中的控制电路的原理框图;图5是本发明系统第一实施例原理框图;
图6是图5所示第一实施例中控制电路与单片机及片外FLASH的连线图;图7是本发明系统第二实施例原理框图;图8是图7所示第二实施例中控制电路与单片机及片外程序存储器的连线图。
具体实施例方式
本发明的核心在于将单片机的BOOT(引导)程序放在单片内部存储器中,将其应用程序放在片外掉电保持介质中。由主CPU对作为从CPU工作的单片机的工作方式进行控制,使其工作在加载方式或正常运行方式。当需要对单片机应用程序加载时,先由主CPU将单片机的下载软件接收到本地,然后再传送给单片机,再由单片机写入片外掉电保持介质中;当主CPU控制单片机重启后,使其运行片外的新应用程序。这样,通过远端控制即可方便地实现单片机程序的加载和升级。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明作进一步的详细说明。
参照图2,图2是本发明方法的流程图,包括以下步骤步骤201将单片机的BOOT软件写入单片机的内部程序存储区,并将其应用程序写入片外掉电保持介质中,掉电保持介质可以是E2PROM(可电改写存储器)、FLASH(闪存)。这样,当需要对单片机进行加载升级时,就可在线对该掉电保持介质操作,将新的单片机应用程序代码写入。
步骤202由主CPU获取单片机的加载代码。
比如,当需要从远端加载时,主CPU和远端(比如机房内)的主机通过通信接口(比如在基站系统中,通过基站控制器和基站收发信台之间的ABIS接口)进行通讯,通过设定下载命令,使主CPU将单片机的加载升级程序下载到本地,以实现远端加载。当然,也可以通过近端加载,比如,主CPU通过串口和近端的加载终端进行通讯,通过设定下载命令,使主CPU将单片机的加载升级程序下载到本地,以实现近端加载。
步骤203由主CPU复位单片机,并控制其重启后工作在运行片内BOOT软件状态。
本技术领域人员知道,CPU通常会有多个I/O(输入/输出)管脚,可以通过这些管脚对其他外部器件进行控制。单片机通常会有复位管脚和选择片内或片外程序存储区的控制管脚。因此,可以通过CPU的I/O管脚对单片机进行控制,使其复位及工作在不同的模式运行片外程序或运行片内程序。
为了保证对单片机使用的应用软件的正确加载,每个应用软件都包含其版本信息,主CPU能够识别这些信息。当主CPU下载到单片机的加载程序后,通过和掉电保持介质中的版本信息进行比较,就可得知是否的确需要加载升级。
因此,进到步骤204BOOT软件读取片外掉电保持介质中的版本信息。
步骤205将读取的版本信息传送给主CPU。
在主、从CPU系统中,主CPU和从CPU的通讯通常由通讯电路来完成。因此,该版本信息的传送也可以通过该通讯电路来实现。
步骤206主CPU判断下载的软件版本与原版本是否相同。
如果相同,则说明不需要升级,此时,直接进到步骤208主CPU复位单片机,并控制其重启后工作在运行片外应用程序状态。
如果不相同或者片外掉电保持介质中的版本信息为空,则说明需要升级单片机的原应用程序或者加载其应用程序,此时,进到步骤207将加载代码通过BOOT软件写入单片机片外掉电保持介质中。
同样,应用程序代码的传送也可以通过上述通讯电路来完成。具体过程如下
首先,由主CPU通过通讯电路将加载代码传送给BOOT软件;然后,由BOOT软件将加载代码写入片外掉电保持介质中。如果该掉电保持介质中原来已存有单片机的应用程序,则可以用新的代码直接覆盖旧代码即可。
通讯电路可以是双口RAM(随机存取存储器)、并行数据总线、串行接口、I2C(Inter-Integrated Circuit)总线、HPI(高速并行接口)接口等,其工作原理与现有技术中相同,在此不再详细描述。
将新的应用程序代码写入单片机的片外掉电保持介质后,就可由主CPU控制单片机运行片外的应用程序。
进到步骤208主CPU复位单片机,并控制其重启后工作在运行片外应用程序状态,完成加载升级过程。
由上述流程可见,本发明在单片机在线加载升级过程中,只需中断单片机功能的运行,并不中断主CPU的运行,对整个单板业务的影响较小,而且实现简单。
参照图3,图3是本发明系统框图其中,主CPU301、用作从CPU的单片机302、用于主CPU和单片机进行数据交互的通信电路302与现有主从CPU系统中相同。其工作原理及数据交互方式也与现有技术中相同,在此不再赘述。
为了实现单片机的在线加载升级,本发明系统增加了主CPU对单片机工作状态控制的控制电路305以及存储单片机应用程序的掉电保持介质304。
在使用中,将单片机的BOOT软件写入单片机的内部程序存储区,将其应用程序写入片外掉电保持介质中,掉电保持介质可以是E2PROM(可电改写存储器)、FLASH(闪存)等。这样,当需要对单片机进行加载升级时,就可在线对该掉电保持介质操作,将新的单片机应用程序代码写入。
控制电路305的实现原理如图4所示
包括复位控制装置和模式控制装置,其输入端(受控端)分别与主CPU的不同I/O(输入/输出)管脚相连,输出端(控制端)分别与单片机的复位端RST和单片机的片内/片外程序存储区选择控制管脚相连,分别控制单片机进行复位和选择片内还是片外程序存储区运行,以实现对单片机工作状态的控制。
对于不同型号的主CPU、单片机,其管脚及工作方式可能会有不同,但只要通过主CPU对单片机的复位及工作模式进行控制,即可通过本发明系统实现对单片机的在线加载升级。
下面通过具体实例对本发明系统作进一步说明。
参照图5所示本发明系统第一实施例主CPU为MPC860,它可以和远端进行通讯,并将单片机的下载软件接收到本地。从CPU为AT89C52,通过双口RAM(型号举例)和主CPU进行通讯。FLASH用于存储单片机的应用软件,单片机内部烧制用于加载片外FLASH的工作软件,即BOOT软件。
单板上电后,MPC860会控制单片机运行片内的BOOT软件。BOOT可以读取片外FLASH的数据信息并上报MPC860,当MPC860获取BOOT上报的信息之后,就可以判断片外FLASH是否为空、其内部的软件版本是否需要重新加载。如果单片机运行软件需要加载,那么MPC860会将下载代码传送给BOOT,并由BOOT加载到片外FLASH内部,从而实现单片机软件的在线加载功能。如果片外FLASH内部的运行软件版本正常,那么MPC860就会控制单片机直接运行片外的软件,单板开始正常工作。
控制电路与单片机及片外FLASH的管脚连线如图6所示AT89C52的相关控制引脚如下·/RD和/WE是单片机的对外读写信号·/PSEN是单片机读取外部程序存储区的选通使能信号
·ALE是单片机的地址锁存控制信号·/EA片内/片外程序存储区选择控制信号,/EA=0时,AT89C52选择片外FLASH作为程序存储区;/EA=1时,AT89C52选择片内FLASH作为程序存储区片外FLASH型号为29F040,其相关控制引脚如下·/CE 29F040的片选信号·/OE 29F040的输出使能信号·/WE 29F040的写FLASH使能信号单片机的在线加载由MPC860引出两条输出引脚PX和PY进行控制。
(1)引脚PY用于控制对AT89C52的复位操作该信号连接到驱动器74ACT16244的第四输入端A4,通过第四输出端Y4与来自主CPU MPC860的信号LHRESET通过与门74LVC08产生复位信号RST,连接到AT89C52的复位控制管脚。其中,信号LHRESET可以从主CPU MPC860的一个I/O管脚引出。
·当PY=0时,AT89C52的WATCHDOG(看门狗)开始复位AT89C52;·正常运行时,PY=1。
(2)PX用于控制AT89C52的工作模式该信号连接到驱动器74ACT16244的第3输入端A3,经过两级驱动分别输出CON和/CON,由/CON信号端控制单片机的/EA管脚,由CON信号端控制对片外FLASH选通控制信号/OE及读写控制信号/WE的驱动使能。
74HC373是锁存器,完成单片机总线地址和数据的分离。
·当PX=1时,AT89C52的/EA=0,AT89C52选择片外FLASH作为程序存储区,运行片外FLASH中存储的工作软件,执行单板的正常功能。此时74ACT16244-(1)被选通,AT89C52的/PSEN引脚可以直接控制29F040的/OE引脚,从而协助单片机完成指令提取。
·当PX=0时,AT89C52的/EA=1,AT89C52选择片内FLASH作为程序存储区,运行其内部FLASH中存储的BOOT软件,执行对片外FLASH的加载,完成单片机的软件加载操作。此时,74ACT16244-(1)被截止,74ACT16244-(2)被选通,AT89C52的读、写信号/RD和/WE直接控制29F040的/OE和/WE引脚,这时的29F040就相当于单片机的片外数据存储区,AT89C52可以完成对它的读写操作,即完成向FLASH写入加载软件的功能。
对AT89C52的加载过程如下1)当MPC860收到维护台下发的加载命令后,MPC860先把PX置为低,再把PY置为0,复位单片机。
2)单片机复位后重新启动,由于/EA=1则运行单片机内部FLASH中存储的BOOT软件,BOOT软件读取29F040中的版本信息上报给MPC860,MPC860判断上报的版本信息后,决定是否加载单片机软件。如果加载,则把单片机的程序数据分批发给AT89C52,AT89C52再把数据写入到29F040指定的位置。完成单片机程序数据的加载。
3)程序数据全部写29F040后,MPC860把PX再置为1,然后再把PY置为1复位单片机。
4)单片机复位后,由于PX为高,/EA=0,这运行片外29F040中存储的程序数据。完成整个加载过程。
参照图7,图7是本发明系统第二实施例原理框图在该实施例中,主CPU仍然为MPC860,单片机为C513-H,外部程序存储器是39SF010,通讯电路采用串行接口。
控制电路由可编程逻辑器件EPM7128来实现,其实现的控制功能可参照图6。来自主CPU的控制信号C1、C2和RESET,通过可编程逻辑器件EPM7128的内部逻辑产生对单片机C513-H管脚RST和/EA的控制信号,分别控制单片机C513-H的复位操作及工作模式。其工作原理与图6所示第一实施例相同,在此不再赘述。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
权利要求
1.一种单片机在线加载升级方法,用于对作为从CPU工作的单片机进行在线加载升级,其特征在于,所述方法包括A、将所述单片机的BOOT软件写入所述单片机的内部程序存储区,并将其应用程序写入片外掉电保持介质中;B、当所述单片机需要升级时,由主CPU控制所述单片机工作在运行片内BOOT软件状态,并将加载代码通过所述BOOT软件写入所述片外掉电保持介质中;C、由所述主CPU复位所述单片机,并控制其重启后工作在运行片外应用程序状态,完成加载升级过程。
2.根据权利要求1所述的单片机在线加载升级方法,其特征在于,所述步骤B包括B1、所述主CPU获取所述单片机的加载代码;B2、由所述主CPU复位所述单片机,并控制其重启后工作在运行片内BOOT软件状态;B3、判断所述单片机是否需要加载升级;B4、当需要加载升级时,将所述加载代码通过所述BOOT软件写入单片机片外掉电保持介质中。
3.根据权利要求2所述的单片机在线加载升级方法,其特征在于,所述步骤B1具体为所述主CPU通过通信接口从远端获取所述单片机的加载代码。
4.根据权利要求2所述的单片机在线加载升级方法,其特征在于,所述步骤B1具体为所述主CPU通过串口从近端获取所述单片机的加载代码。
5.根据权利要求2所述的单片机在线加载升级方法,其特征在于,所述步骤B3包括B31、所述BOOT软件读取所述片外掉电保持介质中的版本信息;B32、将所述读取的版本信息传送给所述主CPU;B33、当所述版本信息与所述单片机的加载代码版本信息不同时,所述单片机需要加载升级。
6.根据权利要求2所述的单片机在线加载升级方法,其特征在于,所述步骤B4包括B41、所述主CPU通过通讯电路将所述加载代码传送给所述BOOT软件;B42、所述BOOT软件将所述加载代码写入所述掉电保持介质中。
7.根据权利要求6所述的单片机在线加载升级方法,其特征在于,所述通讯电路具体为双口RAM、或者并行数据总线、或者串行数据总线、或者I2C总线、或者高速并行接口。
8.根据权利要求6所述的单片机在线加载升级方法,其特征在于,所述掉电保持介质具体为闪存或可电改写存储器。
9.一种单片机在线加载升级系统,所述系统包括主CPU、用作从CPU的单片机、用于所述主CPU和所述单片机进行数据交互的通信电路,其特征在于,还包括掉电保持介质,耦合于所述单片机,用于存储所述单片机的应用程序;控制电路,分别耦合于所述主CPU和所述单片机,用于控制所述单片机的工作状态。
10.根据权利要求9所述的单片机在线加载升级系统,其特征在于,所述控制电路包括复位控制装置,其受控端与所述主CPU的一个输入/输出管脚相连,其控制端与所述单片机的复位控制管脚相连,用于控制所述单片机进行复位;模式控制装置,其受控端与所述主CPU的另一个输入/输出管脚相连,其控制端与所述单片机的片内/片外程序存储区选择控制管脚相连,用于控制所述单片机的工作模式。
11.根据权利要求9所述的单片机在线加载升级系统,其特征在于,所述掉电保持介质具体为闪存或可电改写存储器。
全文摘要
本发明公开了一种单片机在线加载升级方法及系统,用于对作为从CPU工作的单片机进行在线加载升级,该方法包括将单片机的BOOT软件写入单片机的内部程序存储区,并将其应用程序写入片外掉电保持介质中;当单片机需要升级时,由主CPU控制单片机工作在运行片内BOOT软件状态,并将加载代码通过BOOT软件写入其片外掉电保持介质中;由主CPU复位单片机,并控制其重启后工作在运行片外应用程序状态,完成加载升级过程。本发明系统在基于现有主、从CPU系统基础上,增加了主CPU对单片机工作模式的控制电路,以及存储单片机应用程序的片外掉电保持介质。利用本发明,可以简单方便地实现对单片机的在线加载升级,便于系统维护。
文档编号G06F9/445GK1804799SQ20051000206
公开日2006年7月19日 申请日期2005年1月12日 优先权日2005年1月12日
发明者孙志伟 申请人:华为技术有限公司