技术领域
[0001] 本公开涉及车辆技术领域,尤其涉及一种集成电路、车载控制器以及车辆。
相关背景技术
[0002] 随着车辆的不断发展,其更新换代的速度越来越快。与之顺应地,车载控制器,例如车身控制模块(Body Control Module,BCM)集成的功能越来越多,且BCM软件功能的变更越来越频繁,因此BCM软件的升级和维护编的越来越重要。
[0003] 通常,为了避免升级过程对用户使用相关应用程序的影响,可采用AB升级方式,该方式下升级时可保持应用程序正常运行。目前模拟AB升级的方案中,单片机中的程序存储芯片可分为应用程序区、升级文件缓存区和升级引导区,升级文件缓存区是接收新的升级文件的区域,当接收文件完成后设置标志位,下次复位之后将升级缓存区文件整体拷贝到应用程序区。但在升级失败的情况下,无法恢复至上一版本的文件,导致安全性较差,可靠性较低。
具体实施方式
[0036] 为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
[0037] 在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
[0038] 本文首先说明传统集成电路(也可称为“集成电路芯片”,或简称为“芯片”,下文中以“单片机”为例说明)的分区和升级方式,然后再结合本公开实施例提供的集成电路的分区方式说明其可实现的升级方式的优点。
[0039] 通常,单片机的升级方式(即实现应用程序刷写的方式)可分为两类。
[0040] 第一类升级方式为,升级时单片机进入特殊的工作模式,实际上是跳转到另外一段独立的程序中运行,俗称引导加载程序或启动加载程序(BootLoader);进入BootLoader后,单片机所在的控制器不具备正常的应用功能,只是为了完成应用程序的更新和加载。对应地,单片机的程序存储芯片分为BootLoader区和应用程序区(即APP区)即可。
[0041] 第二类升级方式为,升级时可保持应用程序正常运行,新的应用程序通过单片机的通信接口接收进来并存储在程序存储芯片;程序接收完成之后,可通过复位的方式进入新的应用程序,即再次启动的时候利用新的应用程序进行执行。这种方式俗称AB面升级,也可称为 A/B系统升级、AB升级、无感知升级、无缝更新或分区升级。该升级方式对芯片性能要求很高,一般中低端的单片机是不具备AB面升级的。其中,在芯片复位过程中,仍然存在一个类似第一类升级方式中提到的BootLoader的程序作为引导,只是这个BootLoader在该升级方式中完成的是AB的切换。
[0042] 以上两类升级方式具有其各自的优缺点,具体地:
[0043] 第一类升级方式的优点是节省程序存储芯片的资源,传统燃油车通常采用该升级方式;该升级方式实现过程中,车主必须到指定的维修点升级。其缺点是升级的时候应用程序的功能无法使用,如果升级时间过长,会影响用户体验。
[0044] 第二类升级方式的优点是升级时应用程序的功能依然可用,升级时间比较长也不会影响用户体验;其缺点是需要专门的支持AB面升级的芯片,成本比较高。
[0045] 针对以上两类升级方式的优缺点,本公开实施例提出在中低端芯片上模拟AB面升级的技术方案。
[0046] 相关技术中,模拟AB升级的方案中主要有两种。
[0047] 第一种模拟AB升级的方案中,程序存储芯片的划分如图1所示,其分为应用程序区、升级文件缓存区和升级引导区(BootLoader);其中,升级文件缓存区是接收新的升级文件的区域,当接收文件完成后设置标志位,下次复位之后将升级缓存区文件整体拷贝到应用程序区,并在应用程序区执行升级文件。该升级过程中存在的问题是,应用程序区中原有的应用程序没有备份,在升级失败的情况下,无法恢复至原有版本,导致安全可靠性较低。
[0048] 第二种模拟AB升级的方案中,程序存储芯片的划分如图2所示,其与图1示出的划分方式类似,但各区的功能不同。具体地,图2中,应用程序区分为应用程序区A和应用程序区B,并且须对应专门的应用程序文件,即制作应用程序文件时,须分别做成应用程序区A和应用程序区B的文件,开发人员和运营人员需要维护两套文件。例如,当前运行的是应用程序区A,那么只能使用应用程序区B的文件进行升级。此方案会减少一次程序存储芯片拷贝文件的过程,或多或少可以节省一些系统启动的时间;但是,在应用程序的维护上多了很多工作。如此,该AB升级方案在单个芯片中应用时效果较好,但是在新能源车辆的大范围运营时容易造成混乱,特别是多个控制器都在用这种方案时,每个控制器都需设置两份文件,测试、维护以及运营难度较大。由此导致其并不适用于应用到车辆中。
[0049] 本公开实施例提供的集成电路,在上述第一种AB升级方案的基础上进行改进,针对车辆,例如新能源车上的CAN节点使用的中低端单片机,提出一种模拟AB升级的分区方案,可实现对上一版本的应用程序进行备份和回滚,以改善相关技术中存在的安全可靠性问题。具体地,单个CAN节点自身即可实现AB升级和备份回滚,缩短了用户可感知的升级时间,具体地,有复位交换AB过程对应的时间为用户可感知的时间,较之前减少了数据传输时间;且提高了系统可靠性。
[0050] 进一步地,结合车辆的具体升级场景。目前,新能源车主流的升级方式是通过空中下载技术(Over‑the‑AirTechnology,OTA)实现控制固件升级,本公开实施例提供的技术方案针对新能源车上众多的 CAN节点进行集成电路的分区设置,以使其可实现模拟AB升级且安全可靠性较高。具体地,车载控制器一般采用单片机且中低端单片机较多,当车端的具有上网功能的智能控制器通过4G或5G等通讯网络从云服务器下载整车升级包后,即可在合适的时机对全车控制器做升级。如此,在车辆运行过程中,先完成升级文件发送,即完成升级文件传输,由于传输文件是在正常工作情况下完成的,从用户体验上升级过程大大缩短,可提升用户体验。可选地,由于发送文件会占用总线,故传输文件使用的CAN标识符可采用优先级较低的标识符,以免影响控制器的正常使用功能。
[0051] 下文中结合图3‑图9,对本公开实施例提供的集成电路及其可实现的升级方式进行示例性说明。
[0052] 示例性地,图3示出了本公开实施例中的一种集成电路的分区结构示意图。参照图3,该集成电路01包括:存储器02,存储器02包括第一应用程序区110、第二应用程序区120以及升级备份区130;第一应用程序区110为运行当前版本的应用程序(也可称为“低版本的应用程序”)或更新版本的应用程序(也可称为“高版本的应用程序”) 的区域;第二应用程序区120为在第一应用程序区110运行当前版本的应用程序时接收更新版本的应用程序,且在第一应用程序区110运行更新版本的应用程序时备份当前版本的应用程序的存储区域,即第二应用程序区120为存储接收到的更新版本的应用程序或备份的当前版本的应用程序的区域;升级备份区130为第一应用程序区110和第二应用程序区120进行程序调换时的备份区域(即数据缓存区域),可选的,具体可为将第二应用程序区120的更新版本的应用程序移动到第一应用程序区110过程中的当前版本的应用程序的数据缓存区域,也可为将第二应用程序区120备份的当前版本的应用程序移动到第一应用程序区110过程中的更新版本的应用程序的数据缓存区域。
[0053] 在其他实施方式中,该集成电路10还可包括定时器、计数器、输入输出接口(即I/O接口)或能够实现其他功能的芯片,或者可以包括显示驱动电路、脉宽调制电路、模拟多路转换器以及模数转换器等电路,以及可以包括本领域技术人员可知的其他电路结构部件,在此不赘述也不限定。
[0054] 其中,第一应用程序区110是程序的运行区域,可用于运行当前版本的应用程序或更新版本的应用程序;第二应用程序区120是在第一应用程序区110运行时接收更新版本的应用程序或备份当前版本的应用程序的存储区域;升级备份区130是将更新版本的应用程序由第二应用程序区120转移至第一应用程序区110时、对当前版本的应用程序进行暂存并备份中第二应用程序区120的数据缓存区域,以便实现升级过程中当前版本的应用程序的备份和恢复;进一步地,升级备份区130还可在将备份的当前版本的应用程序由第二应用程序区120 移动至第一应用程序区110时,对更新版本的应用程序进行备份,以便实现应用程序的分析查验。
[0055] 具体地,数据更新与备份的过程可为:将第一应用程序区110中的当前版本的应用程序转移至升级备份区130(可称为“交换步骤1”),将第二应用程序区120中的更新版本的应用程序转移至第一应用程序区110(可称为“交换步骤2”),然后将升级备份区130中的当前版本的应用程序转移至第二应用程序区120(可称为“交换步骤3”)。至此,实现第一应用程序区110与第二应用程序区120中的数据的互换,即将更新版本的应用程序转移至第一应用程序区110中,且将当前版本的应用程序转移至第二应用程序区120中。
[0056] 基于此,若第一应用程序区110可正常运行更新版本的应用程序,则升级成功;若第一应用程序区110无法正常运行更新版本的应用程序,则升级失败。在升级失败的情况下,可将第二应用程序区120中的当前版本的应用程序重新恢复至第一应用程序区110中,使得第一应用程序区110还可正常运行低版本的应用程序,从而改善了由于升级失败而导致的集成电路无法正常运行的问题,可提升安全可靠性;同时,可利用升级备份区130实现更新版本的应用程序的转移,即将其由第一应用程序区110转移至第二应用程序区120,以便实现对升级失败原因的分析查验。
[0057] 本公开实施例提供的集成电路,通过设置其包括存储器,存储器包括第一应用程序区110、第二应用程序区120以及升级备份区130;第一应用程序区110为当前版本的应用程序或更新版本的应用程序的运行区域;第二应用程序区120为在第一应用程序区运行当前版本的应用程序时接收更新版本的应用程序,且在第一应用程序区运行更新版本的应用程序时备份当前版本的应用程序的存储区域;升级备份区 130为将第二应用程序区的更新版本的应用程序移动到第一应用程序区过程中的当前版本的应用程序的数据缓存区域,可在将更新版本的应用程序移动到第一应用程序区110的过程中,利用升级备份区130 缓存当前版本的应用程序中的至少部分数据,以将当前版本的应用程序备份到第二应用程序区120中,实现对当前版本的应用程序的备份;如此,在升级失败的情况下,可利用第二应用程序区120中备份的当前版本的应用程序覆盖第一应用程序区110中的更新版本的应用程序,从而实现对当前版本的应用程序的恢复,即在升级失败的情况下,可恢复当前版本的应用程序,并在第一应用程序区110继续执行当前版本的应用程序,有利于改善运行故障,提升安全性和可靠性。
[0058] 进一步地,在一些实施例中,图4示出了本公开实施例中的另一种集成电路的分区结构示意图。参照图4,该集成电路中,存储器02 设置程序存储芯片(例Flash),第一应用程序区110和第二应用程序区120均设置在程序存储芯片内,程序存储芯片中还设置升级引导区 100;升级备份区130可设置在程序存储芯片内。
[0059] 示例性地,第一应用程序区110和第二应用程序区120可为同一个程序存储芯片中的不同分区,升级备份区130可为该同一程序存储芯片中的另一分区;具体地,在程序存储芯片内设置一升级备份区130,用以实现第一应用程序区110中的当前版本的应用程序向第二应用程序区120中的转移,而无需占用集成电路中存储器的其他分区的空间。
[0060] 或者,第一应用程序区110和第二应用程序区120为同一程序存储芯片中的不同分区,升级备份区130为区分于该程序存储芯片的另一程序存储芯片中的一分区。
[0061] 在其他实施方式中,还可将第一应用程序区110、第二应用程序区 120以及第三应用程序区130均设置在各不相同的程序存储芯片中,在此不限定。
[0062] 在一些实施例中,图5示出了本公开实施例提供的又一种集成电路的分区结构示意图。参照图5,升级备份区130还可设置在集成电路中除程序存储芯片之外的存储芯片内。
[0063] 具体地,集成电路中的该存储器内,除设置程序存储芯片之外,还可设置其他具有存储功能的区域,升级备份区130还可设置在其他具有存储功能的区域内,从而可不占用程序存储芯片的空间。
[0064] 或者,集成电路还可包括其他存储器,为了不占用该存储器的内部存储空间,升级备份区还可设置在除该存储器之外的其他存储器内,在此不限定。
[0065] 在其他实施方式中,为了不占用集成电路的内部存储空间,升级备份区130还可设置在独立于该集成电路之外的其他具有存储功能的区域内,在此不限定。
[0066] 其中,程序存储芯片以及除程序存储芯片之外的其他芯片均可采用本领域技术人员可知的任一种具有存储功能的芯片实现,在此不赘述也不限定。
[0067] 在一些实施例中,继续参照图5,程序存储芯片以扇区(sector) 为最小存储单位构成整个程序存储芯片;第一应用程序区110和第二应用程序区120包括相同数目的扇区。可选地,升级引导区100也占用一定数目的扇区。
[0068] 如此设置,可使第一应用程序区110和第二应用程序区120是对称的,即二者内部均包含相同数目的扇区,便于实现应用程序对应的数据的转移和交换。
[0069] 具体地,图5中示出了第一应用程序区110和第二应用程序区120 均包括(m+1)个扇区,分别以扇区0、扇区1、扇区2、……扇区m 示出。其中,m的取值,即扇区的具体数目可基于第一应用程序区110 和第二应用程序区120的需求设置,在此对其具体数值不做限定。
[0070] 可选地,各扇区的大小均相同,如此便于简化控制逻辑。
[0071] 在其他实施方式中,各扇区的大小还可设置为不同,对应地;第一应用程序区110和第二应用程序区120包括的扇区数目可不同,但其整体对应的空间大小相同,如此也可实现应用程序对应的数据的转移和交换,只是控制逻辑相对略复杂,在此不赘述。
[0072] 在一些实施例中,升级备份区130的空间大小等于或大于一个扇区的空间大小。
[0073] 其中,当各扇区的大小均相同,且升级备份区130的空间大小等于一个扇区的空间大小时,对应实现升级的控制逻辑较简单。
[0074] 当各扇区的大小不同时,升级备份区130的空间可等于空间最大的扇区的大小,且大于空间较小的扇区的大小,此时仍可实现数据更新和备份,进一步实现低版本的应用程序的恢复,只是控制逻辑相对略复杂,在此不赘述。
[0075] 在一些实施例中,升级备份区130的空间大小等于n个扇区的空间大小,n为正整数。
[0076] 其中,当各扇区的大小均相同,且升级备份区130的空间大小等于n个扇区的空间大小时,可一次性将n个扇区中对应存储的应用程序的数据进行转移,从而在确保控制逻辑较简单的同时,可提高数据转移效率,节省数据转移时间。
[0077] 可选地,结合上文,(m+1)为n的整数倍,如此可进一步简化控制逻辑。
[0078] 在一些实施例中,升级备份区130设置为依次接收第一应用程序区110中各扇区的数据,并在将第二应用程序区120中对应扇区的数据依次转移至第一应用程序区110中的对应扇区之后,将其接收的数据依次拷贝至第二应用程序区120中对应空置的扇区中的区域。
[0079] 即,升级备份区130可用于依次将第一应用程序区110中各扇区的数据转移至第二应用程序区120中,且单次转移的数据为至少一个扇区内的数据。即,结合升级备份区130与单个扇区的相对大小,单次转移的数据可为一个扇区、两个扇区或更多个扇区的数据,在此不限定,基于集成电路的需求设置。
[0080] 具体地,结合图5,数据更新和备份过程中,将第一应用程序区 110中扇区0的数据转移至升级备份区130,将第二应用程序区120中扇区0的数据转移至第一应用程序区110中扇区0,将升级备份区130 中的数据转移至第二应用程序区120中扇区0;之后,将第一应用程序区110中扇区1的数据转移至升级备份区130,将第二应用程序区120 中扇区1的数据转移至第一应用程序区110中扇区1,将升级备份区 130中的数据转移至第二应用程序区120中扇区1;各扇区依次进行数据转移,直至扇区m,即将第一应用程序区110中扇区m的数据转移至升级备份区130,将第二应用程序区120中扇区m的数据转移至第一应用程序区110中扇区m,将升级备份区130中的数据转移至第二应用程序区120中扇区m。
[0081] 如此,完成将第二应用程序区120中存储的更新版本的应用程序移动至第一应用程序区110中,也将第一应用程序区110中的当前版本的应用程序移动至第二引用程序区120中,从而在完成第一应用程序区110中的数据更新的同时,在第二应用程序区120中备份当前版本的应用程序。如此,在升级失败的情况下,可利用第二应用程序区 120中的当前版本的应用程序覆盖第一应用程序区110中的更新版本的应用程序,实现数据恢复,提高安全可靠性。
[0082] 在一些实施例中,图6示出了本公开实施例提供的另一种集成电路的分区结构示意图。参照图6,该集成电路中,存储器02还包括带电可擦可编程只读存储区(ElectricallyErasable Programmable ReadOnly Memory,EEPROM),带电可擦可编程只读存储区包括一个信息存储区140,信息存储区140为存储下述信息的区域:更新标志、回滚标志、备份完成标志、第一应用程序区110的起始扇区、第二应用程序区120 的起始扇区、当前操作的扇区编号、当前操作的第一应用程序区110 的扇区的校验值、当前操作的第二应用程序区120的扇区的校验值;可选的,当前操作的扇区编号、当前操作的第一应用程序区110的扇区的校验值以及当前操作的第二应用程序区120的扇区的校验值设置为在预设时长范围内同步更新。
[0083] 其中,更新标志用于表示是否在数据更新和备份过程中,回滚标志用于表示是否在数据回滚过程中,备份完成标志用于表示是否备份完成。校验值用来检测或校验数据传输或者保存后可能出现的错误。
[0084] 示例性地,校验值可为循环冗余校验(Cyclic Redundancy Check, CRC)得到,或采用其他校验方式得到。
[0085] 示例性地,CRC可采用CCITT16算法,第一应用程序区110和第二应用程序区120以单个扇区为数据交换的最小单位,其各自一个扇区分别对应2字节(Byte),则两个扇区的值对应4Byte,再加上当前操作的扇区编号对应的1Byte,则共5Byte一次性更新,以实现扇区之间的数据交换。
[0086] 需说明的时,扇区编号的长度需根据实际采用的芯片而设置,例如芯片的flash较小sector数量小于255,可使用1字节表示。在其他实施方式中,还可采用其他长度表示扇区编号的长度,在此不赘述也不限定。
[0087] 如此,可利用上述信息辅助实现数据更新和备份,以及实现数据回滚。其中,数据备份是保证在更新第一应用程序区110时,将第一应用程序区110原有的数据,即当前版本的应用程序保存下来,以便后续必要时能够完成回滚,即实现数据恢复。
[0088] 示例性地,数据更新和备份方法可为:包括该集成电路的控制器复位,首先进入升级引导区100,检查更新标志;如果更新标志存在,则进行第一应用程序区110和第二应用程序区120的数据交换,即AB 交换,实现数据更新与备份。
[0089] 具体地,数据交换策略可为:从EEPROM中记录的第一应用程序区110和第二应用程序区120的第一个扇区(例如图5和图6中的扇区0)开始交换;具体流程可包括:交换步骤1、将第一应用程序区110 的扇区数据拷贝到升级备份区130;交换步骤2、将第二应用程序区120 的对应扇区数据拷贝到第一应用程序区110的对应扇区;交换步骤3、将升级备份区130中的数据拷贝到第二应用程序区120的对应扇区。
[0090] 可选地,在拷贝之前需先分别计算当前扇区编号的对应的第一应用程序区110与第二应用程序区120中扇区的CRC值,并存到集成电路内部的EEPROM中,一旦有拷贝到中间异常断电的情况都会造成 CRC错误,正常的数据交换过程如图8所示,后文中详述。
[0091] 其中,数据回滚过程与数据更新和备份过程类似,只是不必备份。具体地,因为回滚表示高版本的应用程序存在问题,需要回到低版本的应用程序,因此对于有问题的应用程序没必要备份。
[0092] 在此之前的关键问题是:如何判断是否需要回滚,一旦确定回滚立刻设置“回滚标志”。
[0093] 具体地,判断需要回滚的方式可为:如果系统有问题,比如RAM 越界、操作地址错误、死循环等,都会导致复位。基于此,升级引导区100可以通过监控一定时间内复位的次数来判断系统是否存在问题,升级引导区100和程序区(包括第一应用程序区110以及第二应用程序区120)需要互相配合,在程序区中需要向特定RAM地址写入心跳次数,此RAM地址通过预编译指令设置为无需初始化,这样升级引导区100也可以访问该RAM地址。
[0094] 例如,程序区以10ms为周期写入,写入一定的次数,但存在问题时,写入的次数超出次数阈值,即表明复位次数较多,新文件存在错误,需要回滚;否则不需要回滚。具体次数阈值可基于特定应用程序对应的程序区的经验值设置,可由应用程序的供应商提供,例如可为5 次/秒,或设置为其他数值,在此不限定。
[0095] 基于此,在升级引导区100中需要判断写入次数是否在合理范围内,例如在次数阈值范围内,一旦超出合理范围,即可设置回滚标志。
[0096] 进一步地,在升级引导区100中判断“回滚标志”,须在“回滚标志”与“备份完成标志”同时有效的情况下才能执行数据回滚。
[0097] 其中,数据回滚过程为利用第二应用程序区120中的低版本的应用程序替换第一应用程序区110中的存在错误的高版本的应用程序。
[0098] 例如可包括:
[0099] 数据回滚之前,需先记录当前操作的扇区编号到EEPROM,然后从第一个扇区开始直接从第二应用程序区120将低版本的应用程序对应的数据拷贝到第一应用程序区110,该过程无需经过升级备份区130。一旦拷贝过程中异常断电,则重新上电后从断电扇区处开始拷贝,拷贝完成后清除更新标志、回滚标志、备份完成标志,然后进入数据更新和备份状态。
[0100] 在一些实施例中,图7示出了本公开实施例提供的另一种集成电路的分区结构示意图。参照图7,集成电路01中,存储器02还包括异常断电检测模块150,异常断电检测模块150与信息存储区140通信连接;异常断电检测模块150为检测校验值写入带电可擦可编程只读存储区过程中以及数据移动过程中是否断电的模块;其中,校验值包括上述当前操作的第一应用程序区110的扇区的校验值以及当前操作的第二应用程序区120的扇区的校验值。
[0101] 其中,异常断电检测模块150可采用内置于存储器02中的一段程序实现,可采用本领域技术人员可知的任一种具有该功能的程序段,在此不赘述也不限定。
[0102] 如此,可利用异常断电检测模块150实现异常检测,以便后续可对应于数据异常,执行对应的异常处理,后文中结合图9详述。
[0103] 其中,针对在将CRC写入EEPROM的时候异常断电,在升级引导区100中增加低压检测功能,一旦检测到低于正常写入EEPROM的最低电压(对应于前面提到的一共5个字节数据),立即停止写入,这样可避免写入EEPROM写到一半的时候断电而导致的误判拷贝的真实进度。
[0104] 示例性地,最低电压的电压阈值可选为3.0V‑4.0V,可基于集成电路的不同而设置为对应的电压阈值,在此不限定。
[0105] 其中,针对在拷贝过程中发生异常断电情况,由于拷贝进度已经记录到EEPROM,所以升级引导区100能够继续进行拷贝,直到拷贝完成,完成之后,升级引导区100将更新标志清除掉,同时设置备份完成标志,然后跳入新的系统运行。至此,数据在第一应用程序区110 和第二应用程序区120之间完成了交换,也就是完成了地版本备份与高版本更新。
[0106] 需要注意的是,在计算CRC之后可立即比较一下第一应用程序区 110和第二应用程序区120的CRC,若二者的CRC值相同,表示扇区的值完全一样,就没必要拷贝了。
[0107] 下面结合图8和图9对数据更新和备份过程中,正常的交换过程及其中的异常断电处理过程进行示例性说明。
[0108] 示例性地,参见图8,该正常的交换过程可包括:
[0109] S201、上电,且“更新标志”有效。
[0110] S202、判断交换是否异常。
[0111] 若是(Y),则执行S30;否(N)则,执行S203。
[0112] S30、异常处理。
[0113] 即执行图9中示出的流程。
[0114] S203、初始化当前扇区编号。
[0115] S204、分别计算第一应用程序区和第二应用程序区当前扇区的校验值。
[0116] S205、存储当前扇区编号、第一应用程序区当前扇区的校验值 APP‑A‑CRC以及第二应用程序区当前扇区的校验值APP‑B‑CRC。
[0117] S206、判断是否满足APP‑A‑CRC==APP‑B‑CRC。
[0118] 若是(Y),则当前扇区数据交换完成,将继续检测下一扇区的数据交换情况,即执行“当前扇区编号++”,并返回S204;否(N)则,执行S207。
[0119] S207、执行第一应用程序区和第二应用程序区当前扇区交换逻辑。
[0120] S208、判断是否所有扇区交换完成。
[0121] 若是(Y),则执行S209;否(N)则,返回继续检测下一扇区的数据交换情况,即执行“当前扇区编号++”,并返回S204。
[0122] S209、清除“更新标志”
[0123] 设置“备份完成标志”。
[0124] S210、进入更新版本的应用程序。
[0125] S211、结束。
[0126] 至此,完成数据更新和备份过程。
[0127] 示例性地,参见图9,该异常断电处理过程可包括:
[0128] S30、异常处理。
[0129] S301、读取:
[0130] 当前扇区编号
[0131] 第一应用程序区的校验值A‑CRC
[0132] 第二应用程序区的校验值B‑CRC。
[0133] S302、判断是否满足A‑CRC==B‑CRC。
[0134] 若是(Y),则当前扇区数据交换完成,将继续下一扇区的数据交换,即执行S3021、“当前扇区编号++”,后续按正常情况处理,即S20。否(N)则,进行进一步检测,即执行S303。
[0135] S303、分别计算第一应用程序区和第二应用程序区当前扇区的校验值:APP‑A‑CRC和APP‑B‑CRC,以及计算升级备份区的校验值: APP‑X‑CRC。
[0136] S304、判断是否满足A‑CRC==APP‑A‑CRC。
[0137] 若是(Y),则表明尚未开始数据交换,则执行该扇区的数据交换,即S3041;否(N)则,进行进一步判断,即执行S305。
[0138] S3041、执行第一应用程序区和第二应用程序区当前扇区交换逻辑。
[0139] 至此,该扇区交换完成,后续可继续下一扇区的数据交换,即执行S3021和S20。
[0140] S305、判断是否满足B‑CRC==APP‑A‑CRC。
[0141] 若是(Y),则表明交换步骤2已经执行完成,进一步判断交换步骤3是否完成,即执行S306。否(N)则,表明交换步骤2未完成,即执行交换步骤2和交换步骤3,即S3051。
[0142] S3051、执行第二应用程序区向第一应用程序区转移数据,以及升级备份区向第二应用程序区的数据转移。
[0143] 至此,该扇区交换完成,后续可继续下一扇区的数据交换,即执行S3021和S20。
[0144] S306、判断是否满足A‑CRC==APP‑B‑CRC。
[0145] 若是(Y),则表明交换步骤3已经执行完成,后续可继续下一扇区的数据交换,即执行S3021和S20。否(N)则,表明交换步骤3未完成,后续执行交换步骤3,即S3061。
[0146] S3061、执行升级备份区向第二应用程序区的数据转移。
[0147] 至此,该扇区交换完成,后续可继续下一扇区的数据交换,即执行S3021和S20。
[0148] 至此,完成异常检测和处理,并回到正常数据交换过程。
[0149] 本公开实施例提供的集成电路,可应用于新能源车OTA场景下,实现单个CAN节点自身的AB升级和备份回滚,从而缩短了用户可感知的升级时间;同时,包括该集成电路的车载控制器在升级过程中,低版本的应用程序能够在第二应用程序区120中备份,从而可实现在升级失败的情况下,控制器能够自行恢复为低版本的应用程序,从而可提升安全和可靠性。
[0150] 在上述实施方式的基础上,本公开实施例还提出一种车载控制器,包括上述任一种集成电路,可实现对应的效果。
[0151] 示例性地,该车载控制器可应用于车机系统、照明控制系统、车门控制系统、车窗控制系统、雨刷控制系统、车辆后备箱门开关控制系统、驱动系统、驾舱温控系统、娱乐影音系统或其他智能控制系统中,在此不限定。
[0152] 在其他实施方式中,上述任一种集成电路还可应用于其他场景下,适用于低端单片机模拟AB升级,以及实现原始数据备份和数据回滚,从而提升安全可靠性,具体场景在此不限定。
[0153] 在上述实施方式的基础上,本公开实施例还提出一种车辆,包括上述任一种集成电路,或者包括上述任一种车载控制器,可实现对应的效果,可参照上文理解,在此不赘述。
[0154] 需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0155] 以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。