一种单片机在线升级方法和装置的制作方法

文档序号:6376403阅读:198来源:国知局
专利名称:一种单片机在线升级方法和装置的制作方法
技术领域
本发明涉及信息处理技术,尤指一种单片机在线升级方法和装置。
背景技术
MCS51系列的单片机在国内外有着广泛的应用基础,大量应用在各行业的电子设备中。MCS51系列单片机与X86系列微处理器相比较而言,在寻址方式上有很大区别,前者是数据区、程序区分开寻址,而后者是统一寻址。因MCS51系列单片机具有分开寻址特点,其将存储器分为两类数据存储器和程序存储器。对该数据存储器而言,MCS51系列单片机可以以读、写两种方式访问。对该程序存储器而言,MCS51系列单片机也有两种方式可以访问一种是取指令操作的方式从程序存储器中读取数据;另一种是应用″MOVC″指令的方式从程序存储器中读取数据。因为MCS51单片机没有提供对程序存储器的写操作功能,因此无法实现对自身存储器内容的更新(写入新程序代码)。
但是,在现代的电子设备中经常需要更新程序存储器中的控制软件,以消除在应用过程中发现的软件缺陷或增加新的功能。“程序在线升级”这一特性已成为众多电子设备的一项基本功能。可是由于MCS51系列的单片机没有提供对程序存储器的写操作功能,如何实现MCS51系列单片机的“程序在线升级”功能成为困扰业界的一大难题。
在现有技术中,个别MCS51单片机生产厂家设计了一种具有自编程功能的MCS51系列单片机。方法是预先提供一段对单片机自身的存储器进行编程的特殊代码(即特殊程序),出厂前将该特殊代码存放于该单片机程序存储器的特定位置;用户程序通过调用此特殊代码实现对自身程序存储器的写功能。
显然,上述现有技术存在如下缺点
1、通用性差该特殊代码必须应用于特定厂家、特定型号的单片机,无法满足广泛需求,且对使用者来说,由于无法找到替代器件,商务性能差、风险大。
2、技术风险高由于上述现有技术是通过程序存储器内的″特殊代码″来更新程序存储器的内容,即″自己更新自己″,如在程序更新期间出现问题(如干扰、断电等),则会损坏功能程序,甚至导致整个设备无法运行。
技术内容本发明提供一种单片机在线升级方法和装置,以克服现有技术存在的通用性差、技术风险高的缺点。
为解决上述问题,本发明提供如下技术方案一种单片机在线升级方法,其包含以下步骤a、将该单片机的存储器分成用于存储基本程序模块的第一程序存储器、用于存储功能程序模块的第二程序存储器;b、该单片机中的CPU执行所述第一程序存储器的基本程序模块;c、所述CPU将新的程序模块写入所述第二程序存储器中,完成程序模块的更新升级。
其中,所述步骤b单片机中的CPU执行所述第一程序存储器的基本程序模块具体包含步骤b1、进行系统自检、初始化;b2、检查所述第二程序存储器的功能程序模块是否存在且是否完整;b3、将检查结果上报给上位机;b4、判断是否需要进行在线升级,如果否,那么所述CPU执行所述第二程序存储器的功能程序模块,否则进行步骤c。
所述步骤c具体包括c1、所述CPU将所述第二程序存储器设定为可读写状态;c2、将新的程序模块写入所述第二程序存储器中,完成程序模块的更新升级;c3、所述CPU将所述第二程序存储器设定为只读状态。
一种单片机在线升级装置,包含数据存储器模块,此外,该装置还包含有第一程序存储器模块,用于存储完成基本操作的程序模块;第二程序存储器模块,用于存储完成设备功能操作的程序模块;可编程逻辑器件模块,用于控制所述第一程序存储器模块和第二程序存储器模块;该单片机的总线与所述可编程逻辑器件模块、第一程序存储器模块、第二程序存储器模块和数据存储器模块的总线相连,并通过所述可编程逻辑器件模块分别控制所述的第一程序存储器模块、第二程序存储器模块和数据存储器模块。
本发明提供的一种单片机在线升级方法和装置,将单片机的程序存储器按所实现功能的不同分为两个子块,分别应用两个不同的存储器件实现,即用于存储完成基本操作功能的程序代码的第一程序存储器和用于存储完成功能操作程序代码的第二程序存储器,其中可编程逻辑器件模块通过″软件控制切换的方法″将第二程序存储器模块映射为单片机的程序存储器或数据存储器。还可以通过调用第一程序存储器BIOS中子程序的方法实现″功能程序″对第二程序存储器模块全部空间的读、写访问功能。具体来讲,本发明主要有以下优点1)、实现了以MCS51系列单片机为主控的电子设备的程序自动更新功能;2)、通用性强,适用于所有MCS51系列的单片机;3)、安全可靠性高,不怕干扰、断电等影响。
下面结合


