CN104331305A - 产品中应用程序的刷新配置方法 - Google Patents
产品中应用程序的刷新配置方法 Download PDFInfo
- Publication number
- CN104331305A CN104331305A CN201410542480.4A CN201410542480A CN104331305A CN 104331305 A CN104331305 A CN 104331305A CN 201410542480 A CN201410542480 A CN 201410542480A CN 104331305 A CN104331305 A CN 104331305A
- Authority
- CN
- China
- Prior art keywords
- application program
- refresh
- address
- refurbishing procedure
- application area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种产品中应用程序的刷新配置方法,将刷新常数分为项目特性常数、硬件特性常数,应用程序不同则项目特性常数不同,而硬件特性常数与硬件直接相关,硬件特性常数存放在刷新程序区,而项目特性常数则放入应用程序区,并且与应用程序的结束标签在同一写入单元,刷新程序区并不存放项目特性常数,项目特性常数通过直接地址寻址的方式获取,对于诊断地址,也采用同样的处理方式,可以实现项目特性常数和诊断地址的不断更新,从而可能实现基于同样硬件的不同项目互刷和多次刷新。
Description
技术领域
本发明涉及计算机通信技术,特别涉及一种产品中应用程序升级的刷新配置方法。
背景技术
包含有应用程序的产品,经常需要对其应用程序进行刷新升级。
例如汽车防盗器产品,一般情况下,发动机管理系统(Engine Management System,简称EMS)的防盗功能要在路试结束后才会开启,而此前装入的汽车防盗器产品由于没有与发动机管理系统调试充分,导致汽车防盗器部分功能不正常,从而汽车防盗器产品中的应用程序有升级的要求;其次,汽车防盗器的功能相对单一,因为其硬件接口统一,但软件不同(不同客户不同项目的防盗协议,网络报文定义不同等),由此不同项目有互刷的要求。
发明内容
本发明要解决的技术问题是,可实现基于同样硬件的不同项目互刷和多次刷新。
为解决上述技术问题,本发明提供的产品中应用程序的刷新配置方法,产品包括一微控制器单元并具有与上位机通信的接口;
所述微控制器单元,包括FLASH存储器、RAM存储器;
所述FLASH存储器,包括刷新程序区、应用程序区;
刷新请求标志,存放在所述RAM存储器;
刷新程序、应用程序分别单独编译生成;
所述应用程序,存放在所述应用程序区,起始位置设置有开始标签,结束位置设置有结束标签;
刷新常数,分为项目特性常数、硬件特性常数两部分;
所述硬件特性常数,存放在刷新程序区;
所述项目特性常数,存放在应用程序区,并且与应用程序的结束标签在同一写入单元;
存放在应用程序区的所述应用程序,当微控制器单元收到上位机的刷新请求,则进入诊断模式,将所述刷新请求标志置位为特定值,并触发微控制器单元复位;
所述刷新程序,存放在所述刷新程序区,包含基本的通信及诊断服务;
所述刷新程序,在微控制器复位后,如果刷新请求标志为特定值,或者所述应用程序区中的开始标签不为设定值,或者所述应用程序区中的结束标签不为设定值,则进入刷新模式;否则进入正常工作模式;
所述刷新程序,进入刷新模式后,如果上位机能通过刷新安全认证,则将上位机传来的待刷新应用程序刷写到所述应用程序区,刷写完成后将刷新请求标志清零,然后复位微控制器;
所述上位机,和待刷目标产品采用相同的加密算法,加密算法的公用密钥为刷新常数,上位机的刷新常数与目标产品相同。
较佳的,所述刷新程序,在向应用程序区某一个写入单元写入数据后,并读取对应写入地址中的数据,与对应于该写入地址的待刷新的数据进行比较,以确认写入是否正确。
较佳的,所述刷新程序,在将待刷新应用程序刷写到所述应用程序区的过程中,首先对待写入地址进行校验,待写入地址只有在所述应用程序区时,才将相应数据更新到应用程序区。
较佳的,所述开始标签、结束标签,利用编译器支持的定址方式被放置在应用程序的起始和结束。
较佳的,所述刷新请求标志,为多字节数据,且备有反码存储备份以相互校验。
较佳的,所述刷新请求标志,只有在微控制器单元发生断电时被清零。
较佳的,上位机所设置的诊断地址与应用程序和刷新程序中的诊断地址一致;
项目特性常数与应用程序的诊断地址、结束标签写入到的应用程序区的同一个写入单元;
项目特性常数、结束标签及诊断地址的长度之和,小于应用程序区的一个写入单元的长度;
所述刷新程序,通过直接地址寻址的方式在应用程序区获取应用程序的诊断地址作为其自身诊断地址。
较佳的,所述刷新程序,进入刷新模式后,首先以微控制器单元每次支持的最大写入单元为单位将整个应用程序区的数据擦除,然后从低地址开始,以写入单元为单位,将上位机传来的待刷新应用程序依次刷写到应用程序区;
开始标签、结束标签的大小均小于单个写入单元;
所述刷新程序,进入刷新模式后,如果直接寻址获取的诊断地址和项目特性常数的值为全0,则认为该值不合法,此时将诊断地址和项目特性常数设为默认值,并以此为默认值生成新的刷新配置文件,作为默认的刷新配置。
较佳的,产品为汽车防盗器;
微控制器单元采用意法半导体公司的STM8A系列;
STM8A系列中开辟一段共享RAM,该段共享RAM用于刷新程序和应用程序进行数据交换,其值不被刷新程序的初始化信号重置;
刷新请求标志及其反码放入该段共享RAM;
刷新请求标志的大小大于等于4个字节;
该段共享RAM只对应用程序编译环境开放,不对刷新程序编译环境开放,刷新程序对其采用直接地址寻址方式;
存放在STM8A系列应用程序区的应用程序,当STM8A系列收到上位机的刷新请求,则进入诊断模式,将所述刷新请求标志置位为特定值,并触发STM8A系列复位;
通过编译器支持的分段定制方式,将开始标签和结束标签分别放置在应用程序的起始和结束,开始标签、结束标签的值为全0或全F之外的任意设定值,开始标签、结束标签的长度大于等于4个字节且小于等于STM8A系列一个写入单元去掉诊断地址和项目特性常数之后的长度;
刷新程序放置于STM8A系列的用户启动代码区(User Boot Code,UBC),其大小通过STM8A系列的选项配置字节依据刷新程序的大小进行设定,以STM8A系列的写入单元为对齐方式;
刷新程序区,设置写保护功能;
使能STM8A系列的读出保护功能。
本发明的产品中应用程序的刷新配置方法,将刷新常数FLASH_CONST分为项目特性常数PROJ_CONST、硬件特性常数HW_CONST两部分,其中,应用程序不同,则项目特性常数PROJ_CONST不同,而硬件特性常数HW_CONST与硬件直接相关,不同硬件该值不同,硬件特性常数HW_CONST存放在刷新程序区,而项目特性常数PROJ_CONST则放入应用程序区,并且与应用程序的结束标签Flash_Tag2在同一写入单元(Block),刷新程序区并不存放项目特性常数PROJ_CONST,项目特性常数PROJ_CONST通过直接地址寻址的方式获取,可以实现项目特性常数PROJ_CONST的不断更新,从而可能实现基于同样硬件的不同项目互刷和多次刷新,最大限度的减少产品样品报废损失,这种实现方式有很强的实用性,且较容易实现,可以用到很多带有刷新功能的产品上。
附图说明
为了更清楚地说明本发明的技术方案,下面对本发明所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的产品中应用程序的刷新配置方法一实施例的刷新配置基本原理图。
具体实施方式
下面将结合附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
产品中应用程序的刷新配置方法,产品包括一微控制器单元(MCU)并具有与上位机通信的接口;
所述微控制器单元,包括FLASH存储器、RAM存储器;
所述FLASH存储器,包括刷新程序区、应用程序区;
刷新请求标志(Flash_Request_Flag),存放在所述RAM存储器;
刷新程序(BOOT)、应用程序(ASW)分别单独编译生成,然后整合成统一程序(hex);
所述应用程序(ASW),存放在所述应用程序区,起始位置设置有开始标签Flash_Tag1,结束位置设置有结束标签Flash_Tag2,如图1所示;
刷新常数FLASH_CONST,分为项目特性常数PROJ_CONST、硬件特性常数HW_CONST两部分,即:FLASH_CONST=PROJ_CONST+HW_CONST;
所述硬件特性常数HW_CONST,存放在刷新程序区;
所述项目特性常数PROJ_CONST,存放在应用程序区,并且与应用程序的结束标签Flash_Tag2在同一写入单元(Block);
存放在应用程序区的所述应用程序(ASW),当微控制器单元(MCU)收到上位机的刷新请求,则进入诊断模式,将所述刷新请求标志(Flash_Request_Flag)置位为特定值,并触发微控制器单元(MCU)复位;
所述刷新程序(BOOT),存放在所述刷新程序区,包含基本的通信及诊断服务;
所述刷新程序(BOOT),在微控制器复位后,如果刷新请求标志(Flash_Request_Flag)为特定值,或者所述应用程序区中的开始标签Flash_Tag1不为设定值,或者所述应用程序区中的结束标签Flash_Tag2不为设定值,则进入刷新模式;否则进入正常工作模式;
所述刷新程序(BOOT),进入刷新模式后,如果上位机能通过刷新安全认证,则将上位机传来的待刷新应用程序刷写到所述应用程序区,刷写完成后将刷新请求标志(Flash_Request_Flag)清零,然后复位微控制器;
所述上位机,须和待刷目标产品采用相同的加密算法,加密算法的公用密钥为刷新常数,上位机的刷新常数应与目标产品相同。
较佳的,所述刷新程序(BOOT),在向应用程序区某一个写入单元(Block)写入数据后,并读取对应写入地址中的数据,与对应于该写入地址的待刷新的数据进行比较,以确认写入是否正确。
较佳的,所述刷新程序(BOOT),在将待刷新应用程序刷写到所述应用程序区的过程中,首先对待写入地址进行校验,待写入地址只有在应用程序区时,才将相应数据更新到应用程序区。
较佳的,开始标签Flash_Tag1、结束标签Flash_Tag2,利用编译器支持的定址方式被放置在应用程序(ASW)的起始和结束。
较佳的,刷新请求标志(Flash_Request_Flag)为多字节数据,且备有反码存储备份以相互校验。
较佳的,刷新请求标志(Flash_Request_Flag),只有在微控制器单元(MCU)发生断电时被清零。这主要是考虑刷新过程中,微控制器会复位以完成工作模式转换。
刷新授权实际上与诊断安全认证授权具有相同含义的。在刷新程序(BOOT)进入刷新模式后,上位机需要通过设定的安全认证方式后,才能真正对产品进行刷新。刷新配置有严格的授权方案,上位机刷新配置中的安全认证算法密钥与待刷新产品中的刷新常数FLASH_CONST匹配,才能将待刷新应用程序刷写到产品的微控制器单元(MCU)的应用程序区。
产品中应用程序的传统刷新配置方法,用于刷新授权的安全认证算法所涉及的刷新常数FLASH_CONST放在刷新程序(BOOT)所在刷新程序区,使得不同项目互刷不可能实现(至多可以刷新一次)。
实施例一的产品中应用程序的刷新配置方法,将刷新程序(BOOT)存放在刷新程序区;将应用程序(ASW)存放在应用程序区,在应用程序(ASW)的起始和结束,设定开始标签Flash_Tag1、结束标签Flash_Tag2两个标签,用于表征应用程序(ASW)的完整性;在微控制器单元(MCU)的RAM存储器内开辟一段特定的RAM,用于刷新程序(BOOT)与应用程序(ASW)进行数据交换,用以表征刷新请求的刷新请求标志(Flash_Request_Flag)就存储在该段RAM。刷新程序(BOOT)进入刷新模式的条件为刷新请求标志(Flash_Request_Flag)置为特定值或开始标签Flash_Tag1、结束标签Flash_Tag2的值不为设定值。
实施例一的产品中应用程序的刷新配置方法,刷新常数FLASH_CONST实际上是刷新授权安全认证算法的解密密钥SK(Secret Key),为了实现刷新配置的要求,将刷新常数FLASH_CONST分为项目特性常数PROJ_CONST、硬件特性常数HW_CONST两部分,其中,应用程序不同,则项目特性常数PROJ_CONST不同,而硬件特性常数HW_CONST与硬件直接相关,不同硬件该值不同,硬件特性常数HW_CONST存放在刷新程序区,而项目特性常数PROJ_CONST则放入应用程序区,并且与应用程序的结束标签Flash_Tag2在同一写入单元(Block),刷新程序区并不存放项目特性常数PROJ_CONST,项目特性常数PROJ_CONST通过直接地址寻址的方式获取,可以实现项目特性常数PROJ_CONST的不断更新,从而可能实现基于同样硬件的不同项目互刷和多次刷新,最大限度的减少产品样品报废损失,这种实现方式有很强的实用性,且较容易实现,可以用到很多带有刷新功能的产品上。
实施例一的产品中应用程序的刷新配置方法,将刷新常数FLASH_CONST分成分为项目特性常数PROJ_CONST、硬件特性常数HW_CONST两部分,并分别存储在刷新程序区、应用程序区,既可以利用刷新程序区的可使能的保护特性,使硬件特性常数HW_CONST在出厂后便不可以更改,在刷新配置正确的情况下,只能刷进硬件支持的程序,在控制好刷新配置安全算法的生成机制前提下,避免了异常操作导致产品刷入与硬件特性不相关的软件,以达到硬件刷新保护的目的,又可能在有正确的刷新配置(刷新授权)的前提下,实现相同硬件、不同项目的相互刷新。
实施例二
基于实施例一的产品中应用程序的刷新配置方法,上位机所设置的诊断地址DIAG_ADDR与应用程序(ASW)和刷新程序(BOOT)中的诊断地址一致;
项目特性常数PROJ_CONST与应用程序(ASW)的诊断地址DIAG_ADDR、结束标签Flash_Tag2写入到的应用程序区的同一个写入单元(Block);项目特性常数、结束标签及诊断地址的长度之和,小于应用程序区的一个写入单元的长度;
所述刷新程序(BOOT),通过直接地址寻址的方式在应用程序区获取应用程序(ASW)的诊断地址作为其自身诊断地址。
为了保持上位机和产品在刷新过程中的正常连接状态,上位机所设置的诊断地址DIAG_ADDR应该与产品中使用的诊断地址相同,更进一步地,产品中的刷新程序(BOOT)的诊断地址和应用程序(ASW)中的诊断地址也应相同,即上位机、刷新程序(BOOT)、应用程序(ASW)诊断通信的相关地址应该相同。
产品中应用程序的传统刷新配置方法,刷新程序(BOOT)的诊断地址是在刷新程序区,无法实现不同项目的互刷要求。假定A项目应用程序和B项目应用程序对应的上位机诊断地址(上位机物理地址、功能地址和产品的响应地址)不同,并假定产品中当前是A项目应用程序,如果采用传统刷新配置方法,采用A项目应用程序的刷新配置刷新后,由于刷新程序(BOOT)和B项目应用程序中的诊断相关地址不同而导致无法再次进行刷新,无法实现不同项目的互刷要求。
实施例二的产品中应用程序的刷新配置方法,刷新程序(BOOT)的诊断地址不仅仅是简单的常数(宏)定义,而采用与项目特性常数PROJ_CONST类似的处理方式,将诊断对应的诊断地址(上位机物理地址、功能地址和产品的响应地址)均存储在应用程序区,刷新程序(BOOT)也通过直接地址寻址的方式获取该地址。实施例二的产品中项目软件的刷新配置方法,用A项目应用程序的刷新配置刷进B项目应用程序后,对应的诊断地址均已更新为B项目应用程序的诊断地址,此时仍然可以采用B项目应用程序对应的刷新配置更新其他的与此硬件相关的应用程序,从而可以实现在有正确的刷新配置文件的前提下,相同硬件可以实现项目互刷和多次刷新。
实施例三
基于实施例二的产品中应用程序的刷新配置方法,所述刷新程序(BOOT),进入刷新模式后,首先以微控制器单元(MCU)每次支持的最大写入单元(Block)为单位将整个应用程序区的数据擦除,然后从低地址开始,以写入单元(Block)为单位,将上位机传来的待刷新应用程序依次刷写到应用程序区;开始标签Flash_Tag1、结束标签Flash_Tag2的大小均小于单个写入单元(Block)。
所述刷新程序(BOOT),进入刷新模式后,如果直接寻址获取的诊断地址DIAG_ADDR和项目特性常数PROJ_CONST的值为全0,则认为该值不合法,此时将诊断地址DIAG_ADDR和项目特性常数PROJ_CONST设为默认值,并以此为默认值生成新的刷新配置文件,作为默认的刷新配置,对某些刷新失败的产品(原应用程序已经全部擦除,但新应用程序还未刷新完毕),则可采用默认的刷新配置完成刷新。
实施例二的产品中应用程序的刷新配置方法,将项目特性常数PROJ_CONST和诊断地址DIAG_ADDR采用上述处理方式后,在有对应项目刷新配置的前提下,可以实现不同项目的多次互刷。但需要考虑刷新异常中断(如通信中断、异常断电)情况下的还能再刷新的问题。
实施例三的产品中应用程序的刷新配置方法,在刷新擦除未进行之前和将整个应用程序都更新完毕之后,显然不存在不能再被刷新的问题,考虑到开始标签Flash_Tag1先于结束标签Flash_Tag2擦除,并且开始标签Flash_Tag1和结束标签Flash_Tag2作为判断写入到应用程序区的应用程序(ASW)完整性的前提条件,且开始标签Flash_Tag1、结束标签Flash_Tag2的长度小于单次擦除的长度,几种刷新异常中断情况如下:
情况1:开始标签Flash_Tag1已经被擦除,结束标签Flash_Tag2未被擦除,但整个应用程序区中的应用程序(ASW)已经被破坏。重新上电后,产品无法进入应用程序(ASW)运行正常功能,因为开始标签Flash_Tag1已经不为设定值,上电自检无法通过,刷新程序(BOOT)进入刷新模式,并能正常响应刷新请求。此时诊断地址DIAG_ADDR和项目特性常数PROJ_CONST与产品刷新前的项目对应,故可以采用刷新前项目对应的配置文件可再次刷新;
情况2:开始标签Flash_Tag1已经被擦除,结束标签Flash_Tag2也被擦除,也即应用程序区中的整个应用程序(ASW)地址空间已经被擦除。和情况1一样,重新上电后,由于开始标签Flash_Tag1和结束标签Flash_Tag2不为设定值,则上电自检无法通过,刷新程序(BOOT)进入刷新模式,但存储诊断地址DIAG_ADDR和项目特性常数PROJ_CONST的写入单元(block)(即结束标签Flash_Tag2所在写入单元)已经被擦除,因此刷新程序(BOOT)将会得到全0的诊断地址DIAG_ADDR和项目特性常数PROJ_CONST。在此情况下,刷新程序(BOOT)做了处理,如果直接寻址获取的诊断地址DIAG_ADDR和项目特性常数PROJ_CONST的值为全0,则认为该值不合法,此时将诊断地址DIAG_ADDR和项目特性常数PROJ_CONST设为默认值,并以此为默认值生成新的刷新配置文件,作为默认的刷新配置,此种情况下采用默认的刷新配置可完成刷新。并且,针对同一种硬件,默认刷新配置都设置相同,减少了刷新配置管理的工作量。
情况3:应用程序区中的应用程序(ASW)已经被更新了一部分,显然,此时开始标签Flash_Tag1已经为合法值,但结束标签Flash_Tag2仍然为0,和情况2一样,诊断地址DIAG_ADDR和项目特性常数PROJ_CONST仍然为全0的非法值,刷新程序(BOOT)因为结束标签Flash_Tag2非法而进入刷新模式,此时可以通过默认的刷新配置进行刷新。
情况4:结束标签Flash_Tag2所在写入单元(Block)也已经被更新,也即整个应用程序(ASW)也已经被更新,前文已经描述,此时刷新程序(BOOT)可以正常跳入到应用程序(ASW)执行,可以响应刷新请求,此时应用刷新后的软件对应的配置文件,才能再次进行刷新。
实施例三的产品中应用程序的刷新配置方法,通过在刷新程序(BOOT)中对诊断地址DIAG_ADDR和项目特性常数PROJ_CONST的值做简单的合理性判断,进而确定是用默认值还是直接地址获取的值生成刷新配置,如果刷新过程中因发生断电或通信干扰中断而失败,仍然可以进行再次刷新,保证在刷新过程中的发生异常行为后能被再次刷新,从而可以最大限度地减少产品样品报废。
实施例四
基于实施例三的产品中项目软件的刷新配置方法,产品为汽车防盗器,微控制器单元(MCU)采用为意法半导体(ST)公司的STM8A系列,STM8A系列支持的最大的写入单元(Block)为128字节;
STM8A系列中开辟一段共享RAM(.sharedRAM),该段RAM用于刷新程序(BOOT)和应用程序(ASW)进行数据交换,其值不应该被微控制器单元(MCU)复位信号Reset重置(在COSMIC编译器环境下,该RAM段的特性应被设置为“-ib”),刷新请求标志Flash_Request_Flag及其反码放入该段共享RAM(.sharedRAM),考虑到RAM的随机性,刷新请求标志Flash_Request_Flag的大小建议大于等于4个字节,该段共享RAM(.sharedRAM)只对应用程序(ASW)编译环境开放,不对刷新程序(BOOT)编译环境开放,刷新程序(BOOT)对其采用直接地址寻址方式;
通过编译器支持的分段定制方式,将开始标签Flash_Tag1和结束标签Flash_Tag2分别放置在应用程序(ASW)的起始和结束,开始标签Flash_Tag1和结束标签Flash_Tag2的值为全0或全F之外的任意设定值,开始标签Flash_Tag1、结束标签Flash_Tag2的长度大于等于4个字节且小于等于STM8A系列一个写入单元去掉诊断地址DIAG_ADDR和项目特性常数PROJ_CONST之后的长度,一般4~8个字节较为合适;
存放在应用程序区的应用程序(ASW),当STM8A系列收到上位机的刷新请求,则进入诊断模式,将刷新请求标志(Flash_Request_Flag)置位为特定值(如0x12345678),并触发STM8A系列复位;
刷新程序(BOOT)放置于STM8A系列的用户启动代码区(User Boot Code,UBC);
所述刷新程序(BOOT),在微控制器复位后,正常运行中,在程序起始,判断刷新请求标志Flash_Request_Flag为特定值(如0x12345678)且其反码正确,或者所述应用程序区中的开始标签Flash_Tag1不为设定值,或者所述应用程序区中的结束标签Flash_Tag2不为设定值,则进入刷新模式;
所述刷新程序(BOOT),进入刷新模式后,如果上位机能通过刷新安全认证,则将上位机传来的待刷新应用程序刷写到所述应用程序区,刷写完成后将刷新请求标志(Flash_Request_Flag)清零,然后复位微控制器;
选择合适的安全认证算法,只有一个SK(解密秘钥)因子可变(如涉及到多个SK,其他SK实现约定为定制),且该SK的长度不应小于4字节;
硬件特性常数HW_CONST部分为设定值,并确保产品硬件不同硬件特性常数HW_CONST不同,对应于不同应用程序的项目特性常数PROJ_CONST不同,并通过二者组合生成对应的Seed2Key.dll;
刷新程序(BOOT)中的诊断服务层安全认证算法中,其SK(解密秘钥)的硬件特性常数HW_CONST采用设定值,并通过直接地址寻址的方式从应用程序区中获取项目特性常数PROJ_CONST,之后判断项目特性常数PROJ_CONST的值是否为全“0”,如果项目特性常数PROJ_CONST的值是否为全“0”则采用默认项目特性常数Def_PRJ_CONST与硬件特性常数HW_CONST组合进行安全认证校验;
同样,刷新程序(BOOT)中对应的诊断地址也通过直接地址寻址的方式从应用程序区中获取,并进行合理性判断,如果不合理,则采用默认的诊断地址及项目特性常数PROJ_CONST生成默认的刷新配置文件;
在上位机配置软件中,选用对应项目的Seed2Key.dll,其诊断地址也应与对应的应用程序匹配;
如果汽车防盗器产品有低功耗模式,在刷新过程中应保持产品处于工作模式,以避免低功耗模式下诊断无法连接等情况;
刷新程序(BOOT)在进行应用程序区写入单元(Block)擦除和写入时,考虑STM8A系列的特性,应确保对应的程序在RAM执行;
刷新程序(BOOT),采用与应用程序(ASW)不同的编译环境,对生成的hex或S19文件,利用特殊工具,转换成常数数组,并通过编译器支持的定址方式将其放置在设定的刷新程序区;
刷新程序区的大小,可通过STM8A系列的配置选项字节(Option Bytes)依据刷新程序(BOOT)的大小设定,以STM8A系列的写入单元(Block)为对齐方式;
刷新程序区,并设置写保护,防止意外被篡改。
应使能STM8A系列的读出保护(Readout Protection)功能,防止通过SWIM读取程序泄露重要数据。
考虑到汽车防盗器的应用程序的刷新关系到车辆失窃安全性,刷新授权安全认证算法应具有很高的安全性,这至少需要考虑以下几点:安全认证算法Seed2Key应选择国际上公开的或进行过大量安全性验证的,且复杂度与防盗器本身计算能力匹配的算法;
a)防盗器产生的用以安全认证的种子(Seed)应具备足够的随机性,其所采用的随机数的种子(Seed)应选用系统中尽量接近随机的物理量或机制;
b)用以存储算法Seed2Key的公用密钥FLASH_CONST区域应有读出保护机制,包括防盗器本身的源码,防止被读出;
c)破解防止机制,类似于安全认证处理方式,防盗器刷新安全认证设定有错误延迟机制和通过回复特定种子(Seed)的机制,以防止类似于基于统计分析方式的破解方式;
d)在刷新配置中,只提供嵌入了公用密钥的Seed2Key.dll,该dll文件在有必要的情况也可以提供给其他刷新上位机开发工具。
为了保证汽车防盗器中发送刷新安全授权认证中的种子的随机性。在随机数生成算法中,其种子混合了对应的汽车防盗器的流水号(下线后不同汽车防盗器有不同的流水号)、汽车防盗器本身的某定时器的计数值,再利用其他组合算法,产生随机性很高的种子(Seed)。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (9)
1.一种产品中应用程序的刷新配置方法,产品包括一微控制器单元并具有与上位机通信的接口;其特征在于,
所述微控制器单元,包括FLASH存储器、RAM存储器;
所述FLASH存储器,包括刷新程序区、应用程序区;
刷新请求标志,存放在所述RAM存储器;
刷新程序、应用程序分别单独编译生成;
所述应用程序,存放在所述应用程序区,起始位置设置有开始标签,结束位置设置有结束标签;
刷新常数,分为项目特性常数、硬件特性常数两部分;
所述硬件特性常数,存放在刷新程序区;
所述项目特性常数,存放在应用程序区,并且与应用程序的结束标签在同一写入单元;
存放在应用程序区的所述应用程序,当微控制器单元收到上位机的刷新请求,则进入诊断模式,将所述刷新请求标志置位为特定值,并触发微控制器单元复位;
所述刷新程序,存放在所述刷新程序区,包含基本的通信及诊断服务;
所述刷新程序,在微控制器复位后,如果刷新请求标志为特定值,或者所述应用程序区中的开始标签不为设定值,或者所述应用程序区中的结束标签不为设定值,则进入刷新模式;否则进入正常工作模式;
所述刷新程序,进入刷新模式后,如果上位机能通过刷新安全认证,则将上位机传来的待刷新应用程序刷写到所述应用程序区,刷写完成后将刷新请求标志清零,然后复位微控制器;
所述上位机,和待刷目标产品采用相同的加密算法,加密算法的公用密钥为刷新常数,上位机的刷新常数与目标产品相同。
2.根据权利要求1所述的产品中应用程序的刷新配置方法,其特征在于,
所述刷新程序,在向应用程序区某一个写入单元写入数据后,并读取对应写入地址中的数据,与对应于该写入地址的待刷新的数据进行比较,以确认写入是否正确。
3.根据权利要求1所述的产品中应用程序的刷新配置方法,其特征在于,
所述刷新程序,在将待刷新应用程序刷写到所述应用程序区的过程中,首先对待写入地址进行校验,待写入地址只有在所述应用程序区时,才将相应数据更新到应用程序区。
4.根据权利要求1所述的产品中应用程序的刷新配置方法,其特征在于,
所述开始标签、结束标签,利用编译器支持的定址方式被放置在应用程序的起始和结束。
5.根据权利要求1所述的产品中应用程序的刷新配置方法,其特征在于,
所述刷新请求标志,为多字节数据,且备有反码存储备份以相互校验。
6.根据权利要求1所述的产品中应用程序的刷新配置方法,其特征在于,
所述刷新请求标志,只有在微控制器单元发生断电时被清零。
7.根据权利要求1到6任一项所述的产品中应用程序的刷新配置方法,其特征在于,
上位机所设置的诊断地址与应用程序和刷新程序中的诊断地址一致;
项目特性常数与应用程序的诊断地址、结束标签写入到的应用程序区的同一个写入单元;
项目特性常数、结束标签及诊断地址的长度之和,小于应用程序区的一个写入单元的长度;
所述刷新程序,通过直接地址寻址的方式在应用程序区获取应用程序的诊断地址作为其自身诊断地址。
8.根据权利要求7所述的产品中应用程序的刷新配置方法,其特征在于,
所述刷新程序,进入刷新模式后,首先以微控制器单元每次支持的最大写入单元为单位将整个应用程序区的数据擦除,然后从低地址开始,以写入单元为单位,将上位机传来的待刷新应用程序依次刷写到应用程序区;
开始标签、结束标签的大小均小于单个写入单元;
所述刷新程序,进入刷新模式后,如果直接寻址获取的诊断地址和项目特性常数的值为全0,则认为该值不合法,此时将诊断地址和项目特性常数设为默认值,并以此为默认值生成新的刷新配置文件,作为默认的刷新配置。
9.根据权利要求7所述的产品中应用程序的刷新配置方法,其特征在于,
产品为汽车防盗器;
微控制器单元采用意法半导体公司的STM8A系列;
STM8A系列中开辟一段共享RAM,该段共享RAM用于刷新程序和应用程序进行数据交换,其值不被刷新程序的初始化信号重置;
刷新请求标志及其反码放入该段共享RAM;
刷新请求标志的大小大于等于4个字节;
该段共享RAM只对应用程序编译环境开放,不对刷新程序编译环境开放,刷新程序对其采用直接地址寻址方式;
存放在STM8A系列应用程序区的应用程序,当STM8A系列收到上位机的刷新请求,则进入诊断模式,将所述刷新请求标志置位为特定值,并触发STM8A系列复位;
通过编译器支持的分段定制方式,将开始标签和结束标签分别放置在应用程序的起始和结束,开始标签、结束标签的值为全0或全F之外的任意设定值,开始标签、结束标签的长度大于等于4个字节且小于等于STM8A系列一个写入单元去掉诊断地址和项目特性常数之后的长度;
刷新程序放置于STM8A系列的用户启动代码区,其大小通过STM8A系列的选项配置字节依据刷新程序的大小进行设定,以STM8A系列的写入单元为对齐方式;
刷新程序区,设置写保护功能;
使能STM8A系列的读出保护功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410542480.4A CN104331305B (zh) | 2014-10-15 | 2014-10-15 | 产品中应用程序的刷新配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410542480.4A CN104331305B (zh) | 2014-10-15 | 2014-10-15 | 产品中应用程序的刷新配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104331305A true CN104331305A (zh) | 2015-02-04 |
CN104331305B CN104331305B (zh) | 2018-02-09 |
Family
ID=52406039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410542480.4A Active CN104331305B (zh) | 2014-10-15 | 2014-10-15 | 产品中应用程序的刷新配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331305B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407184A (zh) * | 2020-03-16 | 2021-09-17 | 广州汽车集团股份有限公司 | 一种诊断安全算法封装及验证方法、系统及存储介质 |
CN115525482A (zh) * | 2022-11-29 | 2022-12-27 | 深圳市航顺芯片技术研发有限公司 | 一种微控制器芯片启动控制方法、装置、芯片及存储介质 |
CN117170753A (zh) * | 2023-08-18 | 2023-12-05 | 新汽有限公司 | 程序处理方法、程序处理装置、车辆和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174099A1 (en) * | 2005-01-28 | 2006-08-03 | Keng-Chun Wang | Embedded system, automatic loading system, and method capable of automatically loading a root file system |
CN101369153A (zh) * | 2008-08-13 | 2009-02-18 | 奇瑞汽车股份有限公司 | 汽车电子控制器软件can线烧写的控制方法 |
CN202186344U (zh) * | 2011-07-18 | 2012-04-11 | 广州汽车集团股份有限公司 | 车载电子控制单元 |
CN103412561A (zh) * | 2013-08-08 | 2013-11-27 | 奇瑞汽车股份有限公司 | 一种汽车控制器的刷新方法及装置 |
US8762879B1 (en) * | 2008-09-01 | 2014-06-24 | Google Inc. | Tab management in a browser |
-
2014
- 2014-10-15 CN CN201410542480.4A patent/CN104331305B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174099A1 (en) * | 2005-01-28 | 2006-08-03 | Keng-Chun Wang | Embedded system, automatic loading system, and method capable of automatically loading a root file system |
CN101369153A (zh) * | 2008-08-13 | 2009-02-18 | 奇瑞汽车股份有限公司 | 汽车电子控制器软件can线烧写的控制方法 |
US8762879B1 (en) * | 2008-09-01 | 2014-06-24 | Google Inc. | Tab management in a browser |
CN202186344U (zh) * | 2011-07-18 | 2012-04-11 | 广州汽车集团股份有限公司 | 车载电子控制单元 |
CN103412561A (zh) * | 2013-08-08 | 2013-11-27 | 奇瑞汽车股份有限公司 | 一种汽车控制器的刷新方法及装置 |
Non-Patent Citations (2)
Title |
---|
李济泰 等: "基于ISO15765协议的车载电控单元应用程序刷新系统设计", 《汽车技术》 * |
黄丽芳 等: "基于汽车诊断技术的在线刷新协议的设计与实现", 《"广汽部件杯"广东省汽车行业第六期学术论文集》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407184A (zh) * | 2020-03-16 | 2021-09-17 | 广州汽车集团股份有限公司 | 一种诊断安全算法封装及验证方法、系统及存储介质 |
CN115525482A (zh) * | 2022-11-29 | 2022-12-27 | 深圳市航顺芯片技术研发有限公司 | 一种微控制器芯片启动控制方法、装置、芯片及存储介质 |
CN117170753A (zh) * | 2023-08-18 | 2023-12-05 | 新汽有限公司 | 程序处理方法、程序处理装置、车辆和存储介质 |
CN117170753B (zh) * | 2023-08-18 | 2024-04-09 | 新汽有限公司 | 程序处理方法、程序处理装置、车辆和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104331305B (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105308609B (zh) | 存储事件数据的系统和方法 | |
CN103412561B (zh) | 一种汽车控制器的刷新方法 | |
US7761717B2 (en) | Memory device with data security in a processor | |
JP5419776B2 (ja) | 半導体装置及びデータ処理方法 | |
CN105122258B (zh) | 对系统进行配置的方法、计算系统以及物品 | |
US8694716B2 (en) | Method for writing and reading data in an electrically erasable and programmable nonvolatile memory | |
JP4568196B2 (ja) | プロセッサ、コンピュータシステムおよび認証方法 | |
US20060177064A1 (en) | Secure memory card with life cycle phases | |
CN104809009B (zh) | 一种汽车电控单元的程序加载引导方法 | |
CN105389265B (zh) | 当加密参数改变时在垃圾数据上生成零内容的方法和装置 | |
CN108108631A (zh) | 一种根密钥处理方法及相关装置 | |
CN101788958A (zh) | 一种存储器数据保护的方法 | |
CN103679067A (zh) | 用于非易失性存储器系统内代码保护的系统及方法 | |
CN102509046A (zh) | 带有休眠支持的全局有效的测量的操作系统发动 | |
US20100037000A1 (en) | One-time-programmable memory emulation | |
CN106919859A (zh) | 基本输入输出系统保护方法和装置 | |
CN104331305A (zh) | 产品中应用程序的刷新配置方法 | |
CN107526947A (zh) | 一种嵌入式软件激活控制方法 | |
CN105354059A (zh) | 空调系统的控制器的升级方法及装置 | |
CN107832589A (zh) | 软件版权保护方法及其系统 | |
US20160063279A1 (en) | Periodic memory refresh in a secure computing system | |
US8397081B2 (en) | Device and method for securing software | |
EP1846826A2 (en) | Secure memory card with life cycle phases | |
JP2002299464A (ja) | 半導体集積回路 | |
US20040186947A1 (en) | Access control system for nonvolatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |