1.本发明涉及远程升级技术领域,汽车器远尤其涉及一种汽车控制器远程升级系统、控制可读方法、程升存储设备及可读存储介质。系介质
背景技术:
2.远程升级(ota,统方over-the-air)技术是法设指通过移动通信网络对汽车控制器进行远程管理的技术,简单来说远程升级技术实现分三步:首先将升级程序上传到主控端,备及然后主控端将升级程序无线传输到控制器端,流程最后控制器端自动更新软件。汽车器远其中,控制可读控制器端执行的程升存储操作包括接收升级数据、擦除闪存(flash)、系介质将升级数据写入闪存和校验闪存。统方目前,法设控制器端的备及操作按照顺序执行,需要等待上一个步骤完成才能继续执行下一步的操作,执行效率低,如果升级程序较大,会导致耗时过长从而影响用户体验。
技术实现要素:
3.本发明的主要目的在于提供一种汽车控制器远程升级系统、方法、设备及可读存储介质,旨在解决现有技术中远程升级时控制器端的执行效率低、耗时长的技术问题。
4.第一方面,本发明提供一种汽车控制器远程升级系统,所述汽车控制器远程升级系统包括主控端和控制器端,所述控制器端包括第一处理器核、第二处理器核、共享内存和闪存;
5.所述主控端用于将升级程序分为多个数据包依次发送到所述第一处理器核;
6.所述第一处理器核用于将接收到的一个所述数据包写入所述共享内存,写入完毕后唤起核间通信,并进行下一个所述数据包的接收和写入;
7.所述第二处理器核用于在核间通信唤起后从所述共享内存中读取所述数据包,擦除所述闪存并将所述数据包写入所述闪存。
8.进一步地,一实施例中,所述主控端用于将升级程序的每个编译数据块分为多个数据包依次发送到所述第一处理器核。
9.进一步地,一实施例中,所述第二处理器核还用于将每个所述编译数据块的最后一个所述数据包写入所述闪存后,对所述闪存进行校验。
10.进一步地,一实施例中,所述第二处理器核还用于在校验完毕后记录断点地址;
11.所述第一处理器核和所述第二处理器核还用于在出现错误时中断工作,并将出错信息反馈给所述主控端;
12.所述主控端还用于在接收到所述出错信息后,从所述断点地址开始重新向所述第一处理器核发送所述数据包。
13.进一步地,一实施例中,所述共享内存分为多个内存单元;
14.所述第一处理器核用于将接收到的每个所述数据包按顺序依次写入空闲的所述内存单元,并记录所述内存单元的编号;
15.所述第二处理器核用于在核间通信唤起后根据所述内存单元的编号找到对应的
所述内存单元并读取其中的所述数据包;
16.所述第二处理器核还用于在所述数据包读取完毕后清空对应的所述内存单元。
17.进一步地,一实施例中,所述第一处理器核还用于在完成第i+1个所述数据包的接收和写入,且所述第二处理器核完成第i个所述数据包的读取和写入后,进行第i+2个所述数据包的接收和写入,其中,i为正整数。
18.进一步地,一实施例中,所述第一处理器核通过软件中断唤起核间通信。
19.第二方面,本发明还提供一种汽车控制器远程升级方法,应用于包括主控端和控制器端的汽车控制器远程升级系统,所述控制器端包括第一处理器核、第二处理器核、共享内存和闪存,所述汽车控制器远程升级方法包括:
20.所述主控端将升级程序分为多个数据包依次发送到所述第一处理器核;
21.所述第一处理器核将接收到的一个所述数据包写入所述共享内存,写入完毕后唤起核间通信,并进行下一个所述数据包的接收和写入;
22.所述第二处理器核在核间通信唤起后从所述共享内存中读取所述数据包,擦除所述闪存并将所述数据包写入所述闪存。
23.第三方面,本发明还提供一种汽车控制器远程升级设备,所述汽车控制器远程升级设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的汽车控制器远程升级程序,其中所述汽车控制器远程升级程序被所述处理器执行时,实现上述汽车控制器远程升级方法的步骤。
24.第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有汽车控制器远程升级程序,其中所述汽车控制器远程升级程序被处理器执行时,实现上述汽车控制器远程升级方法的步骤。
25.本发明通过将升级程序分为多个数据包,利用核间通信手段,分配第一处理器核接收数据包并将数据包写入共享内存,第二处理器核从共享内存中读取数据包并进行闪存擦除和数据写入。如此,第一处理器核在接收和写入后续数据包的同时,第二处理器核能够针对之前写入完毕的数据包进行闪存擦除和数据写入,即,数据传输部分的操作和闪存擦除、数据写入部分的操作能够并行执行,从而节省时间,提高了控制器端的执行效率。
附图说明
26.图1为本发明一实施例中汽车控制器远程升级系统的结构示意图;
27.图2为本发明一实施例中汽车控制器远程升级系统的工作流程示意图;
28.图3为本发明一实施例中第一处理器核与第二处理器核的工作时序图;
29.图4为本发明另一实施例中第一处理器核与第二处理器核的工作时序图;
30.图5为本发明一实施例中汽车控制器远程升级方法的流程示意图;
31.图6为本发明一实施例中汽车控制器远程升级设备的硬件结构示意图。
32.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
33.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
34.第一方面,本发明实施例提供了一种汽车控制器远程升级系统。
35.图1示出了本发明一实施例中汽车控制器远程升级系统的结构示意图,图2示出了本发明一实施例中汽车控制器远程升级系统的工作流程示意图。
36.参照图1和图2,一实施例中,汽车控制器远程升级系统包括主控端和控制器端,控制器端包括第一处理器核、第二处理器核、共享内存和闪存。主控端用于将升级程序分为多个数据包依次发送到第一处理器核。第一处理器核用于将接收到的一个数据包写入共享内存,写入完毕后唤起核间通信,并进行下一个数据包的接收和写入。第二处理器核用于在核间通信唤起后从共享内存中读取数据包,擦除闪存并将数据包写入闪存。
37.主控端用于下发升级程序,控制器端为汽车控制器。本实施例中,作为控制器端的汽车控制器采用多核架构的处理器,多个核心共享同一块物理内存区域,实现数据的共享和通信。核间通信是指在多核处理器系统中,不同核心之间进行信息传递和数据交换的过程,此处指通过共享内存进行数据交换。核间通信能够充分利用硬件提供的机制,通信效率高。可选地,第一处理器核通过软件中断唤起核间通信。
38.为节省共享内存的空间、节省传输时间以及满足单次传输数据的上限要求,主控端还需要对数据包进行压缩后再下发,第一处理器核将压缩形式的数据包写入共享内存,第二处理器核在读取压缩形式的数据包后需要对数据包进行解压,再将解压得到的数据写入闪存。
39.举例说明,汽车控制器远程升级系统在升级网关控制器时,tbox(车载联网终端)为主控端,网关控制器为控制器端。tbox通过uds协议将升级程序下发给网关,网关通过uds协议接收和响应tbox,网关在响应36服务时告诉tbox每次能够接收传输的数据包最大值(例如512字节)。tbox根据网关反馈的最大值,将即将下发的hex文件分割成最大值字节大小的数据包,每个数据包通过压缩算法进行压缩。tbox发送将多个数据包依次发送到网关控制器的第一处理器核,第一处理器核将接收到的一个数据包写入共享内存,写入完毕后唤起核间通信,并进行下一个所述数据包的接收和写入。网关控制器的第二处理器核在核间通信唤起后根据第一处理器核的指示,解压共享内存里的数据包,对网关控制器的闪存进行擦除和写入动作。
40.本实施例通过将升级程序分为多个数据包,利用核间通信手段,分配第一处理器核接收数据包并将数据包写入共享内存,第二处理器核从共享内存中读取数据包并进行闪存擦除和数据写入。如此,第一处理器核在接收和写入后续数据包的同时,第二处理器核能够针对之前写入完毕的数据包进行闪存擦除和数据写入,即,数据传输部分的操作和闪存擦除、数据写入部分的操作能够并行执行,从而节省时间,提高了控制器端的执行效率。
41.此外,汽车控制器远程升级系统往往要求在行车过程中可以下发升级数据包,此时需要对汽车控制器的闪存进行操作,而大量读/写闪存数据的操作时间长,如果单核顺序执行,即其他实时性任务需等待闪存操作完成后再执行,则影响系统的实时性。如果单核抢占执行,则需要规划好各任务间的调度时间。而且,闪存操作风险较高,需要较高的操作优先级,但是在行车过程中的其他操作可能要求更高的优先级,与提高闪存操作优先级矛盾。本实施例中闪存操作集中在第二处理器核执行,第一处理器核除了数据传输外还可以进行其他操作,不影响系统的实时性,不需要做复杂的调度规划,也不会产生优先级矛盾的问题。
42.进一步地,一实施例中,主控端用于将升级程序的每个编译数据块分为多个数据
包依次发送到第一处理器核。
43.在编译过程中,编译器会将源代码转换成机器代码,并将这些机器代码组织成多个块(blocks)。每个块通常包含一组相关的指令和数据。这些块可以是函数、全局变量、常量等的代码和数据的组合。例如一个典型的“hex文件”包含多个编译数据块,每个编译数据块由地址和数据组成。这些数据块可以代表程序代码、变量初始化值、设备配置等。本实施例中规定数据包以编译数据块为对象进行划分,有助于数据传输、数据读取和数据写入的有序进行。
44.进一步地,一实施例中,第二处理器核还用于将每个编译数据块的最后一个数据包写入闪存后,对闪存进行校验。
45.继续参照图2,本实施例中,第二处理器核还用于校验闪存,在校验时需要以编译数据块为整体。具体地,第二处理器核每将一个数据包写入闪存,都要判断该数据包是不是当前编译数据块的最后一个数据包,只有在当前编译数据块的最后一个数据包写入完毕后,才对闪存进行校验。可以理解,在第二处理器核校验闪存的同时,第一处理器核可进行数据包的接收和写入,即本实施例中,数据传输部分的操作和闪存擦除、数据写入、闪存校验部分的操作能够并行执行,从而进一步地节省时间,提高控制器端的执行效率。
46.进一步地,一实施例中,第二处理器核还用于在校验完毕后记录断点地址。第一处理器核和第二处理器核还用于在出现错误时中断工作,并将出错信息反馈给主控端。主控端还用于在接收到出错信息后,从断点地址开始重新向第一处理器核发送数据包。
47.本实施例中,第二处理器核在校验闪存后断点地址,断点地址之前的编译数据块的每个数据包均已写入成功且编译数据块整体通过校验,在将下一个编译数据块以数据包为单位逐个传输并写入闪存的过程,若出现错误,则主控端从断点地址开始断点续传,从而节省时间,保证用户体验。出现错误的情况包括第一处理器核从主控端接收数据包或将数据包写入共享内存的过程出现错误,或者第二处理器从共享内存读取数据包、闪存擦除、闪存写入或闪存校验的过程出现错误。
48.进一步地,一实施例中,共享内存分为多个内存单元。第一处理器核用于将接收到的每个数据包按顺序依次写入空闲的内存单元,并记录内存单元的编号。第二处理器核用于在核间通信唤起后根据内存单元的编号找到对应的内存单元并读取其中的数据包。第二处理器核还用于在数据包读取完毕后清空对应的内存单元。
49.本实施例中,将共享内存的存储区域进行划分得到多个内存单元,内存单元的存储空间大小大于等于数据包的大小,一个内存单元用于存储一个完整接收到的数据包,直到这个内存单元的数据包被读取完毕,才能被清空,用作后续接收到的数据包的存储。
50.一方面,第一处理器核通过内存单元的顺序找到空闲的内存单元进行对应数据包的写入,第二处理器核根据第一处理器核发送的内存单元的编号找到存储了对应数据包的内存单元进行数据读取,有助于快速准确寻找到目标位置,从而提高执行效率。
51.另一方面,由于第一处理器核和第二处理器核在共享内存中执行每次操作的目标位置均已确定下来,两者的工作节拍可根据实际处理情况自由分配,不存在特定的对应关系,第一处理器核将当前数据包写入完毕并唤起核间通信后,即可开始下一个数据包的接收和写入,无需等待第二处理器核将上一个数据包读取完毕再开始动作,提高了时间利用率,第一处理器核可利用节省下的时间处理其他工作。
52.图3示出了本发明一实施例中第一处理器核与第二处理器核的工作时序图,图4示出了本发明另一实施例中第一处理器核与第二处理器核的工作时序图。
53.下面以两种情况下的工作时序图举例进行说明。参照图3,在不对共享内存进行划分的情况下,第一处理器核与第二处理器核的工作节拍存在特定的对应关系,即,第一处理器核写入当前数据包时,第二处理器核读取上一个数据包,即使第一处理器核率先完成当前数据包的写入,也需要等待第二处理器核将上一个数据包读取完毕后,再开始下一个数据包的接收和写入。例如,图3中写入数据包2和读取数据包1处于同一时间段,写入数据包3和读取数据包2处于同一时间段,写入数据包4和读取数据包3处于同一时间段,依此类推。
54.由此,一实施例中,第一处理器核还用于在完成第i+1个数据包的接收和写入,且第二处理器核完成第i个数据包的读取和写入后,进行第i+2个数据包的接收和写入,其中,i为正整数。
55.参照图4,在对共享内存进行划分的情况下,第一处理器核与第二处理器核的工作节拍不存在特定的对应关系,第一处理器核将当前数据包写入完毕并唤起核间通信后,即可开始下一个数据包的接收和写入,无需等待第二处理器核将上一个数据包读取完毕再开始动作。例如,图4中在第二处理器核读取数据包1的时间段,第一处理器核不仅完成了数据包2的写入,还完成了数据包3的部分写入,第二处理器核读取数据包2的时间段,第一处理器核完成了数据包3剩余部分的写入,以及数据包4的部分写入。
56.综上所述,本发明通过将升级程序分为多个数据包,利用核间通信手段,分配第一处理器核接收数据包并将数据包写入共享内存,第二处理器核从共享内存中读取数据包并进行闪存擦除和数据写入。如此,第一处理器核在接收和写入后续数据包的同时,第二处理器核能够针对之前写入完毕的数据包进行闪存擦除和数据写入,即,数据传输部分的操作和闪存擦除、数据写入部分的操作能够并行执行,从而节省时间,提高了控制器端的执行效率。
57.第二方面,本发明实施例还提供一种汽车控制器远程升级方法,应用于包括主控端和控制器端的汽车控制器远程升级系统,控制器端包括第一处理器核、第二处理器核、共享内存和闪存。
58.图5示出了本发明一实施例中汽车控制器远程升级方法的流程示意图。
59.参照图5,一实施例中,汽车控制器远程升级方法包括:
60.s11、主控端将升级程序分为多个数据包依次发送到第一处理器核;
61.s12、第一处理器核将接收到的一个数据包写入共享内存,写入完毕后唤起核间通信,并进行下一个数据包的接收和写入;
62.s13、第二处理器核在核间通信唤起后从共享内存中读取数据包,擦除闪存并将数据包写入闪存。
63.进一步地,一实施例中,步骤s11具体包括:
64.主控端将升级程序的每个编译数据块分为多个数据包依次发送到第一处理器核。
65.进一步地,一实施例中,汽车控制器远程升级方法还包括:
66.第二处理器核将每个编译数据块的最后一个数据包写入闪存后,对闪存进行校验。
67.进一步地,一实施例中,在第二处理器核将每个编译数据块的最后一个数据包写
入闪存后,对闪存进行校验的步骤之后还包括:
68.第二处理器核在校验完毕后记录断点地址;
69.第一处理器核和第二处理器核在出现错误时中断工作,并将出错信息反馈给主控端;
70.主控端在接收到出错信息后,从断点地址开始重新向第一处理器核发送数据包。
71.进一步地,一实施例中,共享内存分为多个内存单元;
72.第一处理器核将接收到的每个数据包按顺序依次写入空闲的内存单元,并记录内存单元的编号;
73.第二处理器核在核间通信唤起后根据内存单元的编号找到对应的内存单元并读取其中的数据包,在数据包读取完毕后清空对应的内存单元。
74.进一步地,一实施例中,第一处理器核在完成第i+1个数据包的接收和写入,且第二处理器核完成第i个数据包的读取和写入后,进行第i+2个数据包的接收和写入,其中,i为正整数。
75.进一步地,一实施例中,第一处理器核通过软件中断唤起核间通信。
76.其中,上述汽车控制器远程升级方法中各个步骤的分析与上述汽车控制器远程升级系统中各组分的功能和实现过程相对应,在此处不再一一赘述。
77.第三方面,本发明实施例提供一种汽车控制器远程升级设备,该汽车控制器远程升级设备可以是个人计算机(personalcomputer,pc)、笔记本电脑、服务器等具有数据处理功能的设备。
78.图6示出了本发明一实施例中汽车控制器远程升级设备的硬件结构示意图。
79.参照图6,本发明实施例中,汽车控制器远程升级设备可以包括处理器1001(例如中央处理器centralprocessingunit,cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真wireless-fidelity,wi-fi接口);存储器1005可以是高速随机存取存储器(randomaccessmemory,ram),也可以是稳定的存储器(non-volatilememory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图6中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
80.继续参照图6,图6中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及汽车控制器远程升级程序。本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,并执行以下操作:
81.主控端将升级程序分为多个数据包依次发送到第一处理器核;
82.第一处理器核将接收到的一个数据包写入共享内存,写入完毕后唤起核间通信,并进行下一个数据包的接收和写入;
83.第二处理器核在核间通信唤起后从共享内存中读取数据包,擦除闪存并将数据包写入闪存。
84.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
85.主控端将升级程序的每个编译数据块分为多个数据包依次发送到第一处理器核。
86.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
87.第二处理器核将每个编译数据块的最后一个数据包写入闪存后,对闪存进行校验。
88.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
89.第二处理器核在校验完毕后记录断点地址;
90.第一处理器核和第二处理器核在出现错误时中断工作,并将出错信息反馈给主控端;
91.主控端在接收到出错信息后,从断点地址开始重新向第一处理器核发送数据包。
92.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
93.第一处理器核将接收到的每个数据包按顺序依次写入空闲的内存单元,并记录内存单元的编号;
94.第二处理器核在核间通信唤起后根据内存单元的编号找到对应的内存单元并读取其中的数据包,在数据包读取完毕后清空对应的内存单元;
95.其中,共享内存分为多个内存单元。
96.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
97.第一处理器核在完成第i+1个数据包的接收和写入,且第二处理器核完成第i个数据包的读取和写入后,进行第i+2个数据包的接收和写入,其中,i为正整数。
98.本发明设备通过处理器1001调用存储器1005中存储的汽车控制器远程升级程序,还执行以下操作:
99.第一处理器核通过软件中断唤起核间通信。
100.第四方面,本发明实施例还提供一种可读存储介质。
101.本发明可读存储介质上存储有汽车控制器远程升级程序,其中所述汽车控制器远程升级程序被处理器执行时实现如下操作:
102.主控端将升级程序分为多个数据包依次发送到第一处理器核;
103.第一处理器核将接收到的一个数据包写入共享内存,写入完毕后唤起核间通信,并进行下一个数据包的接收和写入;
104.第二处理器核在核间通信唤起后从共享内存中读取数据包,擦除闪存并将数据包写入闪存。
105.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
106.主控端将升级程序的每个编译数据块分为多个数据包依次发送到第一处理器核。
107.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
108.第二处理器核将每个编译数据块的最后一个数据包写入闪存后,对闪存进行校验。
109.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
110.第二处理器核在校验完毕后记录断点地址;
111.第一处理器核和第二处理器核在出现错误时中断工作,并将出错信息反馈给主控端;
112.主控端在接收到出错信息后,从断点地址开始重新向第一处理器核发送数据包。
113.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
114.第一处理器核将接收到的每个数据包按顺序依次写入空闲的内存单元,并记录内存单元的编号;
115.第二处理器核在核间通信唤起后根据内存单元的编号找到对应的内存单元并读取其中的数据包,在数据包读取完毕后清空对应的内存单元;
116.其中,共享内存分为多个内存单元。
117.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
118.第一处理器核在完成第i+1个数据包的接收和写入,且第二处理器核完成第i个数据包的读取和写入后,进行第i+2个数据包的接收和写入,其中,i为正整数。
119.进一步地,汽车控制器远程升级程序被处理器执行时还实现如下操作:
120.第一处理器核通过软件中断唤起核间通信。
121.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
122.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
123.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
124.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。