一种防止重编程程序对应用程序干扰的方法及装置的制作方法

文档序号:6367481阅读:140来源:国知局
专利名称:一种防止重编程程序对应用程序干扰的方法及装置的制作方法
技术领域
本发明涉及应用程序更新过程中防干扰技术,更具体的说,是涉及ー种防止重编程程序对应用程序干扰的方法及装置。
背景技术
EQJ(Electronic Control Unit,电子控制单元)又称“行车电脑”,是汽车专用的微机控制器。当车载ECU中的应用程序存在缺陷或者需要升级时,可以通过在线重编程的方法对ECU中的应用程序进行更新,具备在线重编程功能的ECU里除了应用程序外,还有重编程程序,从车载总线上接收到新的应用程序并且写入ECU里。因此,E⑶有两种运行模型重编程模式和应用程序模式;在重编程模式下,应用程序不运行,由重编程软件下载新的应用程序,并写入E⑶,对应用程序进行更新;当重编程完成后,跳转到应用程序模式下,运行控制算法。重编程程序和应用程序共享ECU资源,如 MCU,存储芯片、定时器和 EEPROM(Electrically Erasable Programmable Read-OnlyMemory,电可擦可编程只读存储器)等。当E⑶从重编程模式切换到应用程序模式时,重编程程序已经启动MCU资源,如定时器、存储器等已开始被使用,应用程序继续使用这些资源时,有可能会发生错误,如应用程序定时时间不准确、存储器访问结果错误等。本发明在于提供ー种方法和装置,解决重编程程序对应用程序造成的干扰,避免应用程序运行出现错误。

