数字网络中的增强的数据提供的制作方法

文档序号:31880175发布日期:2022-10-21 22:58阅读:31来源:国知局
数字网络中的增强的数据提供的制作方法

1.本公开总体上涉及计算机软件更新,并且更具体地涉及用于数字网络中的增强的数据提供的系统和方法。


背景技术:

2.可以经由软件更新对计算机进行编程或重新编程,例如以添加或替换计算机的操作。软件更新通常(尽管不一定)部分地无线执行,例如,如空中下载(ota)更新。然而,网络限制(包括对诸如蜂窝网络的广域网的带宽和/或连接性的限制)可能是ota软件更新的问题。


技术实现要素:

3.本文公开了一种系统,所述系统包括服务器计算机,所述服务器计算机被编程为在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,对所述第一部分和所述第二部分进行编码以生成经编码数据,经由无线数据传送将所述经编码数据发送到所述第一计算机和所述第二计算机。所述第一计算机被编程为从所接收的经编码数据解码第二部分,基于所存储的第一部分和所解码的第二部分更新第一计算机的操作特征,并基于更新后的操作特征操作第一计算机。
4.所述第一计算机可以在第一车辆中,并且所述操作特征可以是车辆操作特征。
5.所述服务器计算机还可以被编程为通过将xor运算应用于所述第一部分和所述第二部分来对所述第一部分和所述第二部分进行编码。
6.所述服务器计算机还可以被编程为在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部分和所述第二部分进行编码。
7.所述服务器计算机还可以被编程为在确定所述第一计算机和所述第二计算机中的每一者缺少软件数据的第三部分时,向所述第一计算机和所述第二计算机发送所述第三部分。
8.所述服务器计算机还可以被编程为在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
9.所述服务器计算机还可以被编程为在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)软件更新计划未指定对所述第二软件数据的更新时,发送包括从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令的消息。
10.所述第一计算机可以在第一车辆中,并且所述第二计算机在第二车辆中。
11.本文还公开了一种服务器计算机,其包括处理器和存储器。所述存储器存储可由处理器执行以进行以下操作的指令:在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,对所述第一部分和所述第二部分进行编码以生成经编码数据,并经由无线数据传送将所述经编码数据发送到所述第一计算机和所述第二计算机。所述第一计算机被编程为从所接收的经编码数据解码所述第二部分并基于所存储的第一部分和所解码的第二部分更新所述第一计算机的所述操作特征。
12.所述指令还可以包括用于进行以下操作的指令:通过将xor运算应用于所述第一部分和所述第二部分而对所述第一部分和所述第二部分进行编码。
13.所述指令还可以包括用于进行以下操作的指令:在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部分和所述第二部分进行编码。
14.所述指令还可以包括用于进行以下操作的指令:在确定所述第一计算机和所述第二计算机中的每一者缺少软件数据的第三部分时向所述第一计算机和所述第二计算机发送所述第三部分。
15.所述指令还可以包括用于进行以下操作的指令:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
16.所述指令还可以包括用于进行以下操作的指令:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)软件更新计划未指定对所述第二软件数据的更新时,发送包括从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令的消息。
17.所述第一计算机可以在第一车辆中,并且所述第二计算机可以在第二车辆中。
18.本文还公开了一种方法,所述方法包括:在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,在服务器计算机中对所述第一部分和所述第二部分进行编码以生成经编码数据;经由无线数据传送将所述经编码数据从所述服务器计算机发送到所述第一计算机和所述第二计算机;在所述第一计算机中从所接收的经编码数据解码所述第二部分;基于所存储的第一部分和所解码的第二部分来更新所述第一计算机的所述操作特征;以及基于更新后的操作特征来操作所述第一计算机。
19.所述编码可以包括将xor运算应用于所述软件数据的所述第一部分和所述第二部分。
20.所述方法还可以包括:在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部分和所述第二部分进行编码。
21.所述方法还可以包括在确定所述第一计算机和所述第二计算机中的每一者缺少
软件数据的第三软件部分时向所述第一计算机和所述第二计算机发送所述第三部分。
22.所述方法还可以包括:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
23.还公开了一种计算装置,所述计算装置被编程为执行上述方法步骤中的任一者。
24.还公开了一种计算机程序产品,所述计算机程序产品包括计算机可读介质,所述计算机可读介质存储指令,所述指令可由计算机处理器执行以执行上述方法步骤中的任一者。
25.系统元件
26.为了提高使用通信网络来更新连接到网络的一个或多个计算机上的数据(例如,经由空中下载(ota)软件更新来更新软件)的效率和/或更有效地使用接收数据更新的计算机中的存储器空间,用于更新的软件数据可以被划分为两个或更多个部分。然后,更新所需的软件数据的第一部分可以在第一时间存储在将接收更新的第一计算机的存储器中。然后,在稍后的第二时间,服务器计算机可以确定更新所需的软件数据的一个或多个剩余部分,即,向第一计算机提供新的和/或修改的编程。然后,服务器计算机可以确定与第一计算机在本地网络上的第二计算机是否包括更新所需的软件数据的剩余的第二部分。根据该确定,如下所述,服务器计算机可以非编码格式、编码格式或作为非编码数据和经编码数据的组合向第一计算机传输一个或多个剩余的第二部分,由此更新可以通过更有效地使用带宽和/或计算机存储器来实现。
27.下面详细描述用于确定要在更新中提供的软件数据的部分的逻辑。总的来说,在一个示例中,所述服务器计算机可被编程为确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在与第一计算机在本地网络上的第二计算机中,对所述第一部分和所述第二部分进行编码以生成经编码数据,并将所述经编码数据发送到所述第一计算机和所述第二计算机。第一计算机可被编程为从所接收的经编码数据解码第二部分,基于所存储的第一部分和所解码的第二部分更新第一计算机的操作特征,并基于更新后的操作特征操作第一计算机。
附图说明
28.图1是用于在数字网络中提供数据更新的示例性系统的框图。
29.图2是示出更新计算机中的软件的操作特征的示例的示例性框图。
30.图3是用于更新计算机中的软件的操作特征并安装其新操作特征的另一个示例性框图。
31.图4是用于操作服务器装置的示例性过程的流程图。
32.图5是用于操作接收更新后的软件数据的计算机的示例性过程的流程图。
具体实施方式
33.图1示出了包括一个或多个车辆105和服务器计算机160的示例性系统100。尽管图1示出了车辆105,但是系统100通常包括多个(例如,数千个)车辆105。此外,尽管根据包括
更新车辆105中的计算机110的示例讨论和示出了系统100,但是系统100可以在各种背景中实现,即,另外或替代地,系统100可以包括服务器计算机160和各种不同装置、机器或架构中的计算机110中的一个或多个,例如,计算机110可以包括在移动机器人、空中无人机、物联网(iot)装置等中,被配置为经由无线通信网络与服务器计算机160通信。
34.计算机110包括诸如已知的处理器和存储器。存储器包括一种或多种形式的计算机可读介质,并且存储可由计算机110执行以执行各种操作(包括如本文所公开的操作)的指令。例如,包括计算机110的车辆105通常还包括致动器120、传感器130(诸如一个或多个主动式红外传感器130)、无线通信接口140等,以及下面讨论的其他部件。系统100通常包括本地网络上的多个计算机110。例如,在计算机110在车辆中的情况下,本地网络可以是车辆网络或通信总线,诸如控制器局域网(can)总线。然而,计算机110可以例如使用以太网、等连接到各种有线和/或无线本地网络上。在本文中,本地网络或局域网(而不是广域网)是指针对限定的地理空间(例如,车辆105、建筑物、有限的室外区域等)延伸的网络。在车辆105中,计算机110可以包括用于操作车辆105制动器、推进(例如,通过控制致动器120来控制内燃发动机、电动马达、混合动力发动机等中的一者或多者来控制车辆中的加速度)、转向、气候控制、内部和/或外部灯等中的一者或多者的程序。例如,计算机110可以是控制器,诸如车辆105中的电子控制单元(ecu);因此,应当理解,计算机110可以是包括在诸如车辆105的机器中的多个计算机110中的一个。
35.如上所述,计算机110可以包括或通信地耦合到一个或多个网络,例如,诸如车辆通信总线(诸如控制器局域网(can)等)的本地网络,和/或一个或多个其他计算机,例如车辆105中的用于监测和/或控制各种车辆部件或子系统的其他控制器或ecu等,例如,计算机110可以是动力传动系统控制器、制动控制器、转向控制器、车身控制模块、发动机控制模块等。
36.计算机110能够经由广域网(即,包括元件并连接到在地理上远离计算机110并且不是包括计算机110的机器或系统的一部分的装置的网络)直接或间接地接收数据。参考所示示例,车辆105可以包括用于经由广域网(即,包括元件并连接到车辆105外部的装置的网络)进行无线通信(即,用于发送(即,发射)和接收射频(rf)通信)的通信接口140,例如芯片、一个或多个天线、一个或多个收发器等。通信接口140可以提供基于示例性v2x通信协议(诸如蜂窝(例如,cv2x)、ieee 802.11、专用短程通信(dsrc)和/或广域网(wan))的长波通信机制。计算机110可以被配置用于例如经由车辆对车辆(v2v)、车辆对基础设施(v2i)通信和/或车辆对外界(v2x)通信网络(即,可以包括v2v和v2i的通信)通过无线通信接口140与服务器计算机160、其他车辆105等进行通信。
37.服务器计算机160可以包括或连接到通信接口,例如,包括用于无线通信的天线170。计算机160可以经由有线和/或无线通信网络(例如,经由天线170)与计算机110通信。服务器计算机160包括诸如已知的处理器和存储器。存储器包括一种或多种形式的计算机可读介质,并且存储指令,所述指令可由计算机160执行以用于执行包括如本文所描述的各种操作。计算机160可以被配置用于通过通信接口140进行通信,所述通信接口可以包括一根或多根天线,以经由诸如v2x通信协议(例如,短波通信)的无线协议提供与诸如计算机110的其他计算机的无线通信。另外或替代地,服务器计算机160可以被配置为部分地或完全地经由与计算机110的有线通信进行通信。例如,服务器计算机160可以被编程为经由包
括在网络基础设施中(例如,包括在互联网中)的电线或电缆、经由以太网等或与计算机110的任何其他有线通信来进行通信。
38.另外或替代地,计算机110、160可以包括专用电子电路,所述专用电子电路包括asic,所述asic被制造和/或配置用于特定操作,例如,在车辆105中执行特定操作、与其他计算机110、160通信等。通常,在电子设计自动化中使用诸如vhdl(超高速集成电路硬件描述语言)的硬件描述语言来描述诸如fpga和asic的数字和混合信号系统。例如,asic是基于制造前提供的vhdl编程而制造的,而fpga内部的逻辑部件可以基于例如存储在电连接到fpga电路的存储器中的vhdl编程来配置。在一些示例中,一个或多个处理器、一个或多个asic和/或fpga电路的组合可以包括在芯片封装内部。
39.图2是示出存储并更新计算机110中的示例性软件数据集a、b、c的示例性框图。如图2所示,服务器计算机可以存储当前的软件数据集b、c,并且可以向包括软件数据a、b、c的部分的计算机110提供对集合b、c的更新。
40.在本上下文中,软件数据是包括可由计算机处理器执行的程序指令的数字数据,通常呈目标代码(即,编译的可执行代码)的形式。软件数据可以例如以二进制格式存储。在一个示例中,软件数据集是用于计算机程序或应用程序的可执行计算机代码。此外,软件数据集的示例是文件集或包,即,软件数据包中的相应文件是包(即,软件数据集)的相应部分。
41.软件数据集(例如,体现程序或应用程序)可以用于提供机器或系统的操作特征。机器或系统(例如,车辆105)的操作特征是指通过执行软件数据(即,计算机可执行指令)以通过接收输入数据并基于所接收的输入数据输出输出数据来执行动作而提供的功能。操作特征的许多可能示例中的一些包括致动机器(诸如机器人、空中无人机、车辆105等)的移动、致动例如在诸如网关或路由器的网络装置中或在通信接口140中的通信、致动显示器(例如,在车辆105的信息或娱乐系统中)等。
42.在本上下文中,更新操作特征包括(i)将计算机110中的操作特征的现有软件数据替换为用于相应操作特征的所接收的软件数据,例如,从第一版本升级到第二版本,和/或(ii)向计算机110添加新的操作特征。计算机110通常包括用于添加、移除和/或更新计算机110的操作特征的重新编程操作特征。重新编程包括将软件数据写入计算机110存储器的一部分,计算机110被编程为根据所述软件数据执行操作特征。
43.用于操作特征的软件数据集可以被划分为多个部分,例如文件。在前述段落和整个本文档中,形式a0、......、n的符号表示软件数据集a的一部分,即,包括一组部分(例如,文件)的应用程序或程序包,其中基数索引0至n包括相应部分a0、......、an。在图2的示例中,软件数据集a、b和c包括相应的第一部分、第二部分、第三部分和第四部分a0、a1、a2、a3;b0、b1、b2、b3;和c0、c1、c2、c3。应注意,集合a、b、c中的每一者在本文中示出为具有相同数量的部分,但这仅仅是为了便于说明,并且相应软件数据集中的部分的数量可以是并且在一些实现方式中可能是不同的。
44.为了便于向包括在诸如车辆105的机器或系统中的计算机110提供更新,可以预取包括在更新中的软件数据集的一个或多个部分。在本上下文中,“预取”是指软件数据已经在更新时间之前的时间被传送到计算机110,例如,在计算机110的生产设施处的有线数据传送。在一个示例中,可以基于各种规则来选择软件部分进行预取:(i)当操作特征的预期
释放时间与车辆100的生产或维修日期不超过预定时间(例如六个月)时,(ii)当软件部分适配于车辆100的计算机110的可用高速缓存存储器时,和/或(iii)当基于当前或即将到来的时间或预期需要而需要该操作特征时,例如当车辆100在秋季或冬季被生产或维修时,可以预取远程起动操作特征。参考图2,在计算机110a中分别预取集合a、b和c的软件部分a1、b1、c1、a3、b3、c3,并且在计算机110b中分别预取集合a、b和c的部分a2、b2、c2、a3、b3、c3。软件数据的集合a、b和c的部分a0、b0、c0存储在服务器计算机160中,而不存储在计算机110a、110b中的任一者中。部分a3、b3、c3存储在计算机110a、110b两者中。
45.服务器计算机160可以存储对相应的计算机110而言在本文中称为“状态数据”的内容,这是指在相应计算机110中维护的软件数据集的记录和用于更新的在相应计算机110中预取的软件数据的部分的记录。例如,计算机110可以被编程为将状态数据发送到服务器计算机160。另外或替代地,服务器计算机160可以存储计算机110的状态数据,例如,列出计算机110存储器中预期的软件的预取部分,例如,如计算机110制造商所指定的。为了向计算机110提供对软件数据集的更新,必须向计算机110提供更新所需的软件数据集的部分,所述部分其当前未存储,即,未被预取,但是有利地不需要被提供已经预取的部分。例如,参考图2,软件数据集b包括部分b0、b1、b2、b3。因此,要更新计算机110a中的软件数据集b,计算机110a缺少部分b0、b2。在另一个示例中,要更新第二计算机110b中的软件数据集c,计算机110b缺少部分c0、c1。
46.服务器计算机160可以被编程为识别用于执行针对操作特征的软件数据的更新的在计算机110中的软件数据的预取部分,并且识别不是由计算机110存储但更新所需的软件数据的部分。此外,服务器计算机160可以被编程为确定更新所需的软件数据的部分是本地存储在第二计算机110上,还是必须由服务器计算机160经由广域网提供。t.在识别出软件的一部分不是由接收计算机110或与接收计算机110在本地网络上的任何第二计算机110本地存储时,服务器计算机160可以确定并执行编码方案,然后可以根据所述编码方案提供用于更新的软件数据的一个或多个缺失部分。
47.在一个示例中,服务器计算机160可以通过传输或发送旨在用于多个接收器的数据来提供用于更新的软件数据的一个或多个部分。在一个示例中,服务器计算机160可以将消息广播到例如地理区域中的多个接收计算机110。在一些示例中,广播消息可以包括例如通过传输目标接收器的标识符列表来指定消息针对哪个(哪些)接收器(例如,计算机110)的数据,如下面所讨论的。服务器计算机160可以经由诸如wan、dsrc、移动通信网络等的无线通信网络向多个计算机110广播数据。
48.在图2的示例中,服务器计算机160向计算机110a、110b提供对软件数据集b、c的更新。因为车辆105的网络上的计算机110都不具有集合b、c的部分b0、c0,因此这些部分被提供在传输的消息中而不如本文所述进行编码。然而,集合b和c的软件部分b1、c1、b3和c3被存储(例如,预取)在计算机110a中,并且集合b和c的部分b2、c2、b3和c3分别地存储(例如,预取)在计算机110b中。换句话说,部分b1和c1存储在计算机110a上而不存储在计算机110b上,而部分b2和c2存储在计算机110b上而不存储在计算机110a上。有利地,可以根据编码方案来组合软件数据的两个不同部分,所述编码方案产生不长于两个部分中的最长一个的位串(用于解决要编码的位串的大小差异的技术在下面讨论)。
49.编码方案可以包括xor(异或)函数。xor运算(在本文中用

符号表示)接收两个二
进制值作为输入,并且如果输入不同则输出1,并且如果输入相同则输出0,如表1所示:
50.输入1(i1)输入2(i2)xor输出(i1⊕
i2)110101011000
51.表1
52.也就是说,可以将xor函数应用于软件数据的两个部分,即位串。此外,xor函数的结果或输出可以比发送输入中的每一个更有效地发送,因为xor函数的输出是两个输入一起的长度的一半。在本文讨论的示例中,xor函数的输出可以编码为软件数据的部分,然后可以被供应到本地网络(诸如车辆105网络)上的相应计算机110,其中计算机110中的每一者需要软件数据的经编码部分中的一个,并且具有预取的软件数据的另一经编码部分。然后,接收计算机110可以使用预取部分对经xor处理的串进行解码以获得软件数据的缺失部分。
53.例如,如图2所示,服务器计算机160可以生成两组经编码数据(1)c1⊕
b2和(2)b1⊕
c2,然后可以发送所述两组经编码数据并将其接收在第一计算机110a和第二计算机110b中。第一计算机110a可被编程为从接收的经编码数据c1⊕
b2解码第二部分b2以基于存储的第一部分b1和解码的第二部分b2更新第一计算机110a的软件数据集b,并基于更新后的操作特征b操作第一计算机110a。例如,一组经编码数据c1⊕
b2是一组二进制数字编码的数据,其数字在软件部分b2、c1之间是不同的。因此,如果计算机110a包括软件部分c1,则计算机110a可以从经编码数据c1⊕
b2获得软件部分b2。也就是说,计算机110a可以将软件部分b2生成为b2=(c1⊕
b2)

c1。
54.类似地,如果计算机110b包括软件部分b2,则计算机110a可以从经编码数据c1⊕
b2获得另一软件部分c1。也就是说,计算机110a可以将软件部分c1生成为c1=(c1⊕
b2)

b2。
55.有利地,与发送部分b2、c1中的每一者相比,通过发送经编码数据c1⊕
b2,服务器计算机160减少了所发送的数据量。在更新计算机110的相应操作特征之前,预取的软件部分和经由无线通信接收的软件部分(无论是非编码的还是编码的)通常存储在计算机110的高速缓存或其他保留的存储器中。换句话说,计算机110需要足够的高速缓存存储器来存储操作特征的部分,以便对计算机110的相应特征进行重新编程。l表示例如在车辆100的计算机110中可以用于预取软件数据集的高速缓存存储器的大小。等式(1)指定要传输的数据量r1l,以便更新或安装操作特征的软件数据b、c。l表示用于存储软件数据的高速缓存存储器区域的大小。符号|x|是指软件部分x的大小,例如100千字节(kb)。
[0056][0057]
等式(2)提供了用于确定例如软件部分b
σ
的大小的示例性技术。m
×
l指示计算机110高速缓存存储器的大小。n是要更新的部分的数量。σ是软件部分的索引,例如b1。参考图2中所示的示例性系统100,m为2,n为3,并且σ为{0,1,2,3}中的任一者。
[0058][0059]
参考等式(2),近似值(3)至(6)确定由服务器计算机160发送的数据的近似大小。
因此,参考等式(1),可以基于近似值(3)至(6)来计算r1l。
[0060][0061][0062][0063][0064]
在一个示例中,计算机160被编程为识别未包括在更新计划中的一个或多个操作特征,然后向计算机110发送指令以从计算机110存储器移除所识别的操作特征的一个或多个部分,从而获得存储器以存储需要安装或更新的一个或多个操作特征的部分。更新计划可以存储在服务器计算机160中,并且包括指定针对多个操作特征的软件数据的更新和/或安装的时间的数据。计划可以存储在表等中,指定相应操作特征(例如,软件数据集a、b、c、d等)的更新日期。
[0065]
如关于表1所讨论的,可以通过将xor函数应用于两个输入软件部分i1、i2来执行编码。由于xor函数是逐位执行的,即,比较两个位串中的相应位,因此输入软件部分应具有相同的大小,即相同的位数。然而,在一些示例中,相应软件部分的大小可以是不同的。为了解决软件部分的大小差异,服务器计算机160可以被编程为将第一软件部分的大小调整为第二软件部分的大小,使得可以有意义地应用xor函数。例如,在确定第一部分b1的大小小于第二部分c2的大小时,服务器计算机160可以通过填充部分b1来调整第一部分b1,即,将虚拟数据添加到部分b1的末尾以实现与部分c2相同的大小(即,位数)。然后,服务器计算机160可以应用xor函数来对第一部分b1和第二部分c2进行编码,因此,当对编码的位串进行解码时,被填充的位的数量及其值(例如,全为零)可以提供给解码计算机110。例如,假设软件部分b1是100个位的阵列或串并且软件部分c2是110个位的阵列或串,则服务器计算机160可以被编程为在软件部分b1的末尾(或者,替代地,填充可以在某个其他位置,诸如在起始处)添加10个零位。因此,当生成经编码数据b1⊕
c2时,部分b1、c2的大小将是相同的。在一些示例中(图2中未示出),服务器计算机160可以仅更新一个软件数据集,例如数据集a。在这样的示例中,服务器计算机160可以被编程为生成经编码数据a1⊕
a2。第一计算机110可以被编程为基于预取的软件部分a1和所接收的经编码数据a1⊕
a2a1⊕
a2来对软件部分a2进行解码。第二计算机110b可以被编程为基于预取的软件部分a2和所接收的经编码数据a1⊕
a2a1⊕
a2来对软件部分a1进行解码。
[0066]
在图3所示的示例中,计算机110a存储部分a1、a3,并且计算机110b存储部分a2、a3。服务器计算机160可以通过无线通信与计算机110a、110b通信。在确定软件数据集a未被计划用于更新并且计算机110a、110b缺乏足够的空间来更新特征b时,服务器计算机160可以经由无线传送向计算机110a、110b发送移除部分a1、a2、a3的指令。发送经编码数据d1⊕
b2、d1⊕
b1意味着所发送的总数据量有利地从在没有编码的情况下发送的数据量减少。
[0067]
可以使用等式(7)来确定被发送以更新软件数据集b并安装软件数据集d的数据量。基于等式(2)来确定等式(7)。r2l表示被发送以更新软件数据集b并安装软件数据集d的数据量。
[0068][0069]
出于说明性目的,在关于图2至图3讨论的示例中,示出了两个计算机110a、110b。然而,本文讨论的技术可以用于任何数量的计算机110。在一个示例中,如表2所示,系统100可以包括三个计算机110a、110b、110c。软件数据集a包括部分a1、a2、a3。软件数据集b包括部分b1、b2。表1示出了在计算机110a至110c中的每一者中预取了哪些部分。
[0070]
计算机预取部分可解码的经编码数据110aa1、b1a2⊕
b1、a3⊕
b1110ba2、b2a2⊕
b1、a3⊕
b1110ca3、b1a2⊕
b1、a1[0071]
表2
[0072]
服务器计算机160可以被编程为更新计算机110a至110c的软件集a、b。计算机160可以被编程为基于确定所接收的数据可由接收计算机110a至110c解码来确定用于利用xor函数进行编码的软件部分对。附加标准可以是确定用于发送的经编码数据量被最小化。例如,关于表2,计算机160可以被编程为通过分配指定在经编码数据a3⊕
b1之前发送经编码数据a2⊕
b1的传输序列来确定经编码数据a3⊕
b1可由计算机110b解码。基于指定的该序列,在接收到经编码数据a2⊕
b1时,计算机110b可以对经编码数据进行解码以获得部分b1。然后,在接收到经编码数据a3⊕
b1时,计算机110b可以对经编码数据进行解码以获得部分a3,从而有利地减少传输经编码数据a3⊕
b2原本会消耗的带宽量。计算机160可以被编程为通过确定减少所发送数据量的序列来优化用于发送的所述一组经编码数据。
[0073]
如表2所示,软件数据的一些部分(例如,部分a1)可以在不进行编码的情况下发送。计算机160可以被编程为例如在确定用另一软件部分进行编码可能不会减少更新或安装所计划的软件数据所需的所发送数据量时发送软件数据的一个或多个部分。
[0074]
图4是用于操作服务器装置的示例性过程400的流程图。服务器计算机160可以被编程为执行过程400的框。
[0075]
过程400在框410中开始,其中计算机160接收更新计划。计算机160可以将更新计划存储在计算机160存储器中和/或从远程计算机接收包括更新计划的数据。例如,软件供应商或提供商可以提供更新计划。更新计划可以是表等的形式,其指定要更新的一个或多个软件数据集、针对多个操作特征的新软件数据的升级和/或安装的日期。
[0076]
接下来,在框420中,计算机160从计算机110接收状态数据或例如从计算机160存储器检索状态数据。例如,计算机160可以从计算机110a接收指定用于更新或安装一个或多个操作特征的软件部分的状态数据。例如,如图2所示,从计算机110a接收的数据可以指定软件部分a1、b1、c1、a3、b3、c3存储在计算机110a中。
[0077]
接下来,在决策框430中,计算机160确定是否应从一个或多个计算机110移除一个或多个软件部分。如图3的示例性框图所示,计算机160可以确定由于例如(i)计算机110的存储器115中缺少空间来存储用于操作特征d的软件数据和/或(ii)软件更新计划指定不更新软件数据集a而应移除软件部分a1、a3。如果计算机160识别出要从一个或多个计算机110移除的一个或多个软件部分,则过程400前进到框440;否则,过程400前进到决策框450。
[0078]
在框440中,计算机160发送指示一个或多个计算机110从存储器115移除所识别的
软件数据集a的软件部分a1、a3的消息。所述消息可以包括操作特征的列表,例如软件数据集a的标识符,以及适用的计算机110的列表,例如车辆100的型号标识符、车辆100的计算机110标识符等。在框440之后,过程400前进到决策框450。
[0079]
在可以从框430、440到达的决策框450中,计算机160确定是否需要软件更新和/或安装。计算机160可以被编程为基于更新计划和所接收的状态数据来确定是否需要向计算机110发送软件数据。如果计算机160确定需要软件更新,则过程400前进到框460;否则,过程400结束,或者替代地返回到框410,但图4中未示出。
[0080]
在框460中,计算机160基于一个或多个计算机110中的预取数据和软件更新计划来生成经编码数据。计算机160可以被编程为识别(i)不在计算机110中的任一个上的一个或多个软件部分,例如,部分b0、c0(参见图2),(ii)在个别计算机110上但不是在所有计算机110上的部分,例如,部分b1、c1,(iii)在计算机110中的每一个上可用的部分,例如部分b3、c3,从而确定用于进行编码以使得最小量的带宽用于将数据无线地传输到计算机110的软件部分对。例如,如图2所示,计算机160可以被编程为基于更新软件数据集b、c的计划来生成经编码数据c1⊕
b2、b1⊕
c2。
[0081]
接下来,在框470中,计算机160经由无线传送发送经编码数据,例如,c1

