1.本发明要求于2020年3月10日提交的法国申请2002378的优先权,该申请的内容(文本、附图和权利要求)通过引用并入本文。
2.本发明涉及由诊断工具远程实施的对于机动车辆的一个或多个计算机的软件更新,所述软件更新还称作ota(即over the air)更新。
背景技术:3.在本说明书的下文中,当待下载的文件包含指令或软件的可执行代码时,还称之为软件的下载。
4.车载电子功能的日益复杂引起装配在机动车辆上的电子盒(或计算机)的增多。
5.为了限制由此产生的多样性,已决定在可能时把硬件的多样性转移到软件上并实施这些计算机的下载。该操作借助于连接到车辆的诊断插座上的非车载工具来实施,并且能够在一个或多个计算机的存储器中编程软件,所述软件确保了车辆的通过考虑到该车辆所固有的特征(机动性、可选项)而产生的合适运行。
6.在所述工具与所述一个或多个计算机之间的通信通常使用现有技术所已知的can 500kbps技术或目前广泛应用在汽车世界中的ethernet100mbits/s技术,以便转移待编程的数据。
7.在现有技术中,例如,如文件fr2719924a中所描述,已知一些用于把文件下载到机动车辆的车载计算机中的下载方法和下载系统。该文件详细说明了在车辆的组装期间或在制造商的售后网络中在通过文件交换修正服务时所使用的程序的不同的相继步骤。
8.然而,为了使车辆对于其客户来说总是更加安全的,汽车制造商考虑可直接在最终客户处实施一些更新,就如在例如pc或智能手机的消费领域中已经存在的现象那样。事实上,存在于车辆中的连接部件已经能够与外部交换大量的信息(交通信息、导航信息、维修所需的数据或保险公司所需的数据等),这些交换正在增长。这由此导致增加的客户数据保护需求以及这些车辆的考虑到网络攻击的可能性和所遭受的道路安全风险而增加的重大保护需求。事实上,当检测到该类型的攻击并且检测到能够由此删除或降低所述风险的修正性“补丁(patch)”(软件或软件模块)的可用性时,可安装该修正的速度无疑是一重要方面。在该情况下,相较于有组织地把车辆召回到经授权的或独立的网点维修站中,ota更新可能够节省大量时间。
9.不过,为了可直接在最终客户处实施该类型的操作,应考虑到会增加该操作的复杂性的多个方面。
10.在一些情况下,对于汽车的计算机的软件的更新可能导致所述汽车不可用,又或引起对于车辆乘员和车辆环境的严重后果。这就是为什么,一些计算机ota更新(特别是与车辆动力性相关联的计算机ota更新)需要称作回滚“rollback”(或向后返回,又或返回到之前的状态)的机制,该机制能够使得在检测到在所述车辆的一个或多个计算机的软件的
更新期间发生问题的情况下返回到先前软件配置。
11.该类型的问题可例如发生在目的地计算机例如尝试在损坏的存储器单元上写入值的情况下、或在例如由于电磁场导致的传输错误的情况下、又或在其它情况下。
12.这种类型的问题通常由目的地计算机(例如借助于在错误接收的情况下的crc(即cyclic redoundancy check)检验)检测出。在该情况下,信息传输到主计算机以要求执行回滚进程。
13.例如由文件us20190057214描述了一种更新控制装置,所述更新控制装置包括第一通信单元、第二通信单元和控制单元。所述第一通信单元配置用于通过逐个区块地使用数据库上的补丁数据来在更新终端中接收每个软件区块的补丁数据以及每个软件认证区块所需的第一认证数据。
14.所述控制单元配置用于要求所述终端在接收到指示第m区块(m》1)认证失败的更新结果的情况下通过使用补丁数据执行回滚以从第一区块至第m-1区块地复原。
15.该解决方案所具有的缺点在于,需在回滚程序过程中生成软件区块和验证所述软件区块的完整性。这增加了所述回滚程序的失败风险。
技术实现要素:16.本发明的目的在于提供一种解决方案以特别是在更新经辨识为是损坏的时使车辆计算机迅速地恢复在软件更新之前的状态。
17.本发明特别是涉及一种用于安装车辆的车载计算机的软件的更新的安装方法,所述车载计算机包括存储器,所述存储器包括:第一区域(z1);第二区域(z2);在第一预先编译期间生成且存储在所述第一区域(z1)中的当前软件,所述当前软件包括在所述第一预先编译期间确定的物理地址,所述物理地址指出所述第一区域(z1)的部分;以及向所述计算机指示执行什么指令的指针,所述指针指示所述第一存储器区域(z1),其特征在于,所述安装方法包括以下步骤:
[0018]-下载(311)在第二预先编译期间生成的更新软件,所述更新软件包括在所述第二预先编译期间确定的物理地址,所述物理地址指出所述第二存储器区域(z2)的部分,
[0019]-发射(312)控制在所述第二区域(z2)中写入所述更新的请求,
[0020]-发射(314)控制激活经更新软件的请求,所述激活包括修改所述指针以便使得所述指针指示所述第二存储器区域(z2)。
[0021]
本发明所具有的优点在于,使用布置有不太先进的微控制器的计算机运行。事实上,本发明不需要使得负责管理存储器的微控制器布置有地址转移机制。
[0022]
本发明所具有的优点在于,当对于经接收数据的完整性测试以失败告终时,能够无延迟地打断安装程序,并且能够继续使用第一存储器中未经修改的当前软件。
[0023]
而且,(例如在用户注意到故障之后的)回滚步骤可通过再次修改所述指针以返回到一直存在于所述第一存储器区域中的软件来轻松实施。
[0024]
本发明因此提供了时间的节省以及经加强的安全性,因为本发明消除了在现有技术的解决方案中在回滚阶段过程中不可避免地与所述软件区块的相继生成操作有关的额外的数据损坏风险。
[0025]
有利地,根据本发明的用于更新计算机的软件的更新方法还包括:用于发射控制
检验所述第二区域中所述经更新软件的完整性的请求的发射步骤,用于仅在所述完整性经检验到的情况下发射控制激活所述经更新软件的请求的发射步骤。
[0026]
有利地,根据本发明的用于更新计算机的软件的更新方法还包括用于返回到在所述更新之前的状态的返回步骤,返回到之前的状态的所述返回包括修改所述指针以便使得所述指针指示所述第一存储器区域。
[0027]
有利地,根据本发明的用于更新计算机的软件的更新方法还包括:在检测到错误之后,用于发射控制停止安装所述更新的请求的发射步骤。
[0028]
有利地,停止安装所述更新的所述停止包括发射用于所述驾驶员的消息以向所述驾驶员通知所述安装的停止。
[0029]
本发明还涉及一种电脑程序产品,所述电脑程序产品包括指令,所述指令适用于在所述电脑程序由至少一个处理器执行时执行根据本发明的方法的步骤。
[0030]
本发明还涉及一种用于更新计算机的软件的更新装置,所述装置包括与至少一个处理器相关联的存储器,所述至少一个处理器配置用于实施根据本发明的方法的步骤。
[0031]
本发明还涉及一种车辆,其特征在于,所述车辆包括根据本发明的用于更新计算机的软件的更新装置。
附图说明
[0032]
通过阅读本发明下文中的非限制性实施例的详细说明和附图,本发明的其它特征和优点将更加清楚,在所述附图中:
[0033]-图1示意性地示出了根据本发明特别实施例的系统;
[0034]-图2示意性地示出了根据本发明特别实施例的计算机;
[0035]-图3示意性地示出了根据本发明特别实施例的更新方法。
[0036]-图4示出了计算机存储器的在更新过程中的相继状态的示例。
具体实施方式
[0037]
参考图1,根据本发明的系统包括车辆101,该车辆与远程更新服务器102连接。
[0038]
车辆101包括多个计算机ecu1、ecu2、ecu3,所述多个计算机的车载通信单元借助于无线连接与服务器102通信。通常,所述无线连接或联接是无线电波式的连接(3g、4g等)。
[0039]
计算机ecu1、ecu2、ecu3彼此之间借助于数据总线104(例如can类型的数据总线)通信。
[0040]
非车载服务器102例如是包括至少一个存储器和处理器的一般计算机。
[0041]
车辆101和非车载服务器102经由广域网105(或wan,即“wide area network”)通信,所述广域网例如是固定通信网络103(例如车辆通过无线联接(3g、4g等)所连接至的internet网络)。
[0042]
允许计算机ecu2至ecu3的更新的计算机ecu1(还称作更新管理计算机(又或fota(即firmware over-the-air)主机))为此布置有能够把接收到的数据文件转移到目的地计算机ecu2、ecu3所期待的帧中的机制以安装软件。注意到,在车辆中起到fota主机作用的计算机可能是或不是与布置有无线通信功能的计算机相同的计算机。
[0043]
操作员可经由终端107实施检验并且向车辆101远程传输指令。这些指令通过波道
传输至车辆101,所述波道可以是4g、wifi或未来的任何其它无线通信技术。
[0044]
计算机ecu1、ecu2、ecu3可在维修站中更新。在维修站中的软件更新响应于特定程序(图1的情况1),在该特定程序过程中,操作员需对经委托给他的车辆负责。鉴于此,该操作员在通过经接通在车辆101的专用插座108上的工具106发起该操作之前把所述车辆安置在“安全可靠”的环境中。然后,一旦该操作结束,该操作员执行一些检查以便确保该操作良好运行。在检测到问题的情况下,在所述程序的开展期间或在所述更新之后,技术员在把车辆归还给客户之前采取更正异常所需的措施(新尝试、更换零件等)。因此,维修员是安全链中的重要环节,但还负责确保所实施的操作的质量。
[0045]
在客户处实施ota更新时(图1的情况2),这一切不可能,并因此应在每个计算机中添加使得能够在发生问题的情况下返回到先前版本的机制。
[0046]
为了实施对于目标计算机的更新,所述fota主机与所述目标计算机经由所述车辆中可用的通信网络(例如can、ethernet或其它)通信。为此,所述fota主机使用专用通信协议,例如,uds协议(iso14229标准)通常经运用于实施对于机动车辆中车载计算机的诊断或软件下载。
[0047]
参考图2,根据本发明的计算机200包括配备有flash存储器201的微控制器。flash存储器201包括:
[0048]-第一区域z1,也称作执行区域,该区域用于执行经下载软件,并且具有至少等于给定尺寸n的尺寸,
[0049]-第二区域z2,也称作备份区域,该区域具有至少等于所述给定尺寸n的尺寸,并且用作备份存储器,所述备份存储器能够使得在安装期间发生问题的情况下返回到所述软件的之前的版本,
[0050]
flash存储器201的尺寸因此是所述给定尺寸n的至少两倍。
[0051]
z2可以是与第一区域z1分开的存储器模块,或者构成同一存储器模块的一部分同时作为与第一区域z1邻接的区域。
[0052]
在图2的示例中,地址范围00000h-0ffffh(h表示十六进制)和10000h-1ffffh分别对应于第一区域z1然后第二区域z2。用于挑选待执行软件的存储器区域的挑选原则通过在特别地址处编程指令来实施,该特别地址一般称作复位向量(vecteur de reset)指针,该复位向量指针通常位于在flash存储器的起始处(地址00000h),所述指令的执行将引发朝向对应于执行区域的存储器区域z1或z2的跳转。因此,所述起动将始终发生在包含所述复位向量的存储器区域中。所述执行的后续将从正确的存储器区域起发生,因为所述微管控器读取待执行指令所开始于的地址将或是与区域z1有关,又或是与区域z2又关,这些地址的值在所述软件的编译时刻上产生。
[0053]
在本说明书的下文中,可见,对于新安装的更新的激活因此简单地包括通过给所述复位向量分配用于朝向包含经更新软件(版本n+1)的区域跳转的跳转地址来编程所述复位向量。同样地,回滚通过把包含之前的版本(版本n)的存储器区域的基地址录入到所述复位向量中来实施。
[0054]
在图4的示例中,待更新计算机200或目标计算机在其第一存储器区域z1中布置有软件(版本n)。
[0055]
有利地,在目标计算机更新之前,所述fota主机通过使用对于在再编程会话中进
行输入的请求来把计算机200安置成处于专用于编程的专用状态(其中,功用经去激活)。目标计算机200仅在满足安全条件(例如:车辆停止、传动链经去激活等)时才接受执行该请求。
[0056]
在再编程会话中,所述fota主机与所述目标计算机200的引导(boost)软件直接通信。根据由所述fota主机发送的请求,所述计算机的引导软件可在自身所布置有的两个存储器(执行存储器me或备份存储器ms)中的一个上执行不同的操作(写入、复制、完整性检查)。图3描述了待由所述fota主机实施的用于把新软件安装到所述目标计算机200中的一系列动作。
[0057]
在执行根据本发明的更新方法之前,目标计算机200处于在称作初始状态的第一状态501,其中:第一区域z1包括当前软件(版本n)。
[0058]
在第一步骤311中,所述fota主机下载经编译的经更新软件以安装在所述第二存储器区域中。所述编译的效果在于,在构成待安装更新的图像中含有存储器地址,所述存储器地址随所述软件用于从第一存储带起执行或从第二存储带起执行而不同。
[0059]
根据本发明,地址的转移因此非动态地实施(换句话说,在由微管控器执行软件期间),但在所述软件的创建(编译)时刻上动态地实施。由此,为第一存储带编译软件(例如版本n),并且,为第二存储带编译更新(n+1)。在图2的示例中,经编译用于所述第二存储器区域的软件所包括的地址在10000h与1ffffh之间。
[0060]
经编译用于所述第一区域的软件所包括的地址在0000h与0ffffh之间。
[0061]
可选地,所述fota主机发送请求以要求所述目标计算机200擦除第二区域z2。
[0062]
接下来,所述fota主机向所述目标计算机发送312所述更新并且控制在第二区域z2中写入所述更新。
[0063]
接下来,所述fota主机发送313请求以要求所述目标计算机检查经复制到第二区域z2中的数据的完整性。该检验可借助于crc(即cyclic redoundancy check)或现有技术所已知的任何其它方式(例如:借助于散列函数对于数据内容的“散列”的计算以及对于结果与由所述fota主机预先传输的参考值的比较)实施。当所述存储器由多个数据区块组成时,每个区块布置有自身所固有的完整性检查机制(其建立在相同的方式或不同的方式的基础上)。
[0064]
在该步骤结束后,目标计算机200处于在第二状态502,其中:第一区域z1包括所述当前软件(版本n),并且,第二区域z2包括所述经更新软件(版本n+1)。
[0065]
所述fota主机由此控制激活314所述经更新软件(版本n+1)。
[0066]
注意到,无论是哪个安装阶段(更具体地,操作在于编程所述更新),当检测到错误(flash存储器的编程错误,在多次尝试后的否定响应)时,所述fota主机中断315所述安装,而不激活第二区域z2的软件。通过继续执行经包含在第一区域z1中的软件,对于所述车辆的使用由此仍然是可能的。由此显示错误信息以使客户注意到所述安装的失败,该客户由此需把自身的车辆交到维修站中。
[0067]
当在成功安装结束后证实了由客户检测到车辆异常运行时,通过执行回滚,返回到之前的版本(版本n)成为可能。在具有双资料库的存储器的情况下,该回滚包括简单地重新激活执行仍然存在于第一区域(z1)中的软件。无需任何再复制,所述回滚操作此处包括把执行指针重新分配到所述第一区域(z1),使得在所述计算机的每次上电(车辆起动)时将
执行的软件是所述第一区域(z1)的软件。
[0068]
根据现有技术所已知的机制,激活步骤314或任选回滚的执行通过把执行地址简单地重新分配到包含新软件(激活)的存储器区域或包含旧版本的存储器区域(其用作备份(回滚)存储器)来执行。
[0069]
可注意到,对于“执行存储器”(或执行区域)以及“备份存储器”(或备份区域)的分配因此不固定,因为给定的资料库在每次更新时交替地变成执行存储器然后备份存储器。事实上,当成功的更新从该更新应当确保的服务角度来看被证实时(在一定时间期间不存在由客户触发的回滚),所述备份存储器变得可用于接受任选新更新,并且,该备份存储器由此是执行存储器,该执行存储器将在新更新的安装期间变成备份存储器。在每次成功更新时,对于执行存储器和回滚存储器的分配将因此颠倒。
[0070]
还可注意到,为了简单起见,图3上仅示出了与在完整性测试过程中发生的失败有关的输出情况。然而,在每个步骤过程中,特别是在所述存储器的擦除过程中和在从所述fota主机向所述存储器中转移-写入数据的阶段过程中,安装程序的良好开展得到了良好的监管。当在多次(例如3次)尝试之后发生错误时,所述安装程序结束于以所述更新的失败告终。