无声车载软件更新转让专利

申请号 : CN201510087332.2

文献号 : CN104866336B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 特里西亚·托博斯基查德·伊沃特·艾斯林克迈克尔·雷蒙德·威斯查约翰·托马斯·埃利斯

申请人 : 福特全球技术公司

摘要 :

一种无声车载软件更新。一种计算机实现的方法包括:通过车辆从云服务器接收清单,所述清单指示根据通过车辆产生的询问器日志而确定的软件更新的网络位置;将从网络位置检索的更新二进制数据安装到多个存储安装位置的失活安装位置;当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置的先前被设置为激活分区的另一安装位置。

权利要求 :

1.一种无声车载软件更新方法,包括:

通过车辆从服务器接收数据标识符列表,其中,数据标识符列表定义将被包括在询问器日志中的安装在车辆上的至少一个软件模块的信息以及所述信息位于激活软件安装位置中的位置;

基于数据标识符列表产生询问器日志;

将询问器日志发送到服务器;

从服务器接收清单作为响应,其中,所述清单指示根据询问器日志确定的软件更新的网络位置;

将从所述网络位置检索的更新二进制数据安装到失活软件安装位置;

当车辆重启时,将失活软件安装位置设置为新的激活安装位置,以替代激活软件安装位置。

2.根据权利要求1所述的方法,其中,激活软件安装位置包括存储分区和分区内的文件集中的一个。

3.根据权利要求1所述的方法,还包括产生询问器日志以包括以下项中的至少一项:(i)安装在车辆上的至少一个软件模块的当前状态信息;和(ii)安装在车辆上的至少一个软件模块的诊断故障码。

4.根据权利要求3所述的方法,还包括:当确定(i)车辆已完成预定数量的点火周期和(ii)自先前的询问器日志产生起已经过了预定时间段中的至少一项时,产生询问器日志。

5.根据权利要求1所述的方法,还包括以下步骤中的至少一个:(i)在车辆的用户界面中提供当车辆重启时失活软件安装位置将变为激活软件安装位置的通知;(ii)在允许无声软件更新被执行之前,从车辆的用户界面接收选择的指示;(iii)在允许无声软件更新被执行之前,从与车辆通信的移动装置的用户界面接收选择的指示。

6.根据权利要求1所述的方法,还包括:

根据被执行到失活软件安装位置的软件更新被激活,来更新另一存储安装位置。

7.根据权利要求1所述的方法,其中,数据标识符列表作为包括在激活软件安装位置中的已下载的软件的安装位置的一部分被接收。

8.一种无声车载软件更新系统,所述系统包括:

车辆的至少一个硬件控制器,被配置为:

基于数据标识符列表产生询问器日志,其中,数据标识符列表定义将被包括在询问器日志中的安装在车辆上的至少一个软件模块的信息以及所述信息位于激活安装位置中的位置,并且数据标识符列表作为从服务器下载到车辆的软件的安装位置的一部分被接收;

将询问器日志发送到服务器;

从云服务器接收清单,所述清单指示根据询问器日志而确定的软件更新的网络位置;

将从所述网络位置检索的更新二进制数据安装到多个存储安装位置中的失活安装位置;

当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置中的先前被设置为激活安装位置的另一存储安装位置。

9.根据权利要求8所述的系统,其中,安装位置包括存储分区和分区内的文件集中的一个。

10.根据权利要求8所述的系统,其中,所述至少一个硬件控制器还被配置为产生询问器日志以包括以下项中的至少一项:(i)安装在车辆上的至少一个软件模块的当前状态信息;和(ii)安装在车辆上的至少一个软件模块的诊断故障码。

11.根据权利要求10所述的系统,其中,所述至少一个硬件控制器还被配置为:当确定(i)车辆已完成预定数量的点火周期和(ii)自先前的询问器日志产生起已经过了预定时间段中的至少一项时,产生询问器日志。

12.根据权利要求8所述的系统,其中,所述至少一个硬件控制器还被配置为执行以下处理中的至少一个:(i)在车辆的用户界面中提供当车辆重启时失活软件安装位置将变为激活软件安装位置的通知;(ii)在允许无声软件更新被执行之前,从车辆的用户界面接收选择的指示;(iii)在允许无声软件更新被执行之前,从与车辆通信的移动装置的用户界面接收选择的指示。

13.根据权利要求8所述的系统,其中,所述至少一个硬件控制器还被配置为:根据被执行到失活安装位置的软件更新被激活,来更新所述多个存储安装位置中的所述另一存储安装位置。

14.一种非暂时性计算可读存储介质,所述介质存储在被车辆的至少一个控制器执行时使所述至少一个控制器执行以下步骤的指令:通过车辆从云服务器接收数据标识符列表,其中,数据标识符列表定义将被包括在询问器日志中的安装在车辆上的至少一个软件模块的信息以及所述信息位于激活安装位置中的位置;

基于数据标识符列表产生询问器日志;

将询问器日志发送到服务器;

从云服务器接收清单,所述清单指示根据询问器日志而确定的软件更新的网络位置;

将从所述网络位置检索的更新二进制数据安装到多个存储安装位置中的失活安装位置;

当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置中的先前被设置为激活安装位置的另一存储安装位置。