b2、b1

c2。如参考图2至图3所讨论的,计算机160可以被编程为另外发送未编码的软件部分,例如部分b0、c0。在框470之后,过程400结束,或替代地返回到框410,但图4中未示出。
[0082]
图5是用于操作接收更新后的软件数据的计算机的示例性过程的流程图。计算机110可以在车辆105、移动机器人、制造设施等中,并且可以被编程为执行过程500的框。
[0083]
过程500在框510中开始,其中计算机110通常至少部分地无线地向服务器计算机160发送状态数据。计算机110可以被编程为通过在计算机110的存储器115中创建预取的所存储软件数据的标识符列表来确定状态数据,如上所定义的。替代地,计算机110可以被编程为在从服务器计算机160接收到对状态数据的请求时发送状态数据。
[0084]
接下来,在决策框520中,计算机110确定是否从服务器计算机160接收到经编码数据。如果计算机110确定接收到经编码数据,则过程500前进到决策框525,否则过程500前进到框530。
[0085]
在决策框525中,计算机110确定所接收的经编码数据是否是可解码的。计算机110可以被编程为在确定(i)经编码数据例如基于包括在所接收的数据中的计算机110的标识符(如型号等)而适用于计算机110并且(ii)基于所述预取的软件部分可以对所接收的经编码数据进行解码时,确定经编码数据是可解码的。例如,参考图2,如果计算机110a包括软件部分c1,则计算机110a可以从经编码数据c1⊕
b2解码(恢复)另一软件部分b2。计算机110a可以将软件部分b2生成为b2=(c1⊕
b2)

