一種車輛的數據處理方法、ECU、車輛、及存儲介質與流程
一種車輛的數據處理方法、ecu、車輛、及存儲介質
技術領域
1.本技術涉及車輛技術領域,尤其涉及一種車輛的數據處理方法、ecu、車輛、及存儲介質。
背景技術:
2.汽車的電子控制器單元(electronic control unit,ecu)又稱汽車的“行車電腦”,它利用各種傳感器和總線的數據來判斷車輛狀態和獲取司機的意圖,并通過執行器來控制汽車行駛以及實現其它各種行車功能。ecu通常包括處理器與內存,在相關技術中,受限于處理器的性能與內存的容量,ecu往往難以實現復雜的行車功能,難以滿足對車輛日益增長的功能需求。
技術實現要素:
3.本技術提供了一種車輛的數據處理方法、ecu、車輛、及存儲介質。
4.根據本技術的第一方面,提供一種車輛的數據處理方法,所述方法應用于搭載在所述車輛的ecu中,所述ecu用于執行行車功能,所述行車功能包括至少一個第一行車功能和至少一個第二行車功能;所述第一行車功能在所述車輛中的運行需求高于所述第二行車功能的運行需求;所述ecu包括內存和外置存儲器;所述內存存儲有可實現所述第一行車功能的至少一個第一程序;所述外置存儲器存儲有可實現所述第二行車功能的至少一個第二程序,所述方法包括:
5.接收來自所述車輛中其他ecu和/或外部設備的觸發請求,所述觸發請求指示所述ecu待執行的目標行車功能;
6.若所述目標行車功能為所述第一行車功能,運行存儲在所述內存中的所述目標行車功能對應的第一程序;
7.若所述目標行車功能為所述第二行車功能,從所述外置存儲器中將所述目標行車功能對應的第二程序加載到內存,并運行所述第二程序。
8.在一些例子中,所述第一程序使用第一編程語言編寫,所述第二程序使用第二編程語言編寫;所述ecu能夠識別使用所述第一編程語言編寫的程序中的指令,且無法識別使用所述第二編程語言編寫的程序中的指令;
9.在所述運行所述第二程序之前,還包括:
10.利用預存的所述第二編程語言與所述第一編程語言之間的指令轉換關系,將所述第二程序中的指令轉換為使用所述第一編程語言編寫的指令。
11.在一些例子中,所述外置存儲器存儲有多個第二程序,所述多個第二程序中的至少部分使用第一編程語言編寫,另一部分使用第二編程語言編寫;所述ecu能夠識別使用所述第一編程語言編寫的程序中的指令,且無法識別使用所述第二編程語言編寫的程序中的指令;
12.在所述運行所述目標行車功能對應的第二程序之前,還包括:
13.如果基于所述第二程序中預設的標志位和/或程序文件的拓展名,確定所述第二程序使用第二編程語言編寫,利用預存的所述第二編程語言與所述第一編程語言之間的指令轉換關系,將所述第二程序中的指令轉換為使用所述第一編程語言編寫的指令。
14.在一些例子中,所述ecu安裝有解析組件,所述解析組件用于利用預存的所述第二編程語言與所述第一編程語言之間的指令轉換關系,轉換所述第二程序中的指令;
15.其中,所述解析組件能夠解析的第二程序的指令復雜度與所述ecu的運行資源呈正相關關系。
16.在一些例子中,所述行車功能的運行需求與所述行車功能相應的程序的運行頻率、所述行車功能的實時性需求、和/或所述行車功能與駕駛行為的相關度正相關。
17.在一些例子中,所述ecu記錄有所述第一程序的運行次數和所述第二程序的運行次數;
18.所述方法還包括:
19.在到達預設的更新周期后,根據所述第一程序的運行次數獲取各個所述第一程序在預設時間段內的運行頻率,以及根據所述第二程序的運行次數獲取各個第二程序在預設時間段內的運行頻率;
20.基于所述運行頻率更新各個所述第一程序與各個所述第二程序的存儲位置,以使存儲在所述內存中的第一程序的運行頻率,高于存儲在所述外置存儲器的第二程序的運行頻率。
21.在一些例子中,在滿足預設條件后,將所述第二程序從所述內存中刪除;所述預設條件包括:所述內存的剩余可用容量小于或等于預設容量、在預設時段內未接收到針對所述目標行車功能的觸發請求、所述內存的利用率大于或等于預設比值、所述目標行車功能對應的第二程序已運行預設時長、或者所述目標行車功能對應的第二程序已運行結束。
22.在一些例子中,所述ecu搭載有服務端;所述其他ecu搭載有客戶端;其中,搭載有服務端的ecu可靠程度高于搭載有客戶端的ecu的可靠程度、且搭載有服務端的ecu的性能低于搭載有客戶端的ecu的性能;
23.所述服務端與所述客戶端基于some/ip協議通信,所述方法還包括:
24.所述服務端基于所述some/ip協議,向客戶端廣播所述行車功能,以使所述客戶端向所述服務端發送用于訂閱行車功能的所述觸發請求。
25.在一些例子中,所述ecu包括有mcu和外置存儲器,所述內存為所述mcu的內置存儲器;所述mcu和所述外置存儲器為獨立的芯片,所述mcu和所述外置存儲器集成在同一電路板上。
26.根據本技術的第二方面,提供一種ecu,搭載在車輛中,所述ecu用于執行行車功能,所述行車功能包括至少一個第一行車功能和至少一個第二行車功能;所述第一行車功能在所述車輛中的運行需求高于所述第二行車功能的運行需求;所述ecu包括:
27.外置存儲器,存儲有可實現所述第二行車功能的至少一個第二程序;
28.mcu,包括處理器與內存;所述內存存儲有可實現第一行車功能的至少一個第一程序;所述處理器被配置為:
29.接收來自其他ecu和/或外部設備的觸發請求,所述觸發請求指示所述ecu待執行的目標行車功能;
30.若所述目標行車功能為所述第一行車功能,運行存儲在所述內存中的所述目標行車功能對應的第一程序;
31.若所述目標行車功能為所述第二行車功能,從所述外置存儲器中將所述目標行車功能對應的第二程序加載到內存,并運行所述第二程序。
32.根據本技術的第三方面,提供一種車輛,所述車輛包括:
33.車身;
34.動力組件,用于驅動所述車輛運動;
35.以及如上述第二方面所述的ecu。
36.根據本技術的第四方面,提供一種計算機可讀存儲介質,所述計算機可讀存儲介質上存儲有若干計算機指令,所述計算機指令被執行時執行上述第一方面任一所述的方法。
37.本技術的實施例提供的技術方案可以包括以下有益效果:
38.本技術提供了一種車輛的數據處理方法、ecu、車輛、及存儲介質,設計了用于執行行車功能的ecu包括內存與外置存儲器。并將不同運行需求的行車功能對應的程序存儲到不同存儲設備中。將可實現運行需求高的第一行車功能的第一程序存儲在內存中,將可實現運行需求低的第二行車功能的第二程序存儲在外置存儲器中。此外,來自其他ecu和/或外部設備的觸發請求指示有ecu待執行的目標行車功能。若目標行車功能為第一行車功能時,可以直接從內存中讀取第一程序來運行,避免反復從外置存儲器中加載第一程序。若目標行車功能為第二行車功能時,從外置存儲器中加載第二程序至內存,避免了對內存存儲空間的占用。一方面,通過新增外置存儲器來存儲行車功能對應的程序,ecu所實現的行車功能不再受限于內存性能,豐富了ecu所能實現的行車功能。另一方面,根據不同行車功能的運行需求,將不同的行車功能對應的程序存儲到不同存儲設備中,能合理安排存儲空間。
39.應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本技術。
附圖說明
40.此處的附圖被并入說明書中并構成本技術的一部分,示出了符合本技術的實施例,并與說明書一起用于解釋本技術的原理。
41.圖1是本技術根據一實施例示出的一種車輛的數據處理方法的流程圖。
42.圖2是本技術根據一實施例示出的一種ecu的示意圖。
43.圖3a是本技術根據另一實施例示出的一種車輛的數據處理方法的流程圖。
44.圖3b是本技術根據另一實施例示出的一種車輛的數據處理方法的流程圖。
45.圖3c是本技術根據另一實施例示出的一種車輛的數據處理方法的流程圖。
46.圖4是本技術根據另一實施例示出的一種車輛的數據處理方法的流程圖。
47.圖5是本技術根據一實施例示出的一種車輛的結構示意圖。
具體實施方式
48.這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例
中所描述的實施方式并不代表與本技術相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本技術的一些方面相一致的裝置和方法的例子。
49.在本技術使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本技術。在本技術和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯的列出項目的任何或所有可能組合。
50.應當理解,盡管在本技術可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離本技術范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在
……
時”或“當
……
時”或“響應于確定”。
51.汽車的電子控制器單元(electronic control unit,ecu)又稱汽車的“行車電腦”,它利用各種傳感器和總線的數據來判斷車輛狀態和獲取司機的意圖,并通過執行器來控制汽車行駛以及實現其它各種行車功能。ecu通常包括處理器與內存,運行有嵌入式軟件。在相關技術中,受限于處理器的性能與內存的容量,ecu往往難以實現復雜的行車功能,難以滿足對車輛日益增長的功能需求。
52.為此,本技術提出了一種車輛的數據處理方法,應用于搭載在車輛的ecu中。該ecu用于執行行車功能,而行車功能則包括至少一個第一行車功能與至少一個第二行車功能。其中,第一行車功能在車輛中的運行需求高于第二行車功能的運行需求。本技術設計了ecu包括內存與外置存儲器。可實現第一行車功能的至少一個第一程序存儲在內存中;可實現第二行車功能的至少一個第二程序存儲在外置存儲器中。此外,ecu還包括處理器,處理器可以分別與內存以及外置存儲器連接。如此上述方法可以由ecu中的處理器執行,具體包括如圖1所示的步驟:
53.步驟110:接收來自其他ecu和/或外部設備的觸發請求,所述觸發請求指示所述ecu待執行的目標行車功能;
54.步驟120:若所述目標行車功能為所述第一行車功能,運行存儲在所述內存中的所述目標行車功能對應的第一程序;
55.步驟130:若所述目標行車功能為所述第二行車功能,從所述外置存儲器中將所述目標行車功能對應的第二程序加載到內存,并運行所述第二程序。
56.ecu可以實現多種行車功能,包括但不限于行車數據轉發功能、雷達控制功能、ecu診斷功能、ota(over-the-air technology,空中下載技術)升級功能、車速檢測功能、電量查詢功能、續航里程查詢功能等。根據行車功能對車輛的運行需求,可以將行車功能劃分為運行需求高的第一行車功能與運行需求低的第二行車功能。其中,第一行車功能可以包括一個或一個以上,同樣第二行車功能可以包括一個或一個以上。一個行車功能可以對應一個程序,也即通過運行一個程序可以實現行車功能。一個行車功能也可以對應于多個程序,也即通過運行多個程序后才能實現行車功能。
57.行車功能的運行需求可以與以下一種或多種參數正相關:
58.(1)行車功能相應的程序的運行頻率。行車功能相應的程序的運行頻率越高,該行車功能的運行需求越高。作為例子,周期性運行的行車功能的運行需求,高于偶爾運行的行
車功能的運行需求。例如,車輛通常搭載有諸如激光雷達等外部傳感器來探測車輛周圍環境是否存在障礙物。ecu需要周期性地對環境障礙物進行感知。又例如,當接收到ota升級指令時,ecu會運行升級程序以完成汽車系統和/或部分軟件的升級,這樣的升級程序是偶爾運行的。因此,升級功能的運行需求低于對環境障礙物感知功能的運行需求。
59.(2)行車功能的實時性需求。行車功能的實時性需求越高,其運行需求越高。例如,車內溫度調節功能的實時性需求低于對環境障礙物感知功能的實時性需求,因此,車內溫度調節功能的運行需求低于對環境障礙物感知功能的運行需求。
60.(3)行車功能與駕駛行為的相關度。行車功能與駕駛行為的相關度越高,該行車功能的運行需求越高。例如音樂播放功能與駕駛行為的相關度較低,而獲取當前行駛速度功能與駕駛行為的相關度較高。因此音樂播放功能的運行需求低于行駛速度獲取功能的運行需求。
61.為了豐富ecu所能實現的行車功能,本技術設計了ecu包括處理器、內存與外置存儲器。其中,處理器分別與內存以及外置存儲器連接。外置存儲器可以包括一個或以上。在一些實施例中,如圖2所示,ecu 200包括mcu 210和外置存儲器220。其中,mcu(microcontroller unit,微控制單元)又稱單片微型計算機(single chip microcomputer)或者單片機,是把中央處理器(central process unit;cpu)的頻率與規格做適當縮減,并將內存(memory)等組件整合在單一芯片上,形成芯片級的計算機。如圖2所示,mcu 210包括cpu 211與內存212。作為例子,上述一種車輛的數據處理方法,可以由cpu 211執行。內存212是mcu 210的內置存儲器。mcu 210和外置存儲器220是獨立的芯片,且集成在同一電路板上。
62.不同運行需求的行車功能對應的程序存儲在不同的存儲設備中。可實現運行需求高的第一行車功能的第一程序存儲在內存中,可實現運行需求低的第二行車功能的第二程序存儲在外置存儲器中。當接收到觸發請求時,觸發請求指示有ecu待執行的目標行車功能。根據觸發請求可以確定從內存還是存儲設備中獲取相應的程序。
63.在一些實施例中,ecu可以預存有行車功能與對應程序的存儲位置的映射關系。映射關系可以存儲在內存和/或外置存儲器中。ecu可以根據觸發請求所指示的目標行車功能,從映射關系中確定目標行車功能對應的程序的目標存儲位置,并從目標存儲位置中獲取以及運行相應的程序,以執行目標行車功能。
64.在另一些實施例中,觸發請求還可以攜帶有目標行車功能對應的程序的存儲位置信息。ecu基于存儲位置信息,可以從目標存儲位置中獲取以及運行程序,以執行目標行車功能。
65.作為例子,存儲位置信息可以指示目標行車功能對應的程序所在的存儲器。同時,觸發請求還攜帶有目標行車功能對應的程序名字,如此,ecu可以遍歷存儲位置信息所指示的存儲器,根據觸發請求攜帶的程序名字查詢目標行車功能對應的程序。
66.作為另一個例子,存儲位置信息可以指示目標行車功能對應的程序在內存或外置存儲器中的存儲地址。如此,ecu可以直接根據存儲位置信息所指示的存儲地址獲取相應的程序。
67.若目標行車功能為第一行車功能時,可以直接從內存中讀取第一程序來運行,避免反復從外置存儲器中加載第一程序。若目標行車功能為第二行車功能時,從外置存儲器
中加載第二程序至內存,并從內存中讀取第二程序來運行,避免了對內存存儲空間的占用。
68.如此,基于上述的設計,一方面,通過新增外置存儲器來存儲行車功能對應的程序,ecu所實現的行車功能不再受限于內存性能,豐富并擴展了ecu所能實現的行車功能。另一方面,根據不同行車功能的運行需求,將不同的行車功能對應的程序存儲到不同存儲設備中,能合理安排存儲空間。同時,從軟件升級的角度來說,技術人員可以根據實際需要隨時在外置存儲器中更換或追加新的行車功能對應的第二程序,而無需改寫ecu的內存中已寫入的嵌入式軟件。使得在有限的硬件資源中實現無限的行車功能。
69.在第二程序運行結束后,為了節約內存的存儲空間,在一些實施例中,可以將第二程序從內存中刪除。在另一些實施例中,可以在滿足以下一種或多種預設條件后,再將第二程序從內存中刪除:
70.(1)內存的剩余可用容量小于或等于預設容量。
71.(2)內存的利用率大于或等于預設比值。
72.為了保證程序的運行,內存需要留有足夠的容量以存放程序運行時產生的中間數據。因此當內存的剩余可用容量小于或等于預設容量,或者內存的利用率大于或等于預設比值時,為了不對程序運行造成影響,可以將第二程序從內存中刪除。
73.(3)在預設時段內未接收到針對目標行車功能的觸發請求。為了避免反復從外置存儲器中加載第二程序,當第二程序完成運行后,可以等待一段預設時段。若預設時段內都未接收到針對該目標行車功能的觸發請求,則出于節約內存存儲空間的考慮,可以將第二程序從內存中刪除。其中,預設時段可以由本領域技術人員根據實際需要確定。
74.(4)第二程序已運行預設時長。例如,第二程序可以是用于進行數據采集的程序。若車輛只需要一定數量的采集數據以進行后續計算處理,則可以設定第二程序的運行時長。當第二程序已經運行預設時長時,則將第二程序從內存中刪除,以終止第二程序的運行。
75.程序可以使用不同的編程語言編寫。不同編程語言對程序開發人員有不同的編寫能力要求。然而,cpu往往只能識別某種特定編程語言(如c語言)所編寫的程序中的指令,若程序使用其他編程語言編寫,則在運行該程序前,需要先對程序進行轉換處理。又或者說,cpu內部存儲有cpu指令集,是對cpu運算進行優化、指導的硬程序。系統或程序的每一個指令,都需要cpu根據cpu指令集來完成。若程序編寫時并未使用cpu指令集,則需要先對程序進行轉換處理。
76.在一些實施例中,第一程序與第二程序均使用第一編程語言編寫。其中,ecu能夠識別使用第一編程語言編寫的程序中的指令。也即ecu能夠識別第一程序與第二程序中的指令,因此ecu可以直接運行第一程序與第二程序。作為例子,第一編程語言可以是c語言,利用c語言編寫的程序中的指令為cpu指令集中的指令,因此ecu中的cpu可以直接執行。其中,第二程序可以是程序開發人員直接使用第一編程語言編寫的,也可以是程序開發人員使用其他編程語言,如腳本語言編寫后,再通過腳本解析器解析為由第一編程語言編寫的第二程序。
77.如此,上述步驟130可以包括如圖3a所示的步驟:
78.步驟310:若所述目標行車功能為所述第二行車功能,根據觸發請求攜帶的第二程序的程序名字,遍歷外置存儲器,以檢查第二程序是否存在;
79.若是,則執行步驟321;若否,則執行步驟322。
80.步驟321:分配內存,并從外置存儲器中將第二程序加載到分配的內存;
81.步驟322:輸出錯誤提示信息。
82.步驟340:運行內存中的第二程序;
83.步驟350:在第二程序運行結束后,將第二程序從內存中刪除,以釋放內存。
84.在一些實施例中,第一程序使用第一編程語言編寫;第二程序使用第二編程語言編寫。其中,ecu能夠識別使用第一編程語言編寫的程序中的指令,且無法識別使用第二編程語言編寫的程序中的指令。也即ecu能夠識別第一程序中的指令,且無法識別第二程序中的指令。因此ecu可以直接運行第一程序。其中,第二編程語言可以是腳本語言。如此,在運行第二程序之前,可以利用預存的第二編程語言與第一編程語言之間的指令轉換關系,將第二程序中的指令轉換為使用第一編程語言編寫的指令。也即,將第二程序中的指令轉換為cpu指令集中的指令,使得ecu中的cpu可以識別轉換后的第二程序中的指令。
85.如此,上述步驟130可以包括如圖3b所示的步驟:
86.步驟310:若所述目標行車功能為所述第二行車功能,根據觸發請求攜帶的第二程序的程序名字,遍歷外置存儲器,以檢查第二程序是否存在;
87.若是,則執行步驟321;若否,則執行步驟322。
88.步驟321:分配內存,并從外置存儲器中將第二程序加載到分配的內存;
89.步驟322:輸出錯誤提示信息。
90.步驟330:利用預存的第二編程語言與第一編程語言之間的指令轉換關系,將第二程序中的指令轉換為使用第一編程語言編寫的指令;
91.步驟340:運行內存中的第二程序;
92.步驟350:在第二程序運行結束后,將第二程序從內存中刪除,以釋放內存。
93.在另一些實施例中,外置存儲器存儲有多個第二程序,且多個第二程序中的至少部分使用第一編程語言編寫,另一部分使用第二語言編寫。其中,ecu能夠識別使用第一編程語言編寫的程序中的指令,且無法識別使用第二編程語言編寫的程序中的指令。如此,ecu在運行第二程序之前,還需要判斷第二程序是否能夠被識別。
94.在一些實施例中,可以通過第二程序中預設的標志位和/或程序文件的拓展名來判斷。作為例子,第二程序中可以設有標志位用于標識第二程序是否使用第二編程語言編寫。例如,若標志位為1,代表第二程序使用第一編程語言編寫,因此能夠被識別;若標志位為0,代表第二程序不是使用第一編程語言編寫,而是使用第二編程語言編寫,不能夠被識別。作為例子,使用第一編程語言編寫的第二程序,對應的程序文件為某一設定格式。根據程序文件的拓展名,可以確定程序文件的格式,從而判斷相應的第二程序是否使用第一編程語言編寫。因此,可以通過第二程序的程序文件的拓展名來判斷第二程序是否使用第二編程語言編寫。若第二程序的程序文件的拓展名為預設的拓展名,則判斷第二程序使用第一編程語言編寫,否則不是使用第一編程語言編寫,而是使用第二編程語言編寫。
95.當基于第二程序中預設的標志位和/或程序文件的拓展名,確定所述第二程序使用第二編程語言編寫時,在運行第二程序之前,可以利用預存的第二編程語言與第一編程語言之間的指令轉換關系,將第二程序中的指令轉換為使用第一編程語言編寫的指令。也即,將第二程序中的指令轉換為cpu指令集中的指令,使得ecu中的cpu可以識別轉換后的第
二程序中的指令。
96.如此,上述步驟130可以包括如圖3c所示的步驟:
97.步驟310:若所述目標行車功能為所述第二行車功能,根據觸發請求攜帶的第二程序的程序名字,遍歷外置存儲器,以檢查第二程序是否存在;
98.若是,則執行步驟321;若否,則執行步驟322。
99.步驟321:分配內存,并從外置存儲器中將第二程序加載到分配的內存;
100.步驟322:輸出錯誤提示信息。
101.步驟331:基于第二程序中預設的標志位和/或程序文件的拓展名,確定所述第二程序是否使用第二編程語言編寫;
102.若是,則執行步驟332;若否,則執行步驟340。
103.步驟332:利用預存的第二編程語言與第一編程語言之間的指令轉換關系,將第二程序中的指令轉換為使用第一編程語言編寫的指令;
104.步驟340:運行內存中的第二程序;
105.步驟350:在第二程序運行結束后,將第二程序從內存中刪除,以釋放內存。
106.基于圖3b與圖3c記載的任一實施例,ecu中還安裝有解析組件。例如,ecu的內存中還存儲有解析組件。解析組件用于利用預存的第二編程語言與第一編程語言之間的指令轉換關系,轉換第二程序中的指令。其中,解析組件能夠解析第二程序的指令復雜度與ecu的運行資源呈正相關關系。作為例子,解析組件可以是lua解析器、java虛擬機等。解析組件存儲在內存中,內存存儲空間的大小決定了所使用的解析組件的大小。因此,需要根據內存存儲空間的大小選擇相應的解析組件。若解析組件過小,其解析功能可能會較差,使得部分第二程序的指令無法通過解析組件進行轉換。若解析組件過大,則占用較大的存儲空間,影響第二程序的加載以及程序的運行。本領域技術人員可以根據內存存儲空間的大小選擇相應的腳本解析器作為解析組件,本技術在此不做限制。
107.上文提供了第二程序使用第一編程語言和/或第二編程語言編寫時的不同實施例。以第一編程語言為c語言,第二編程語言為其他腳本語言為例,c語言比較復雜,對技術人員要求較高。相應地,其他腳本語言相對簡單,比較容易掌握。因此,存儲在外置存儲器中的第二程序若使用其他腳本語言編寫,且在加載到內存后再將第二程序中的指令轉換為使用c語言編寫的指令,能夠有效降低程序開發與維護的成本,同時也降低了對編寫第二程序的技術人員的要求。
108.在一些實施例中,本技術提供的一種車輛的數據處理方法,還包括如圖4所示的步驟:
109.步驟410:在到達預設的更新周期后,根據所述第一程序的運行次數獲取各個所述第一程序在預設時間段內的運行頻率,以及根據所述第二程序的運行次數獲取各個第二程序在預設時間段內的運行頻率;
110.步驟420:基于所述運行頻率更新各個所述第一程序與各個所述第二程序的存儲位置,以使存儲在所述內存中的第一程序的運行頻率,高于存儲在所述外置存儲器的第二程序的運行頻率。
111.其中,更新周期可以由本領域技術人員根據實際需要進行設置,例如一周、一個月等。各個第一程序與各個第二程序的運行次數可以存儲在內存中,也可以存儲在外置存儲
器中。根據每個程序的運行次數,可以分別確定各個程序的運行頻率。
112.隨后,基于各個程序在更新周期中的運行頻率,可以更新各個程序的存儲位置。作為例子,可以根據內存存儲空間的大小,按照運行頻率從高至低選取若干程序作為第一程序存儲在內存中。存儲有第一程序后的內存的剩余可用空間大于預設閾值,使得內存有足夠的剩余可用空間用于加載第二程序以及用于運行程序。其余的程序則作為第二程序存儲在外置存儲器中。
113.作為另一個例子,在分別確定各個第一程序與各個第二程序的運行頻率后,判斷是否存在第二程序的運行頻率大于第一程序的運行頻率。若是,則將運行頻率小于第二程序運行頻率的目標第一程序作為第二程序存儲至外置存儲器,并將運行頻率大于目標第一程序運行頻率的目標第二程序作為第一程序存儲至內存中。
114.其中,若目標第二程序使用第二編程語言編寫,則可以將目標第二程序通過上述實施例提供的指令轉換方法進行轉換后再存儲到內存中。在本實施例中,通過定期更新各程序的存儲位置,可以保證存儲空間的合理安排。避免對運行頻率高的程序反復從外置存儲器中加載,以及避免運行頻率低的程序對內存的占用。
115.關于觸發請求的發送方,在一些實施例中,觸發請求可以由外部設備向ecu發送。例如外部設備可以是ecu檢測儀。當ecu檢測儀與車輛連接后,可以向ecu發送檢測請求,檢測請求中攜帶ecu待執行的檢測程序,使ecu從外置存儲器中加載檢測程序到內存并運行。
116.在一些實施例中,車輛搭載的多個ecu用于執行不同的行車功能。其中,部分ecu的cpu主頻較高,cpu所包括的核心(core)較多,相應地ecu的內存容量也較大,這樣的ecu性能較高。但相應地,一方面由于高性能cpu和大容量內存使用了比較新的芯片制程和封裝工藝,芯片的安全等級較低,達不到車規高安全等級的要求,另一方面相比于高安全等級的芯片更容易發生故障,導致相應的行車功能失效,導致高性能ecu反而可靠程度較低。為了保證車輛正常行駛,一些關鍵的行車功能往往由安全等級較高的ecu執行。但對于安全等級較高的ecu,為了保證其可靠程度,不容易發生故障,使用的芯片往往會采用更成熟的芯片制程和封裝工藝,但這樣的ecu性能相對較低。因此,安全等級高的ecu,可靠程度較高,但ecu性能較差,只能實現較少的關鍵的行車功能。
117.而在本技術中,通過在ecu增添外置存儲器,使得安全等級高的ecu能實現更多的行車功能。改進后的ecu安全等級高,穩定程度較好,同時還能實現更多的行車功能。如此,利用高安全等級ecu穩定程度高的特點,安全等級高、穩定程度高、但性能較低的ecu可以搭載有服務端,其他安全等級低、穩定程度低、但性能較高的ecu可以搭載有客戶端。服務端與客戶端基于some/ip協議通信。some/ip全稱為scalable service-oriented middleware over ip,some/ip協議在osi七層網絡結構中位于應用層,是一種面向服務的可伸縮的中間件。又或者,服務端與客戶端基于some/ip協議與服務發現協議(service discovery,sd)通信。some/ip協議與服務發現協議簡稱some/ip-sd協議。
118.服務端用于提供服務,客戶端用于調用服務。利用車載以太網提供的soa機制(service-oriented architecture,面向服務的結構),服務端可以將自身所能實現的行車功能通過some/ip協議或some/ip-sd協議在車身網絡中廣播。處于車身網絡中的客戶端在收到到發布的消息后,可以根據自身需求向服務端發送用于訂閱行車功能的觸發請求,使得服務端向訂閱方提供相應的行車功能。
119.本技術提供了一種車輛的數據處理方法、ecu、車輛、及存儲介質,設計了用于執行行車功能的ecu包括內存與外置存儲器。并將不同運行需求的行車功能對應的程序存儲到不同存儲設備中。將可實現運行需求高的第一行車功能的第一程序存儲在內存中,將可實現運行需求低的第二行車功能的第二程序存儲在外置存儲器中。此外,來自其他ecu和/或外部設備的觸發請求指示有ecu待執行的目標行車功能。若目標行車功能為第一行車功能時,可以直接從內存中讀取第一程序來運行,避免反復從外置存儲器中加載第一程序。若目標行車功能為第二行車功能時,從外置存儲器中加載第二程序至內存,避免了對內存存儲空間的占用。一方面,通過新增外置存儲器來存儲行車功能對應的程序,ecu所實現的行車功能不再受限于內存性能,豐富了ecu所能實現的行車功能。另一方面,根據不同行車功能的運行需求,將不同的行車功能對應的程序存儲到不同存儲設備中,能合理安排存儲空間。
120.基于上述任意實施例所述的一種車輛的數據處理方法,本技術還提供了如圖2所示的一種ecu 200。該ecu 200搭載在車輛中,用于執行行車功能。行車功能包括至少一個第一行車功能和至少一個第二行車功能,且第一行車功能在所述車輛中的運行需求高于所述第二行車功能的運行需求。如圖2所示,ecu200包括mcu 210和外置存儲器220。其中,外置存儲器220存儲有可實現第二行車功能的至少一個第二程序;mcu 210包括處理器(如cpu 211)與內存212。內存212存儲有可實現第一行車功能的至少一個第一程序,所述處理器被配置為執行上述任意一項所述的數據處理方法。
121.示例性的,所述處理器包括cpu11,所述cpu 211被配置為:
122.接收來自其他ecu和/或外部設備的觸發請求,所述觸發請求指示所述ecu待執行的目標行車功能;
123.若所述目標行車功能為所述第一行車功能,運行存儲在所述內存中的所述目標行車功能對應的第一程序;
124.若所述目標行車功能為所述第二行車功能,從所述外置存儲器中將所述目標行車功能對應的第二程序加載到內存,并運行所述第二程序。
125.當然,所述處理器也可以是其他類型的處理器,如數字信號處理器(digital signal processor,dsp)、專用集成電路(application specific integrated circuit,asic)或者現成可編程門陣列(field-programmable gate array,fpga)等。
126.基于上述任意實施例所述的一種車輛的數據處理方法,本技術還提供了如圖5所示的一種車輛的結構示意圖。如圖5,在硬件層面,該車輛包括車身;動力組件,用于驅動車輛運動;以及如圖2所示的ecu。如圖2所示,ecu 200包括mcu 210和外置存儲器220。其中,外置存儲器220存儲有可實現所述第二行車功能的至少一個第二程序;mcu 210包括cpu(處理器)211與內存212。內存212存儲有可實現第一行車功能的至少一個第一程序,cpu 211被配置為:
127.接收來自其他ecu和/或外部設備的觸發請求,所述觸發請求指示所述ecu待執行的目標行車功能;
128.若所述目標行車功能為所述第一行車功能,運行存儲在所述內存中的所述目標行車功能對應的第一程序;
129.若所述目標行車功能為所述第二行車功能,從所述外置存儲器中將所述目標行車功能對應的第二程序加載到內存,并運行所述第二程序。
130.基于上述任意實施例所述的一種車輛的數據處理方法,本技術還提供了一種計算機程序產品,包括計算機程序,計算機程序被處理器執行時可用于執行上述任意實施例所述的方法。
131.基于上述任意實施例所述的一種車輛的數據處理方法,本技術還提供了一種計算機存儲介質,存儲介質存儲有計算機程序,計算機程序被處理器執行時可用于執行上述任意實施例所述的方法。
132.上述對本技術特定實施例進行了描述。其它實施例在所附權利要求書的范圍內。在一些情況下,在權利要求書中記載的動作或步驟可以按照不同于實施例中的順序來執行并且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和并行處理也是可以的或者可能是有利的。
133.本領域技術人員在考慮說明書及實踐這里申請的發明后,將容易想到本技術的其它實施方案。本技術旨在涵蓋本技術的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本技術的一般性原理并包括本技術未申請的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本技術的真正范圍和精神由下面的權利要求指出。