15.根据权利要求14所述的非暂时性计算可读存储介质,其中,安装位置包括存储分区和分区内的文件集中的一个。

16.根据权利要求14所述的非暂时性计算可读存储介质,还存储在被执行时使所述至少一个控制器执行以下步骤的指令:基于数据标识符列表产生询问器日志以包括以下项中的至少一项:(i)安装在车辆上的至少一个软件模块的当前状态信息;和(ii)安装在车辆上的至少一个软件模块的诊断故障码。

17.根据权利要求16所述的非暂时性计算可读存储介质,还存储在被执行时使所述至少一个控制器执行以下步骤的指令:当确定(i)车辆已完成预定数量的点火周期和(ii)自先前的询问器日志产生起已经过了预定时间段中的至少一项时,产生询问器日志。

18.根据权利要求14所述的非暂时性计算可读存储介质,还存储在被执行时使所述至少一个控制器执行以下步骤中的至少一个的指令:(i)在车辆的用户界面中提供当车辆重启时失活软件安装位置将变为激活软件安装位置的通知;

(ii)在允许无声软件更新被执行之前,从车辆的用户界面接收选择的指示;

(iii)在允许无声软件更新被执行之前,从与车辆通信的移动装置的用户界面接收选择的指示。

19.根据权利要求14所述的非暂时性计算可读存储介质,还存储在被执行时使所述至少一个控制器执行以下步骤的指令:根据被执行到失活安装位置的软件更新被激活,来更新所述多个存储安装位置中的所述另一存储安装位置。

说明书 :

无声车载软件更新

技术领域

[0001] 示意性实施例总体上涉及一种用于定制的无线模块更新的方法和设备。

背景技术

[0002] 车辆软件系统正变得越来越复杂。现在道路上的许多车辆具有与其关联的多个软件模块。通过硬件和软件控制动力传动控制系统、资讯娱乐系统、导航系统以及若干其它的系统。考虑到这些系统的复杂属性以及软件与硬件组件的数量,经常需要对于车辆拥有者而言有用的更新。为了解决复杂性,可通过远程操作员协助软件更新。然而,这样的方法会需要车辆拥有者的注意,这可能导致车辆拥有者延迟车辆软件更新的执行。

发明内容

[0003] 在第一示意性实施例中,一种计算机实现的方法包括:通过车辆从云服务器接收清单,所述清单指示根据通过车辆产生的询问器日志而确定的软件更新的网络位置;将从所述网络位置检索的更新二进制数据安装到多个存储器安装位置中的失活安装位置;当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置的先前被设置为激活安装位置的另一安装位置。
[0004] 根据本发明的另一方面,一种计算机实现的方法包括:通过车辆从云服务器接收清单,所述清单指示根据通过车辆产生的询问器日志而确定的软件更新的网络位置;将从清单指示的网络位置检索的更新二进制数据安装到代表激活安装位置的失活安装位置;当车辆重启时,将失活安装位置设置为用于替代所述激活安装位置的新的激活安装位置。
[0005] 根据本发明的实施例,其中,安装位置包括存储分区和分区内的文件集之一。
[0006] 根据本发明的实施例,所述方法还包括:产生询问器日志以包括(i)安装在车辆上的至少一个软件模块的当前状态信息和(ii)安装在车辆上的至少一个软件模块的诊断故障码中的至少一个;将询问器日志发送到云服务器。
[0007] 根据本发明的实施例,所述方法还包括当确定(i)车辆已完成预定数量的点火周期和(ii)自先前的询问器日志产生起已经过了预定时间段中的至少一个时,产生询问器日志。
[0008] 根据本发明的实施例,其中,询问器日志基于数据标识符列表而被产生,其中,数据标识符列表定义在询问器日志中包括什么信息以及这样的信息位于多个车辆控制器中的哪个车辆控制器上,并且数据标识符列表通过车辆经由云服务器来接收。
[0009] 根据本发明的实施例,所述方法还包括以下步骤中的至少一个:(i)当车辆重启时在车辆的用户界面中提供软件将被更新的通知;(ii)在允许无声软件更新被执行之前,从车辆的用户界面接收选择(opt-in)的指示;(iii)在允许无声软件更新被执行之前,从与车辆通信的移动装置的用户界面接收选择的指示。
[0010] 根据本发明的实施例,所述方法还包括根据被执行到失活安装位置的软件更新被激活来更新所述多个存储安装位置的所述激活安装位置。
[0011] 在第二示意性实施例中,一种无声车载软件更新系统包括至少一个控制器,所述至少一个控制器被配置为:通过车辆从云服务器接收清单,所述清单指示根据由车辆产生的询问器日志而确定的软件更新的网络位置;将从所述网络位置检索的更新二进制数据安装到多个存储安装位置中的失活安装位置;当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置的先前被设置为激活安装位置的另一安装位置。
[0012] 在第三示意性实施例中,一种非暂时性计算可读存储介质,所述介质存储在被至少一个控制器执行时使所述至少一个控制器执行以下步骤的指令:通过车辆从云服务器接收清单,所述清单指示根据由车辆产生的询问器日志而确定的软件更新的网络位置;将从所述网络位置检索的更新二进制数据安装到多个存储安装位置中的失活安装位置;当车辆重启时,将失活安装位置设置为激活安装位置,以替代所述多个存储安装位置的先前被设置为激活安装位置的另一安装位置。
[0013] 根据本发明的实施例,其中,安装位置包括存储分区和分区内的文件集之一。
[0014] 根据本发明的实施例,所述非暂时性计算可读存储介质还存储在被执行时使所述至少一个控制器执行以下步骤的指令:产生询问器日志以包括(i)安装在车辆上的至少一个软件模块的当前状态信息和(ii)安装在车辆上的至少一个软件模块的诊断故障码中的至少一个;将询问器日志发送到云服务器。
[0015] 根据本发明的实施例,所述非暂时性计算可读存储介质还存储在被执行时使所述至少一个控制器执行以下步骤的指令:当确定(i)车辆已完成了预定数量的点火周期和(ii)自先前的询问器日志产生起已经过了预定时间段中的至少一个时,产生询问器日志。
[0016] 根据本发明的实施例,所述非暂时性计算可读存储介质还存储在被执行时使所述至少一个控制器执行以下步骤中的至少一个的指令:(i)当车辆重启时在车辆的用户界面中提供软件将被更新的通知;(ii)在允许无声软件更新被执行之前,从车辆的用户界面接收选择的指示;(iii)在允许无声软件更新被执行之前,从与车辆通信的移动装置的用户界面接收选择的指示。
[0017] 根据本发明的实施例,所述非暂时性计算可读存储介质还存储在被执行时使所述至少一个控制器执行以下步骤的指令:根据被执行到失活安装位置的软件更新被激活来更新所述多个存储安装位置的所述另一安装位置。