c1b2=(c1⊕
b2)

c1。如果计算机110确定所接收的经编码数据是可解码的,则过程500前进到框535;否则过程500结束,或者替代地返回到框510,但图5中未示出。
[0086]
在框530中,计算机110操作例如车辆100、机器人等。计算机110可以被编程为提供一个或多个软件数据集a、b、c等。在框530之后,过程500结束,或者替代地返回到框510,但图5中未示出。
[0087]
在框535中,计算机110解码并存储经解码的软件部分。例如,参考图2,计算机110可以被编程为对软件部分b2进行解码并将经解码的软件部分b2存储在计算机110a的存储器
115a中。
[0088]
接下来,在框540中,计算机110基于经解码的数据来更新和/或安装操作特征。计算机110可以被编程为在确定用于对相应特征进行重新编程的软件数据的部分中的每一个都存储在计算机110的存储器115中时确定可以更新或安装特征。例如,关于图2,计算机110可以使用软件部分b0、b3、b1、b2来更新软件数据集b。参考图3,计算机110b可以使用软件部分d0、d1、d2来安装软件数据集d。
[0089]
接下来,在框545中,计算机110基于一个或多个更新后的和/或新安装的操作特征来操作。例如,关于图2,计算机110可以被编程为基于更新后的软件数据集b或新安装的软件数据集d来操作,如图3所示。在框545之后,过程500结束,或者替代地返回到框510,但图5中未示出。
[0090]
除非明确地相反指示,否则“基于”意思是“至少部分地基于”和/或“完全地基于”。
[0091]
如本文所讨论的计算装置通常各自包括可以由一个或多个计算装置(诸如上文所识别出的那些计算装置)执行并且用于执行上述过程的框或步骤的指令。计算机可执行指令可以由使用各种编程语言和/或技术创建的计算机程序来编译或解译,所述编程语言和/或技术单独地或组合地包括但不限于java
tm
、c、c++、visual basic、java script、perl、html等。通常,处理器(例如,微处理器)例如从存储器、计算机可读介质等接收指令,并且执行这些指令,由此执行一个或多个过程,其包括本文所述的过程中的一者或多者。此类指令和其他数据可使用各种计算机可读介质来存储和传输。计算装置中的文件通常是存储在计算机可读介质(诸如存储介质、随机存取存储器等)上的数据的集合。
[0092]
计算机可读介质包括参与提供可由计算机读取的数据(例如,指令)的任何介质。此类介质可以采用许多形式,所述形式包括但不限于非易失性介质、易失性介质等。非易失性介质包括例如光盘或磁盘和其他永久性存储器。易失性介质包括动态随机存取存储器(dram),其通常构成主存储器。计算机可读介质的常见形式包括例如软盘、软磁盘、硬盘、磁带、任何其他磁性介质、cdrom、dvd、任何其他光学介质、具有孔图案的任何其他物理介质、ram、prom、eprom、快闪、eeprom、任何其他存储器芯片或盒式磁带、或计算机可从中读取的任何其他介质。
[0093]
关于本文所描述的介质、过程、系统、方法等,应理解,尽管已经将此类过程等的步骤描述为按照某个有序序列发生,但是此类过程可通过以不同于本文描述的顺序的顺序执行所描述的步骤来实践。还应理解,可以同时执行某些步骤,可以添加其他步骤,或者可以省略本文所述的某些步骤。换句话说,本文对系统和/或过程的描述是为了示出某些实施例的目的而提供,而决不应被解释为限制所公开的主题。
[0094]
因此,应理解,包括以上描述和附图以及所附权利要求的本公开意图为说明性的而非限制性的。在阅读了以上描述之后,除了所提供的示例之外的许多实施例和应用对于本领域技术人员而言将是明显的。因此,本发明的范围不应当参考以上描述来确定,而是应当参考所附的和/或基于此包括在非临时专利申请中的权利要求连同此类权利要求所赋予权利的等效物的全部范围来确定。设想并预期未来的发展将在本文讨论的技术中发生,并且所公开的系统和方法将并入到此类未来实施例中。总而言之,应理解,所公开的主题能够进行修改和变化。
[0095]
根据本发明,提供了一种系统,所述系统具有:服务器计算机,所述服务器计算机
被编程为:在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,对所述第一部分和所述第二部分进行编码以生成经编码数据;经由无线数据传送将所述经编码数据发送到所述第一计算机和所述第二计算机,和所述第一计算机,所述第一计算机被编程为:从所接收的经编码数据解码所述第二部分;基于所存储的第一部分和所解码的第二部分来更新所述第一计算机的所述操作特征;以及基于更新后的操作特征来操作所述第一计算机。
[0096]
根据一个实施例,所述第一计算机在第一车辆中,并且所述操作特征是车辆操作特征。
[0097]
根据一个实施例,所述服务器计算机还被编程为通过将xor运算应用于所述第一部分和所述第二部分来对所述第一部分和所述第二部分进行编码。
[0098]
根据一个实施例,所述服务器计算机还被编程为:在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部分和所述第二部分进行编码。
[0099]
根据一个实施例,所述服务器计算机还被编程为在确定所述第一计算机和所述第二计算机中的每一者缺少软件数据的第三部分时,向所述第一计算机和所述第二计算机发送所述第三部分。
[0100]
根据一个实施例,所述服务器计算机还被编程为:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
[0101]
根据一个实施例,所述服务器计算机还被编程为:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)软件更新计划未指定对所述第二软件数据的更新时,发送包括从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令的消息。
[0102]
根据一个实施例,所述第一计算机在第一车辆中,并且所述第二计算机在第二车辆中。
[0103]
根据本发明,提供了一种服务器计算机,所述服务器计算机具有处理器和存储器,所述存储器存储可由处理器执行以进行以下操作的指令:在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,对所述第一部分和所述第二部分进行编码以生成经编码数据;并经由无线数据传送将所述经编码数据发送到所述第一计算机和所述第二计算机;其中所述第一计算机被编程为从所接收的经编码数据解码所述第二部分并基于所存储的第一部分和所解码的第二部分来更新所述第一计算机的所述操作特征。
[0104]
根据一个实施例,所述指令还包括用于进行以下操作的指令:通过将xor运算应用于所述第一部分和所述第二部分而对所述第一部分和所述第二部分进行编码。
[0105]
根据一个实施例,所述指令还包括用于进行以下操作的指令:在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部
分和所述第二部分进行编码。
[0106]
根据一个实施例,所述指令还包括用于进行以下操作的指令:在确定所述第一计算机和所述第二计算机中的每一者缺少软件数据的第三部分时,向所述第一计算机和所述第二计算机发送所述第三部分。
[0107]
根据一个实施例,所述指令还包括用于进行以下操作的指令:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
[0108]
根据一个实施例,所述指令还包括用于进行以下操作的指令:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)软件更新计划未指定对所述第二软件数据的更新时,发送包括从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令的消息。
[0109]
根据一个实施例,所述第一计算机在第一车辆中,并且所述第二计算机在第二车辆中。
[0110]
根据本发明,一种方法包括:在确定用于更新第一计算机的操作特征的软件数据的第一部分存储在所述第一计算机中并且所述软件数据的第二部分存储在第二计算机中时,在服务器计算机中对所述第一部分和所述第二部分进行编码以生成经编码数据;经由无线数据传送将所述经编码数据从所述服务器计算机发送到所述第一计算机和所述第二计算机,在所述第一计算机中从所接收的经编码数据解码所述第二部分,基于所存储的第一部分和所解码的第二部分来更新所述第一计算机的所述操作特征;以及基于更新后的操作特征来操作所述第一计算机。
[0111]
在本发明的一个方面,所述编码包括将xor运算应用于所述软件数据的所述第一部分和所述第二部分。
[0112]
在本发明的一个方面,所述方法包括:在确定第一部分大小不同于第二部分大小时,通过添加虚拟数据来调整所述第一部分和所述第二部分中的至少一者;并且然后使用所述第一部分和所述第二部分中的经调整的至少一者对所述第一部分和所述第二部分进行编码。
[0113]
在本发明的一个方面,所述方法包括在确定所述第一计算机和所述第二计算机中的每一者缺少软件数据的第三软件部分时,向所述第一计算机和所述第二计算机发送所述第三部分。
[0114]
在本发明的一个方面,所述方法包括:在确定(i)所述第一计算机将作为用于更新第二操作特征的第二软件数据的一部分的第三部分存储在第一计算机存储器中并且(ii)所述第一计算机存储器缺少用于存储所述第二部分的空间时,向所述第一计算机传输从所述第一计算机存储器移除所述第二软件数据的所述第三部分的指令。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1