发明内容
有鉴于此,本发明提供了ー种防止重编程程序对应用程序干扰的方法及装置,以解决现有技术中对应用程序更新时,重编程程序对应用程序造成的干扰,避免从重编程模式切换到应用程序时,应用程序出现运行错误的问题。为实现上述目的,本发明实施例提供如下技术方案ー种防止重编程程序对应用程序干扰的方法,包括初始化控制器的硬件环境和软件环境;获取重编程标识,并判断所述重编程标识是否有效;如果所述重编程标识有效,则运行所述重编程程序;如果所述重编程标识无效,则获取应用程序标识,并判断所述应用程序标识是否有效;如果所述应用程序标识有效,则反初始化所述控制器的硬件环境,并运行所述应
用程序。 进ー步地,所述判断所述重编程标识是否有效,具体包括判断所述重编程标识与预设的第一有效值是否相等,如果相等,则判定所述重编程标识有效;否则,判定所述重编程标识无效。进ー步地,所述判断所述应用程序标识是否有效,具体包括判断所述应用程序标识与预设的第二有效值是否相等,如果相等,则判定所述应用程序标识有效;否则,判定所述应用程序标识无效。进ー步地,所述初始化控制器的硬件环境和软件环境,具体包括为所述控制器的定时器、EEPR0M、时钟模块和CAN模块设置初始值。进ー步地,所述反初始化控制器的硬件环境,具体包括将所述控制器的定时器、EEPR0M、时钟模块和CAN模块的寄存器的值恢复到默认 值。本发明实施例还提供了ー种防止重编程程序对应用程序干扰的装置,该装置包括初始化模块,用于初始化控制器的硬件环境和软件环境;重编程标识获取和判断模块,用于获取重编程标识,并判断所述重编程标识是否有效;重编程程序模块,用于当所述重编程标识有效时,运行重编程程序;应用程序标识获取和判断模块,用于当所述重编程标识无效时,获取应用程序标识,并判断所述应用程序标识是否有效;应用程序模块,用于当应用程序标识有效时,运行所述应用程序;反初始化模块用于在运行所述应用程序之前,反初始化所述控制器的硬件环境。所述重编程标识获取和判断模块,具体用于判断所述重编程标识与预设的第一有效值是否相等,如果相等,则判定所述重编程标识有效;否则,判定所述重编程标识无效。所述应用程序标识获取和判断模块,具体用于判断所述应用程序标识与预设的第二有效值是否相等,如果相等,则判定所述应用程序标识有效;否则,判定所述应用程序标识无效。所述初始化模块,具体用于为所述控制器的定时器、EEPR0M、时钟模块和CAN模块设置初始值。所述反初始化模块,具体用于在运行所述应用程序之前,将所述控制器的定时器、EEPR0M、时钟模块和CAN模块的寄存器恢复到默认值。本发明公开的ー种防止重编程程序对应用程序干扰的方法及装置,在控制器启动时初始化控制器的硬件环境和软件环境,通过判断重编程标识是否有效,判定是否要执行重编程程序,如重编程标识无效,则进一歩判断应用程序标识是否有效,如应用程序标识有效,在启动应用程序之前,为了防止重编程程序对应用程序造成干扰,则反初始化控制器的硬件环境,来消除重编程程序给应用程序带来的干扰。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图I为实施例一公开的ー种防止重编程程序对应用程序干扰的方法流程图2是实施例ニ公开的ー种防止重编程程序对应用程序干扰的装置示意图。
具体实施例方式为了引用和清楚起见,下文中使用的技术名词的说明、简写或縮写总结如下ECU !Electronic Control Unit,电子控制单兀;EEPROM Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器。 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。E⑶中同时安装有重编程程序和应用程序,同一时间只能运行两种程序之一,即ECU有两种工作模式重编程模式和应用程序模式。而重编程模式和应用程序模式共享ECU的资源,比如定时器、EEPR0M、时钟模块和CAN模块等。实施例一请參阅附图1,为本实施例公开的ー种防止重编程程序对应用程序干扰的方法流程图SlOl :初始化控制器的硬件环境和软件环境;具体地,初始化控制器的硬件环境,包括初始化CAN模块、时钟模块,为定时器的寄存器赋予一定值,还包括将EEPROM设置在初始的读取页位置。初始化控制器的软件环境,包括为ー些变量赋予初始值。S102 :获取重编程标识,并判断重编程标识是否有效;如果重编程标识有效,执行步骤S103,否则,执行步骤S104 ;在步骤S102中,重编程标识是判断当前是否有重编程请求的标识。本实施例中,重编程标识存放在EEPROM第I页,读取EEPROM第I页的内容,获得重编程标识。当然,重编程标识不限制必须存放在EEPROM第I页,也可以存放在EEPROM的其他页,本实施例不予限制。判断重编程标识是否有效,具体为将获得的重编程标识与预设的第一有效值作比较,如果重编程标识与预设的第一有效值相等,则判定重编程标识有效;否则,判定重编程标识无效。需要说明的是,第一有效值是由软件编程人员预设的,比如第一有效值可以为OxAA。当ECU从CAN总线上读取到重编程请求的报文吋,即当有针对应用程序的重编程请求吋,重编程标识便被赋予第一有效值OxAA。S103 :运行重编程程序,E⑶转入重编程模式;具体地,如果重编程标识有效,即根据步骤S102,当重编程标识与预设的第一有效值相等吋,则说明ECU从CAN总线上读取到重编程请求的报文,即需要对应用程序进行更新。此时,运行重编程程序,由重编程程序从CAN总线上下载新的应用程序,并将下载的新的应用程序写入ECU中,替代原有的应用程序。这个过程中,原有的应用程序是不运行的,此过程E⑶处于重编程模式。
需要说明的是,步骤SlOl中已经对定时器和EEPROM等E⑶共用硬件资源初始化,在重编程模式下,上述硬件资源已经启动。S104 :获取应用程序标识,并判断应用程序标识是否有效;如果应用程序标识有效,则执行步骤S105,否则,执行步骤S103 ;根据步骤S102,如果重编程标识无效,即重编程标识与预设的第一有效值不相等,则获取应用程序标识,并判断应用程序标识是否有效。本实施例中,应用程序标识存放在EEPROM第I页,读取EEPROM第I页的内容,获得应用程序标识。当然,应用程序标识不限制必须存放在EEPROM第I页,也可以存放在EEPROM的其他页,本实施例不予限制。
判断应用程序标识是否有效,具体为判断应用程序标识与预设的第二有效值是否相等,如果相等,则判定应用程序标识有效;否则,判定应用程序标识无效。第二有效值是由编程人员预设的,比如第二有效值可以为0x55。如当获取到应用程序更新完毕的报文后,应用程标识便被赋予第二有效值0x55。S105 :反初始化控制器的硬件环境;具体地,反初始化控制器的硬件环境包括将控制器的定时器、EEPR0M、时钟模块和CAN模块的寄存器恢复到默认值。在上述步骤S103中,运行重编程程序时已经启动了控制器的硬件环境和软件环境,比如控制器的定时器和EEPR0M。在步骤S105中,为了防止运行应用程序时,出现错误,所以需要对控制器的硬件环境反初始化。例如EEPR0M反初始化,是为了防止E⑶从重编程模式转入应用程序模式后,应用程序按默认方式访问EEPR0M,结果访问结果错误。因为当EEPROM存储器存在分页机制吋,若在E⑶进入应用程序模式前,重编程软件访问过EEPROM的某页地址(非第O页),EEPROM相关寄存器的状态为非第O页状态,那么当ECU进入应用程序模式后,若应用程序按默认方式访问第O页,则访问结果出错。所以必须在转入应用程序模式之前,实现对EEPROM模块相关寄存器恢复默认值设置。例如,Freescale MC9S08DZ60芯片的内置EEPROM为分页资源,共分2页。ECU重编程软件的标示信息如应用程序有效标识等存放在EEPROM的第I页,应用程序的信息存放在EEPROM的第O页。当ECU重编程软件在进入应用程序模式之前,需要访问EEPR0M,读取应用程序有效标志等信息,则设置了 EEPROM的分页寄存器FCNFG为第I页。当ECU重编程软件进入应用程序模式后,若应用程序按MCU复位后寄存器默认状态(即FCNFG位第O页状态),来访问EEPROM分页寄存器FCNFG,目的访问地址为EEPROM的第O页,那么由于E⑶重编程软件进入应用程序后FCNFG仍为第I页状态,则应用程序实际访问的是EEPROM的第I页,所以应用程序访问结果错误。因此,为了防止运行应用程序时出现错误,需要对控制器的硬件环境反初始化。S106 :运行应用程序,E⑶转入应用程序模式;在步骤S105中,提前反初始化控制器的硬件环境,为运行应用程序做准备。本实施例的ー种防止重编程程序对应用程序干扰的方法,通过反初始化控制器的硬件环境,来为运行应用程序创造环境,排除掉重编程程序对应用程序造成的干扰。实施例ニ请參见图2,本实施例提供了ー种防止重编程程序对应用程序干扰的装置,该装置包括初始化模块201,用于初始化控制器的硬件环境和软件环境;重编程标识获取和判断模块202,用于获取重编程标识,并判断重编程标识是否有效;重编程程序模块203,用于当重编程标识有效时,运行重编程程序;应用程序标识获取和判断模块204,用于当重编程标识无效吋,获取应用程序标识,并判断应用程序标识是否有效;应用程序模块205,用于当应用程序标识有效时,运行应用程序;反初始化模块206 :用于在运行应用程序之前,反初始化控制器的硬件环境。具体地,重编程标识获取和判断模块202,具体用于判断重编程标识与预设的第一有效值是否相等,如果相等,则判定重编程标识有效;否则,判定重编程标识无效。需要说明的是,重编程标识是判断当前是否有重编程请求的标识。本实施例中,重编程标识存放在EEPROM第I页,读取EEPROM第I页的内容,获得重编程标识。当然,重编程标识不限制必须存放在EEPROM第I页,也可以存放在EEPROM的其他页,本实施例不予限制。另外,第一有效值是由软件编程人员预设的,比如第一有效值可以为OxAA。当E⑶从CAN总线上读取到重编程请求的报文吋,即当有针对应用程序的重编程请求吋,重编程标识便被赋予第一有效值OxAA。具体地,应用程序标识获取和判断模块204,具体用于判断应用程序标识与预设的第二有效值是否相等,如果相等,则判定应用程序标识有效;否则,判定应用程序标识无效。本实施例中,应用程序标识存放在EEPROM第I页,读取EEPROM第I页的内容,获得应用程序标识。当然,应用程序标识不限制必须存放在EEPROM第I页,也可以存放在EEPROM的其他页,本实施例不予限制。另外,第二有效值是由编程人员预设的,比如第二有效值可以为0x55。如当获取到应用程序更新完毕的报文后,应用程标识便被赋予第二有效值0x55。具体地,反初始化模块206,具体用于在运行应用程序之前,将控制器的定时器、EEPROM的寄存器恢复到默认值。本实施例提供的防止重编程程序对应用程序干扰的装置,在重编程模式向应用程 序模式切換之前,对控制器的硬件环境进行反初始化,避免应用程序运行时出现错误,排除了重编程程序对应用程序的干扰。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相參见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处參见方法部分说明即可。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示 的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.ー种防止重编程程序对应用程序干扰的方法,其特征在干, 初始化控制器的硬件环境和软件环境; 获取重编程标识,并判断所述重编程标识是否有效; 如果所述重编程标识有效,则运行所述重编程程序;如果所述重编程标识无效,则获取应用程序标识,并判断所述应用程序标识是否有效; 如果所述应用程序标识有效,则反初始化所述控制器的硬件环境,并运行所述应用程序。
2.根据权利要求I所述的方法,其特征在于,所述判断所述重编程标识是否有效,具体包括 判断所述重编程标识与预设的第一有效值是否相等,如果相等,则判定所述重编程标识有效;否则,判定所述重编程标识无效。
3.根据权利要求I所述的方法,其特征在于,所述判断所述应用程序标识是否有效,具体包括 判断所述应用程序标识与预设的第二有效值是否相等,如果相等,则判定所述应用程序标识有效;否则,判定所述应用程序标识无效。
4.根据权利要求I所述的方法,其特征在于,所述初始化控制器的硬件环境和软件环境,具体包括 为所述控制器的定时器、EEPROM、时钟模块和CAN模块设置初始值。
5.根据权利要求I所述的方法,其特征在于,所述反初始化控制器的硬件环境,具体包括 将所述控制器的定时器、EEPROM、时钟模块和CAN模块的寄存器的值恢复到默认值。
6.ー种防止重编程程序对应用程序干扰的装置,其特征在于,所述装置包括 初始化模块,用于初始化控制器的硬件环境和软件环境; 重编程标识获取和判断模块,用于获取重编程标识,并判断所述重编程标识是否有效; 重编程程序模块,用于当所述重编程标识有效时,运行重编程程序; 应用程序标识获取和判断模块,用于当所述重编程标识无效时,获取应用程序标识,并判断所述应用程序标识是否有效; 应用程序模块,用于当应用程序标识有效时,运行所述应用程序; 反初始化模块用于在运行所述应用程序之前,反初始化所述控制器的硬件环境。
7.根据权利要求6所述的装置,其特征在于,所述重编程标识获取和判断模块,具体用于 判断所述重编程标识与预设的第一有效值是否相等,如果相等,则判定所述重编程标识有效;否则,判定所述重编程标识无效。
8.根据权利要求6所述的装置,其特征在于,所述应用程序标识获取和判断模块,具体用干 判断所述应用程序标识与预设的第二有效值是否相等,如果相等,则判定所述应用程序标识有效;否则,判定所述应用程序标识无效。
9.根据权利要求6所述的装置,其特征在于,所述初始化模块,具体用于为所述控制器的定时器、EEPROM、时钟模块和CAN模块设置初始值。
10.根据权利要求6所述的装置,其特征在于,所述反初始化模块,具体用于 在运行所述应用程序之前,将所述控制器的定时器、EEPROM、时钟模块和CAN模块的寄存器恢复到默认值。
全文摘要
本发明公开了一种防止重编程程序对应用程序干扰的方法及装置,所述方法包括初始化控制器的硬件环境和软件环境;获取重编程标识,并判断所述重编程标识是否有效;如果所述重编程标识有效,则运行所述重编程程序;如果所述重编程标识无效,则获取应用程序标识,并判断所述应用程序标识是否有效;如果所述应用程序标识有效,则反初始化所述控制器的硬件环境,并运行所述应用程序。本发明通过在从重编程模式向应用程序模式切换之前,对控制器的硬件环境和软件环境进行初始化,避免应用程序运行过程中出现错误,排除了重编程程序对应用程序造成干扰。
文档编号G06F9/44GK102650939SQ20121009305
公开日2012年8月29日 申请日期2012年3月31日 优先权日2012年3月31日
发明者胡娜, 陈昆盛 申请人:北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1