附图说明

[0018] 图1示出用于车辆的基于车辆的计算系统的示例框式拓扑图;
[0019] 图2A至图2D示出用于无声模块软件更新的示意性系统;
[0020] 图3示出用于更新车辆软件的示例性处理。

具体实施方式

[0021] 根据需要,在此公开本发明的详细实施例;然而,将理解的是,所公开的实施例仅是本发明的示例,本发明可以以各种替代形式实现。附图无需按比例绘制;可夸大或最小化一些特征以示出特定组件的细节。因此,在此公开的具体结构和功能细节不应该被解释为限制,而仅仅是教导本领域技术人员以各种方式利用本发明的代表性基础。
[0022] 系统可被配置为执行软件模块的无声无线更新。所述系统可将更新安装到与激活软件安装位置分开的并行软件安装位置(诸如,除了激活软件分区(partition)之外的分区或者除了激活文件集之外的并行文件集和/或目录)中。当安装完成时,所述系统可将激活软件安装位置转换为第二并行软件安装位置。在某些情况下,所述系统可向用户提供软件已被更新的通知。这允许软件在无需用于激活更新处理的消费者交互的情况下进行软件更新,并且不会导致客户在更新正在执行时不能利用软件系统。
[0023] 为了确定更新什么模块,车辆模块可被配置为产生包括安装在车辆上的至少一个软件模块的版本信息的询问器(interrogator)日志,并将询问器日志发送到云服务器。车辆模块可基于诸如以下标准而确定产生询问器日志:确定车辆已经完成预定数量的点火(key-on)周期,确定自询问器日志已被产生起经过指定量的时间,或者以上二者的组合。询问器日志可包括根据数据标识符列表而编译的信息,所述数据标识符列表定义将在询问器日志中包括什么信息以及这样的信息位于激活软件安装位置的什么位置。车辆可被配置为基于包括在提供的询问器日志中的信息从云服务器接收清单,其中,所述信息指示将被车辆安装的至少一个软件更新的网络位置。基于该清单,车辆可被配置为将从指定网络位置检索到的更新的二进制数据(binary)安装到失活(inactive)安装位置。当失活安装位置被更新时,车辆可被配置为将失活安装位置设置为激活安装位置(例如,启动分区),以替代先前的激活安装位置。因此,当车辆重启时,更新的安装位置的软件可被使用。
[0024] 图1示出用于车辆31的基于车辆的计算系统(VCS)1的示例性框式拓扑图。这种基于车辆的计算系统1的示例是由福特汽车公司制造的SYNC系统。设置有基于车辆的计算系统的车辆可包含位于车辆31中的可视前端界面4。如果设置有例如触摸敏感性屏幕,则用户还能够与所述界面交互。在另一示意性实施例中,通过按钮按压、具有自动语音识别和语音合成的语音会话系统来进行交互。
[0025] 在图1中所示的示意性实施例1中,处理器3或中央处理单元(CPU)3控制基于车辆的计算系统的操作的至少一部分。设置在车辆31中的处理器3允许命令和程序的车载处理。此外,处理器3连接到非持久性存储器5和持久性存储器7两者。在该示意性实施例中,非持久性存储器5是随机存取存储器(RAM),而持久性存储器7是硬盘驱动器(HDD)或闪存。总体而言,持久性(非暂时性)存储器7可包括当计算机或其它装置断电时保持数据的所有类型的存储器。这些存储器包括但不限于HDD、致密盘(CD)、数字多功能盘(DVD)、磁带、固态驱动器、便携式通用串行总线(USB)驱动器以及任何其它合适的形式的持久性存储器7。
[0026] 处理器3还设置有允许用户与处理器3进行交互的多个不同的输入。在该示意性实施例中,设置有麦克风29、辅助输入25(用于输入33)、USB输入23、GPS(全球定位系统)输入24、屏幕4(可以是触摸屏显示器)和蓝牙输入15的全部。还设置有输入选择器51,以允许用户在各种输入之间互换。在对麦克风和辅助连接器两者的输入被传送到处理器3之前,通过转换器27将所述输入从模拟转换为数字。尽管未示出,但是与VCS 1进行通信的多个车辆组件和辅助组件可使用车辆网络(诸如但不限于控制器区域网络(CAN)总线)以向VCS 1(或其组件)传送数据并传送来自于VCS 1(或其组件)的数据。
[0027] 对VCS 1的输出可包括但不限于可视显示器4以及扬声器13或立体声系统输出。扬声器13连接到放大器11并通过数模转换器9从处理器3接收其信号。还可分别沿19和21所示的双向数据流产生到远程蓝牙装置(诸如个人导航装置(PND)54)或USB装置(诸如车辆导航装置60)的输出。
[0028] 在一示意性实施例中,系统1使用蓝牙收发器15与用户的移动装置(ND)53(例如,蜂窝电话、智能电话、PDA或具有无线远程网络连接能力的任何其它装置)进行通信17。移动装置53随后可用于通过例如与蜂窝塔57的通信55来与车辆31外部的网络61进行通信59。在一些实施例中,蜂窝塔57可以是WiFi接入点。
[0029] 移动装置53和蓝牙收发器之间的示例性通信由通信14表示。
[0030] 可通过按钮52或相似输入来指示移动装置53与蓝牙收发器15进行配对。因此,CPU被指示车载蓝牙收发器15将与移动装置53中的蓝牙收发器进行配对。
[0031] 可利用例如与移动装置53关联的数据计划、话上数据或双音多频(DTMF)音调在CPU 3和网络61之间传送数据。可选择地,可期望包括具有天线18的车载调制解调器63以便在CPU 3和网络61之间通过语音频带传送数据16。移动装置53随后可用于通过例如与蜂窝塔57的通信55来与车辆31外部的网络61进行通信59。在一些实施例中,调制解调器63可与蜂窝塔57建立通信20,以与网络61进行通信。作为非限制性示例,调制解调器63可以是USB蜂窝调制解调器63,并且通信20可以是蜂窝通信。
[0032] 在一示意性实施例中,处理器3设置有包括与调制解调器应用软件进行通信的API的操作系统。调制解调器应用软件可访问嵌入在蓝牙收发器上的模块或固件,以完成与(诸如设置在移动装置里的)远程蓝牙收发器的无线通信。蓝牙是电气和电子工程师协会(IEEE)802个域网(PAN)协议的子集。IEEE 802局域网(LAN)协议包括无线保真(WiFi)并且与IEEE 802PAN具有相当多的交叉功能。两者都适合于车辆31内的无线通信。例如,蓝牙和WiFi可用作传输工具以在处理器3和由移动装置53运行的移动应用之间提供通信,并支持诸如由福特汽车公司提供的SYNC APPLINK的技术。可以在本领域使用的另一通信方式是自由空间光通信(诸如红外数据组织(IrDA))和非标准化消费者红外(IR)协议。
[0033] 在另一实施例中,移动装置53包括用于语音频带或宽带数据通信的调制解调器。在话上数据的实施例中,当移动装置53的拥有者能够在数据被传送的同时通过装置说话时,可实现已知为频分复用的技术。在其它时间,当拥有者没有使用装置时,数据传送可使用整个带宽(在一示例中是290Hz至3.4kHz)。尽管频分复用对于车辆31与互联网之间的模拟蜂窝通信而言可能是常见的并且仍在使用,但其已经很大程度上被用于数字蜂窝通信的码域多址(CDMA)、时域多址(TDMA)、空域多址(SDMA)的混合体所替代。这些都是ITU IMT-
2000(3G)兼容的标准,并且为静止或者行走的用户提供高达2mbs的数据速率以及为在移动的车辆31内的用户提供385kbs的数据速率。3G标准现在正被为在车辆31内的用户提供
200mbs的数据速率以及为静止的用户提供1gbs的数据速率的高级IMT(4G)所替代。如果用户拥有与移动装置53关联的数据计划,则所述数据计划可允许宽带传输且系统可使用宽得多的带宽(加速数据传送)。在另一实施例中,移动装置53被安装至车辆31的蜂窝通信装置(未示出)所替代。在另一实施例中,移动装置53可以是能够通过例如(而非限制)802.11g网络(即WiFi)或WiMax网络进行通信的无线LAN装置。
[0034] 在一实施例中,传入数据可经由话上数据或数据计划穿过移动装置53、穿过车载蓝牙收发器并进入车辆31的处理器3。例如,在某些临时数据的情况下,例如,数据可被存储在HDD或其它存储介质7上,直至不再需要所述数据的时候为止。
[0035] 其它可与车辆31交互的源包括:具有例如USB连接56和/或天线58的PND 54,具有USB 62或其它连接的车辆导航装置60,车载GPS装置24,或者与网络61连接的远程导航系统(未示出)。USB是一类串行网络协议中的一种。IEEE 1394(火线TM(苹果)、i.LINKTM(索尼)和LynxTM(德州仪器))、EIA(电子工业协会)串行协议、IEEE 1284(Centronics端口)、S/PDIF(索尼/飞利浦数字互连格式)和USB-IF(USB应用者论坛)形成了装置-装置串行标准的骨干。多数协议可被实施为用于电通信或光通信。
[0036] 此外,CPU 3能与各种其它的辅助装置65进行通信。这些装置65可通过无线连接67或有线连接69来连接。辅助装置65可包括但不限于个人媒体播放器、无线医疗装置、便携式计算机等。
[0037] 此外或可选择地,CPU 3可使用例如WiFi(IEEE 803.11)收发器71而连接到基于车辆的无线路由器73。这可允许CPU 3在本地路由器73的范围内连接到远程网络。
[0038] 除了具有通过位于车辆31中的车辆计算系统执行的示例性处理之外,在某些实施例中,可通过车辆计算系统外部并与车辆计算系统进行通信的一个或更多个计算系统来至少部分地执行示例性处理。这样的系统可包括但不限于:无线装置(例如但不限于移动电话)或者通过无线装置连接的远程计算系统(例如但不限于服务器)。总体上,这样的系统可被称为与车辆关联的计算系统(VACS)。在某些实施例中,VACS的特定组件可根据系统的特定实施而执行处理的特定部分。通过示例而并非限制的方式,如果处理具有利用配对的无线装置发送或者接收信息的步骤,则由于无线装置不会与自身进行信息的“发送和接收”,因此无线装置很可能不执行该处理。本领域的普通技术人员将理解何时不适合对给定解决方案应用特定的VACS。在所有解决方案中,预期至少位于车辆31中的VCS 1自身能够执行示例性处理。
[0039] 图2A至图2D示出用于无声模块软件更新的示意性系统200。图2A示出示意性系统200的车辆模块202部分;图2B示出系统200的云服务器204部分;图2C示出系统200的网关
206部分;图2D示出系统200的数据后端208部分。车辆31的车辆模块202可被配置为利用系统200的服务执行对车辆31的软件的更新。云服务器204可被配置为处理来自车辆模块202的对软件更新的请求并向车辆模块202提供软件更新的下载。网关206可被配置为提供来自其它的系统200元件的对数据后端208的受控访问。数据后端208可被配置为提供在网关206后面保护的软件二进制数据和车辆31信息的数据存储。
[0040] 更具体地讲,参照图2A,用户或车辆31可选择进入由车辆31执行的软件更新。为了便于选择(opt-in)处理,在一些示例中,车辆模块202可通过系统的可视显示器4和/或扬声器13来向用户提供请求用户授权的提示。车辆模块202可以是可期望无声软件更新的资讯娱乐模块或其它车载模块。示例性提示可请求用户同意将通过WiFi执行的无线更新。所述同意可被请求一次,但可被利用多个更新周期。作为另一种可能,用户可使用与车辆31配对或关联的移动装置53(例如,通过经由移动装置53所执行的移动应用提供同意,通过将短消息服务(SMS)消息从移动装置53发送到特定号码,通过使用从移动装置53可访问的授权网页等)选择无线更新。一旦(例如,通过从用户接收按钮按压或语音对话)被授权,车辆模块202就可被配置为产生软件更新请求210以使车辆模块202查询车辆31的模块的软件更新。
此查询可被无声地执行而无需用户输入。查询还可根据一个或更多个条件的满足(诸如,在车辆31已执行了预定数量的点火之后)来执行。如果在点火事件时连接(例如,车辆31到WiFi网络的连接)不可用,则车辆模块202可等待直到下一可用连接以执行由软件更新请求
210指定的询问。
[0041] 在212,车辆模块202可被配置为收集与车辆31的模块相关的信息。收集数据的处理可表示为询问,并且收集的数据可表示为询问器日志214。作为一些非限制示例,询问的信息可包括:模块名称、模块序列号、VIN(车辆识别码)、硬件部件号、MAC地址、软件应用的部件号、语言、安装在模块上的服务包、模块上的可用存储空间、关于先前更新的安装的状态信息。车辆模块202还可被配置通过使用最佳数据标识符列表(ODL)文件216来确定收集什么信息,其中,最佳数据标识符列表(ODL)文件216定义要询问的特定信息以及这样的信息可位于什么位置。应注意,要收集的信息可包括来自车辆31的其它引擎控制单元或其它控制器的数据元素,并且可通过控制器区域网络(CAN)或支持控制器之间的数据传输的其它的车辆31通信架构来检索要收集的信息。所述信息还可包括诊断故障码以及可在由经销商进行车辆维修期间被收集的其它车辆状态信息。所述信息还可包括包含使用和日志数据的分析数据,以提供对各种车辆功能的使用的分析。在某些情况下,ODL文件216可安装为在车辆模块202上的软件安装的一部分,而在其它情况下,ODL文件216可能已在先前根据较早执行的更新而被接收(在下面更详细地描述)。作为进一步的示例,车辆模块202可被配置为将车辆31的VIN或其它标识信息发送到云服务器204,并接收定义针对特定VIN询问什么信息的ODL文件216。
[0042] 为了提供额外的安全级别,系统200可利用消息ID 218验证从车辆模块202发送到云服务器204的消息。更具体地讲,车辆模块202可向云服务器204发送请求以接收用于将可验证消息发送到云服务器204的消息ID 218。参照图2B,在220,云服务器204可接收请求,并可产生或查找要使用的用于车辆模块202使用的消息ID 218。在222,云服务器204可对消息ID 218加密,并可将加密后的消息ID 224返回给车辆模块202。例如,在云服务器204识别某方尝试复制从车辆模块202发送的捕捉的消息的可能的重放攻击的情况下,可使用消息ID 218。因此,云服务器204可验证从车辆模块202接收的消息以确保所述消息使用针对系统
200和/或针对车辆模块202或车辆31有效(例如,不是先前使用过)的消息ID 218。返回参照图2A,车辆模块202还可被配置为接收加密后的消息ID 224,在226将消息ID 224解密为消息ID 218,并在228记录用于车辆模块202使用的新消息ID。
[0043] 车辆模块202还可被配置为在将被发送到云服务器204的消息230中包括询问器日志214。在某些情况下,如果在询问器日志214完成时连接不可用,则包括询问器日志214的消息230可在到车辆31的下一可用连接期间被传送到云服务器204。在232,车辆模块202还可被配置为使用与车辆模块202关联的模块密钥来对消息230签名。车辆模块202还可被配置为执行消息230的安全编码,诸如,通过根据在用于将消息传输到车辆31和从车辆31传输消息的协议中使用的私钥来对消息230加密。总体而言,从车辆202发送到云服务器204的消息可被车辆模块202签名、加密和编码,并且通过车辆模块202从云服务器204接收的消息可被车辆模块202认证、解密和解码。
[0044] 作为一种可能的传送(pass-through)技术,车辆模块202可被配置为将消息230发送到(例如,通过蓝牙或通过WiFi连接到车辆31的)移动装置53,以传送云服务器204上的消息230。例如,如果车辆31通过WiFi网络连接到移动装置53,则车辆模块202可选择通过WiFi将消息230发送到移动装置53。或者,如果车辆31通过蓝牙连接到移动装置53,则车辆模块202可通过蓝牙提供将由移动装置53提供给云服务器204的消息230。应注意的是,可类似地执行在车辆模块202和云服务器204之间发送的其它消息的传输。
[0045] 参照图2B,在234,云服务器204可被配置为通过移动电话或通过WiFi从车辆31接收包括询问器日志214的消息230。不管使用哪种方式接收消息230,云服务器204可被配置为验证询问器日志214,并且如果日志214被验证,则在236向车辆31请求新的更新。作为一个示例,日志214的验证可包括确保日志214的格式正确,日志214的长度合适,并且日志214不包含任何无效字符(作为一些示例)。
[0046] 作为在236请求更新的一方面并参照图2C和图2D,在238,云服务器204可通过网关206将签名后的日志230转发到数据后端208以允许数据后端208在240记录询问器日志230,从而保持跟踪车辆31的当前安装状态(诸如,车辆31的车辆模块202和其它模块的版本242和配置),并保存询问器日志230自身的副本。
[0047] 返回参照图2B,作为在236请求更新的另一方面,在244,云服务器204可检查车辆31软件的可能需要的新更新。在281,云服务器204可被配置为接收车辆模块202命令并回顾由询问器日志230指示的当前模块配置以及车辆模块202的当前版本,并确定是否存在应被安装的用于车辆31的任何软件更新。基于所述确定,云服务器204可识别应被安装在车辆31上的二进制数据以执行识别的更新。这些二进制数据可在清单246中被识别。此外,清单246可指定可检索到每个指定的更新二进制数据的网络位置。作为一个示例,清单246可将所述网络位置指定为由云服务器204提供的URL(统一资源定位符)。在某些情况下,二进制数据可包括将被安装的新版本的文件,而在其它情况下,二进制数据可包括将被应用于当前安装的二进制数据的增量式更新,以将当前安装的二进制数据从一个版本更新到下一版本。
[0048] 为了识别软件更新,云服务器204可被配置为将在询问器日志230中指示的模块的当前版本与同车辆模块202兼容的模块的最新版本进行比较。云服务器204还可被配置为针对应被更新的任何组件识别那些更新版本可能需要的任何附加从属物(dependency)。这些附加从属物还可被添加到清单246。
[0049] 云服务器204可响应于用于车辆31的软件更新的标识而提供消息。所述消息可包括清单246以及附加信息,诸如,可被车辆31用来对根据清单246下载的软件更新进行解密的一个或更多个私钥248以及指示当前或最新的版本信息250的响应。当前或最新的版本信息250可包括例如包含在下次更新被执行时将询问什么信息的新定义的更新的ODL 250。
[0050] 作为在236请求新更新的另一部分,在252,云服务器204可对将被提供回车辆模块202的响应进行加密。例如,云服务器204可根据从数据后端208接收并由云服务器204在256存储的签名密钥254来在252对请求执行编码/加密。参照图2C和图2D,数据后端208可在260依次被配置为处理密钥签名请求,并将在258通过数据网关206转发的签名密钥254提供给云服务器204。返回参照图2B并使用签名密钥254,云服务器204可因此响应于在232发送的对更新的初始车辆模块202请求(参照图2A),将签名响应、编码、加密的响应提供回请求的车辆模块202。虽然返回响应,但是应注意的是不要求车辆模块202为了将响应于初始请求接收的清单246而同步等待或挂起等待(hang waiting)。如下面从元素284开始的详细讨论,车辆模块202可利用包括在响应中的信息完成软件更新。
[0051] 回到图2D中的数据后端208处理,在264,数据后端208可将要被车辆模块202下载的更新的二进制数据加载到云服务器204。作为一种可能,在264,数据后端208可被配置为将二进制数据周期性(例如,每天、每周、每月)加载到云服务器204。作为另一种可能,数据后端208可被配置为基于识别的需要(例如,修复软件漏洞、关键或突发事件、响应于对车辆31软件更新的请求等)向云服务器204提供更新。
[0052] 参照图2B和图2D,为了在到云服务器204的网络传输期间提供对二进制数据的保护,可以以传输加密格式将二进制数据传输为加密后的二进制数据266。云服务器204可因此在268加载根据传输协议解码的解密格式的二进制数据266。由于二进制数据一旦通过传输被接收就不是加密格式,因此在270,云服务器204可被配置为将二进制数据加密为通用加密二进制数据272以进行存储,其中,使用不针对(keyed to)特定车辆31或VIN的私钥274对一般的二进制数据进行编码。因此,可使用提供给车辆模块202的私钥274对加密后的二进制数据272进行解密。因此,使得加密后的二进制数据272在可由提供给车辆31的清单246指定的通用二进制数据网络位置276可用。在某些情况下,以针对特定请求方或下载方(例如,车辆31)的私钥274的方式来对请求的二进制数据签名。这些请求可被表示为电子序列号(ESN)签名部分请求280,并且可在于282创建并存储签名二进制数据元素时被执行。例如,云服务器204可确定针对动态签名二进制数据272的动态签名二进制数据URL 276以及针对通用签名二进制数据272的通用二进制数据URL 276。作为在270签名并加密处理和/或在282创建并存储签名二进制数据处理的一部分,在278,二进制数据URL 276信息可通过网关206被转发到数据后端208,以允许数据后端208得知加载的二进制数据的位置。
[0053] 参照图2A,响应于元素281,车辆模块202可接收包括签名清单246、私钥248和更新ODL 250的响应并可在284对该响应进行认证、解码和解密。因此,车辆模块202可提取被包括的清单246、私钥248和ODL 250。车辆模块202还在286可存储清单246、私钥248和ODL 250。基于清单246,车辆模块202可被配置为在288下载指示的二进制数据272。例如,通过访问由清单246指定的网络位置,车辆模块202可被配置为从云服务器204下载二进制数据
272。使用私钥248,车辆模块202可被配置为在290将二进制数据272解密为解密后的二进制数据292以用于安装。
[0054] 在某些情况下,车辆模块202可向云服务器204请求云服务器204未持有(host)的二进制数据。参照图2B,例如,当云服务器204接收到指向云服务器204未持有文件的URL或其它网络位置的请求时,云服务器204可检测存储检索错误294。响应于该检测,云服务器204可对丢失的二进制数据296进行检索。作为一种可能,云服务器204可将丢失的二进制数据的ESN和/或部件号298提供给网关206,网关206可相应地在300将请求的号码298转发到数据后端208。数据后端208可因此在302执行丢失的二进制数据的获取(与基于在244检查新更新而在264将二进制数据加载到云服务器204类似)。
[0055] 回到图2A,车辆模块202还可保持下载状态304,下载状态304指示车辆模块202检索由清单246指定的软件更新的进度。为了实现向数据后端208自动通知下载的状态,车辆模块202可将下载状态304提供给云服务器204。车辆模块202可因此在306对所述状态304进行签名、加密和编码(与以上针对在元素232中提供签名询问器日志230所讨论的操作类似)。签名状态308可被提供给可接收请求(310,参照图2B)的云服务器204。云服务器204可检索出解密状态312并可在314存储解密状态316以允许系统200保持跟踪车辆模块202的进度。因此,车辆模块202可将针对不能被下载或者能被下载但不能使用私钥248解密的二进制数据的错误信息提供给云服务器204。状态304更新可在某些情况下从云服务器204被转发到数据后端208(未示出),以允许数据后端208随着车辆模块202的下载状态304保持更新。
[0056] 返回参照图2A,车辆模块202可被配置为在318安装被下载并被解密的二进制数据292。为了避免损坏安装到车辆模块202的当前版本的软件,车辆模块202可被配置为将安装执行到车辆模块202的第二安装位置,而不是车辆模块202被启动的当前激活安装位置。可在不需要来自用户的输入的情况下无声地进行到第二安装位置的模块的安装。与当二进制数据的下载完成时类似,当模块被安装到车辆模块202时,车辆模块202可被配置为将安装状态320更新提供给云服务器204。状态更新可从云服务器204被转发到数据后端208,以允许数据后端208随着车辆模块202的安装模块版本的状态320保持更新。
[0057] 当由清单指定的模块的安装完成时,车辆模块202可被配置为执行车辆31的模块的附加询问以创建询问器日志322。与以上针对元素294的描述相似,车辆模块202可在322创建询问器日志,但是此时通过利用接收到的ODL250并提供针对当前执行的软件更新询问什么信息的更新的定义来创建询问器日志。另外,与如上讨论类似,车辆模块202可被配置为在324对询问器日志进行签名、编码并将询问器日志326提供给云服务器204,云服务器204可相应地将询问器日志326提供给数据后端208(与针对询问器日志230的操作类似)。因此,数据后端208可在不需要用户HMI交互的情况下,被自动更新车辆31的安装状态。
[0058] 另外,当软件安装完成时,车辆模块202可被配置为重新配置车辆模块202以指示第二安装位置是新的激活安装位置(例如,将被启动的分区)。因此,在车辆模块202启动的下一次(诸如,在下次点火时),更新的软件可被实现为可由车辆31使用。在某些情况下,用户可被通知软件安装完成。此外,当车辆31的成功启动进入第二安装位置时,第一安装位置随后也可被更新到新的软件版本。因此,第一安装位置随后可用于对车辆31的未来软件更新的无声安装。
[0059] 参照图2B,系统200的操作员328可利用系统200产生关于安装在车辆31上的软件的当前模块版本的报告330,所述报告可由操作员328在332浏览。作为一个示例,报告330可包括关于针对车辆31的车辆更新的状态的信息(例如,根据VIN或另一车辆特定标识符而查询的信息),所述信息可指示车辆31是否已完成下载软件更新、是否完成软件更新的安装或在尝试使用系统200执行软件更新时遇到问题。作为另一示例,报告330可包括关于车辆31的各个模块处于哪个安装版本级别的统计。
[0060] 图3示出用于更新车辆软件的示例性处理400。示例性处理400可通过例如与云服务器204通信的车辆31来执行。
[0061] 在块402,车辆31确定车辆31应检查软件更新。例如,当确定车辆31已经完成了预定数量的点火周期和/或已经过了一定量的时间,并且还确定(例如,通过连接的移动装置53)网络连接可用于与云服务器204进行通信时,车辆31的车辆模块202可确定车辆31应检查软件更新。
[0062] 在块404,车辆31产生询问器日志214。询问器日志214可包括安装在车辆31上的至少一个软件模块的版本信息。作为一些非限制示例,要询问的信息可包括:模块名称、模块序列号、VIN、硬件部件号、MAC地址、软件应用的部件号、语言、安装在模块上的服务包、模块上的可用存储空间以及关于先前更新的安装的状态信息。车辆模块202可被配置为根据ODL 216而产生询问器日志214,ODL 216定义要询问什么信息以及这样的信息可位于什么位置。
要询问的信息可包括例如来自车辆模块202以及车辆内的其它ECU的请求标识符。所述信息可通过CAN或其它车辆网络来收集并被包括在询问器日志214中。在某些情况下,ODL 216可被接收为车辆模块202上的软件的安装的一部分,但是在其它情况下,ODL 216可在先前根据较早执行的更新而已经被接收(例如,像ODL 250那样)。
[0063] 在块406,车辆31将询问器日志214提供给云服务器204。例如,车辆模块202可对询问器日志214加密并可将签名的询问器日志消息230发送到云服务器204。
[0064] 在块408,车辆31从云服务器204接收清单246。例如,响应于消息230,车辆31的车辆模块202可接收指示将由车辆31下载并安装的一个或更多个二进制数据的签名清单246以及当执行更新时要使用的其它信息,诸如,更新的ODL 250和用于对将被下载并安装的二进制数据进行解密的私钥248。
[0065] 在块410,车辆31下载由清单246指定的二进制数据。例如,车辆31的车辆模块202可从云服务器204下载来自由清单246指定的网络位置的加密后的二进制数据272,并可根据接收的私钥248将二进制数据272解密为解密后的二进制数据292。
[0066] 在块412,车辆31将下载的二进制数据安装到失活安装位置。例如,车辆模块202可利用正在激活安装位置中执行的软件来将解密后的二进制数据272安装到失活安装位置,失活安装位置的当前软件版本与激活安装位置的当前软件版本相同。这可允许安装在不影响车辆模块202的功能的情况下发生。
[0067] 在块414,车辆31将失活安装位置设置为新的激活安装位置。例如,如果安装成功,则车辆模块202可改变针对车辆模块202的启动信息以在下一次启动时将失活安装位置设置为新的激活安装位置。在某些情况下,车辆模块202可强制重启车辆模块202,但是在其它情况下,车辆模块202可允许重启延迟至车辆模块202下次被启动时(例如,在车辆31的下一个点火周期)。在下一次启动时,如果软件更新成功,则车辆模块202还可将先前激活安装位置更新为与软件的新版本匹配。然而,如果重启失败,则车辆模块202能够良好地(gracefully)返回到先前的激活安装位置(并且在某些情况下,还将失败的改变回滚(roll back)到失活安装位置)。在块414之后,处理400结束。
[0068] 虽然以上描述了示例性实施例,但是这些实施例不意图描述本发明的所有可能的形式。相反,在描述中使用的词语是描述而不是限制的词语,应理解在不脱离本发明的精神和范围的情况下可进行各种改变。另外,可组合各种实施的实施例的功能来形成本发明的进一步的实施例。