具体实施方式
详细介绍本发明。

图1为本发明实施例所述的装置结构示意图;图2为本发明实施例所述的方法流程图;
图3为本发明实施例所述步骤b的方法流程图;图4为本发明实施例所述步骤c的方法流程图;图5为本发明实施例的地址空间分配示意图。
具体实施例方式
如图1所示为本实施例所述实现单片机程序在线升级的装置,其包括有单片机、第一程序存储器、第二程序存储器、数据存储器、可编程逻辑器件和看门狗,其中单片机为MCS51系列的单片机。MCS51系列单片机RAM寻址范围为64K字节、ROM寻址范围为64K字节,采用不同的指令访问RAM和ROM。
第一程序存储器采用FLASH器件或EPROM器件或单片机内部集成的程序存储器来实现,用于存放″基本操作程序″的功能代码,其中包含对下述的第二程序存储器进行读、写操作的子程序,可称之为″BIOS存储器″。
第二程序存储器采用可以在线编程的FLASH器件,用于存放″功能操作程序″代码,此部分代码实现单板/设备的各项功能,可称之为″功能程序存储器″。
数据存储器采用普通的SRAM即可。
可编程逻辑器件,其为可由使用人员设定其内部逻辑功能的器件,如EPLD(Erasable Programmable Logic Device可擦除可编程逻辑器件)等,用于控制所述第一程序存储器模块和第二程序存储器模块。
看门狗,其用于监控单片机CPU是否正常运行的器件,具体型号采用MAX1232等,可实现对CPU是否正常运行的监控,在异常情况下控制CPU恢复正常运行。
当然对于某些型号的单片机来说,其不仅包含有几K的程序存储器,还包含有看门狗,如图1所示中虚线框内的部分。
该单片机的地址总线、数据总线和控制线与所述可编程逻辑器件、第一程序存储器、第二程序存储器和数据存储器的地址总线、数据总线和控制线,并通过所述可编程逻辑器件分别控制所述的第一程序存储器、第二程序存储器和数据存储器。
另外,本实施例还设有一台上位机(图中未示),用于发出用户指令,该上位机可为普通微机或其它单板/设备,其通过串口或其他通信方式与本单片机通信。
下面介绍一下各存储器的空间分配,如图2所示第一程序存储器、第二程序存储器、数据存储器对应的程序、数据空间分配情况,两个程序存储器各对应一段程序存储空间,大小为16K,不同的是第二程序存储器还对应一段数据存储空间,大小为4K,这样,该单片机的程序存储器已经分为用于存储基本程序代码的第一程序存储器、用于存储功能程序代码的第二程序存储器。
本实施例的单板上电/复位后系统的运行过程如下,如图3所示第一、单片机中的CPU执行所述第一程序存储器的基本程序。
如图4所示,首先,该CPU运行第一程序存储器的基本程序,即BIOS程序代码实现系统(如单板)自检和初始化等操作;其次,检查所述第二程序存储器的功能程序是否存在,并校验所述第二程序存储器的功能程序是否完整;然后,将结果上报给上位机,如果结果正确,系统继续进行,否则,程序报错,系统挂起;当然,也可以在校验正确后通过读取设备某开关的状态决定是否跳转运行第二程序存储器的功能程序;最后,判断是否需要进行程序在线升级,如果否,那么所述CPU执行所述第二程序存储器的功能程序,即根据″上位机″指令跳转到第二程序存储器运行″功能程序″代码,否则进行下一步骤,即上位机不发送跳转指令而是发送″功能程序更新″指令,此时进行下一步骤。
第二、所述CPU将程序代码写入所述第二程序存储器中,完成程序代码的更新(升级);如图5所示,该单片机的CPU接收上位机发送来的″功能程序更新″指令,通过所述可编程逻辑器件来控制所述第二程序存储器。具体而言,如图1所示,所述第二程序存储器的片选信号由可编程逻辑器件给出,从而选定第二程序存储器为当前有效的程序存储器,同样第二程序存储器的读、写操作信号和高位的地址信号也由可编程逻辑器件给出,低位的地址信号由CPU控制的地址总线来控制;如图2所示,在可编程逻辑器件内将程序存储器ROM空间8000H-BFFFH和数据存储器RAM空间F000H-FFFFH均映射至第二程序存储器(FLASH)的片选信号,即可将这些程序存储器空间和数据存储器空间和该第二程序存储器绑定。另外在可编程逻辑器件内设置一个可由CPU控制的选择信号,由选择信号的状态决定程序存储器空间还是数据存储器空间的映射有效,从而可以实现第二程序存储器的“功能程序代码”的更新。
CPU通过可编程逻辑器件设置该第二程序存储器为“RAM”(称为“映射选择信号”),即″功能程序更新″方式,此时该CPU的读写信号通过可编程逻辑器件和该第二程序存储器的读写信号相连,CPU的地址信号和该第二程序存储器的低位地址信号相连,在CPU的控制下通过可编程逻辑器件设置该第二程序存储器的高位地址,如图2所示则为4K以上的地址信号,这样,第一程序存储器中的程序代码通过可编程逻辑器件将该第二程序存储器映射为该单片机系统的RAM,然后选取其中的4K的FLASH空间,执行相应空间的RAM读写操作,CPU从而将接收到的上位机发送来的程序代码写入第二程序存储器中,实现单片机程序在线升级。
单片机程序在线升级完成后,可再根据上位机的指令跳转至第二程序存储器中的功能程序继续运行,此时CPU通过可编程逻辑器件设置该第二程序存储器为“ROM”,即″功能程序执行″方式,该CPU的/PSEN信号通过可编程逻辑器件和该第二程序存储器的读信号相连,将该第二程序存储器的写信号通过可编程逻辑器件设置为“高电平”,使“写”状态无效,即该第二程序存储器的内容是可读的,但不可以更改,CPU的地址信号和该第二程序存储器的低位地址信号相连,在CPU的控制下通过可编程逻辑器件设置该第二程序存储器的高位地址(即64K以上的地址信号)接″低电平″,这样,对CPU来讲该第二程序存储器(FLASH)就成了它的一片″程序存储器″。这样,第一程序存储器中的程序代码通过可编程逻辑器件将该第二程序存储器映射为该单片机系统的ROM,然后通过跳转指令转至第二程序存储器的相应位置取指令代码并运行即可。
在应用本发明实施例后,在单片机执行程序在线升级功能时如受到干扰后程序中断运行或程序跑飞,可以通过看门狗电路复位单片机,复位后运行第一程序存储器中的程序代码会检测出″功能程序″存在问题,重新执行″在线升级″功能则可以消除故障;如遇到断电等情况,则单板重新上电后会执行上面相同的操作;该看门狗电路属于现有技术,在此不再赘述。
另外,单片机各中断的入口地址大都使用固定的地址,例如0003H、000BH等地址,即单片机中断发生后会固定地到第一程序存储器取指令运行。为使第二程序存储器中的″功能程序″可以利用中断可做如下处理1、在第二程序存储器中为各中断处理程序分配固定的存储起始地址;2、在第一程序存储器中的中断处理程序开头加入判断CPU运行状态(即运行基本程序还是功能程序)的代码,根据CPU运行状态决定是执行基本程序内的中断处理程序、还是跳转至第二程序存储器中相应的中断处理程序运行。
而判断CPU运行状态可用可编程逻辑器件中的″第二程序存储器映射选择信号″;或在SRAM中设置运行状态标识等方法实现。
值得一提的是,如图2所示,CPU使用了第二程序存储器FLASH中的16K空间作为它的″程序存储器″,可一般情况下FLASH的存储空间均大于16K。对于未用作″程序存储器″的FLASH空间可用于存储单板/功能程序的其它数据。但在CPU运行″功能程序″时,FLASH映射为ROM无法实现对FLASH其它可用空间的读、写操作,其实可以通过如下办法实现功能程序对FLASH其它存储单元的使用1、在第一程序存储器存储区域内的一个固定地址开始存储操作FLASH的子程序;
2、″功能程序″在需要操作FLASH时准备好相关参数后调用第一程序存储器存储区域的FLASH操作子程序;3、第一程序存储器存储区域的FLASH操作子程序首先将FLASH映射为RAM,然后根据参数完成相关操作;4、最后该FLASH操作子程序将FLASH映射为ROM,返回至功能程序区相应地址继续运行。
权利要求
1.一种单片机在线升级方法,其特征在于,该方法包含以下步骤a、将该单片机的存储器分成用于存储基本程序模块的第一程序存储器、用于存储功能程序模块的第二程序存储器;b、该单片机中的CPU执行所述第一程序存储器的基本程序模块;c、所述CPU将新的程序模块写入所述第二程序存储器中,完成程序模块的更新升级。
2.如权利要求1所述单片机在线升级方法,其特征在于,所述步骤b单片机中的CPU执行所述第一程序存储器的基本程序模块具体包含步骤b1、进行系统自检、初始化;b2、检查所述第二程序存储器的功能程序模块是否存在且是否完整;b3、将检查结果上报给上位机;b4、判断是否需要进行在线升级,如果否,那么所述CPU执行所述第二程序存储器的功能程序模块,否则进行步骤c。
3.如权利要求1所述单片机在线升级方法,其特征在于,所述步骤c具体包括c1、所述CPU将所述第二程序存储器设定为可读写状态;c2、将新的程序模块写入所述第二程序存储器中,完成程序模块的更新升级;c3、所述CPU将所述第二程序存储器设定为只读状态。
4.一种单片机在线升级的装置,包含数据存储器模块,其特征在于,该装置还包含有第一程序存储器模块,用于存储完成基本操作的程序模块;第二程序存储器模块,用于存储完成设备功能操作的程序模块;可编程逻辑器件模块,用于控制所述第一程序存储器模块和第二程序存储器模块;该单片机的总线与所述可编程逻辑器件模块、第一程序存储器模块、第二程序存储器模块和数据存储器模块的总线相连,并通过所述可编程逻辑器件模块分别控制所述的第一程序存储器模块、第二程序存储器模块和数据存储器模块。
5.如权利要求1所述的单片机在线升级的装置,其特征在于,所述的第二程序存储器模块采用Flash存储器。
全文摘要
本发明提供一种单片机在线升级方法和装置,以克服现有技术存在的通用性差、技术风险高的缺点。本发明提供如下技术方案一种单片机在线升级的方法,其包含以下步骤a.将该单片机的存储器分成用于存储基本程序模块的第一程序存储器、用于存储功能程序模块的第二程序存储器;b.该单片机中的CPU执行所述第一程序存储器的基本程序模块;c.所述CPU将新的程序模块写入所述第二程序存储器中,完成程序模块的更新升级。本发明实现了以MCS51系列单片机为主控的电子设备的程序自动更新功能;其通用性强;安全可靠性高,不怕干扰、断电等影响。
文档编号G06F13/14GK1584844SQ03154290
公开日2005年2月23日 申请日期2003年8月19日 优先权日2003年8月19日
发明者付发田 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1