說明性的實施例總體上涉及用于車輛軟件更新安裝的方法和設備。
背景技術:
車輛遠程信息處理單元以及車輛計算和信息娛樂系統(tǒng)在現(xiàn)代車輛中高度普及。這些系統(tǒng)允許集成來自遠程源的應用、車輛中的媒體和內容的播放、與遠程源的通信,并通常提供更良好的駕駛員體驗。由于這些系統(tǒng)和其它車輛電子控制單元(ecu)通常依賴一些形式的可更新的軟件/固件組件,此外,由于軟件一直被更新以提供組件之間的兼容性,因此,客戶必須經(jīng)常到訪經(jīng)銷商一年至少幾次來在它們的車輛計算系統(tǒng)上整體運行診斷和更新。目前,通過將車輛物理連接至提供更新的系統(tǒng)并由經(jīng)銷商安裝更新來完成診斷和更新。這允許經(jīng)銷商確保最近的模塊和版本被安裝,防止客戶手動修補車輛計算軟件,并允許原始設備制造商(oem)獲取安裝在車輛上的當前軟件和固件版本的簡況(snapshot)。
通常,車輛ecu僅包含可用于執(zhí)行指令、啟動、配置ecu等的單個車載閃存。如果在更新期間該存儲器被覆寫,則其內容不能被恢復。如果更新導致錯誤,則在ecu再次工作之前,可能需要下載舊代碼或新代碼的另一版本。
技術實現(xiàn)要素:
在第一說明性實施例中,一種系統(tǒng)包括處理器,所述處理器被配置為檢測車輛點火開關斷開。所述處理器還被配置為:從電子控制單元(ecu)的主存儲器(“內部存儲器”)中刪除現(xiàn)有的軟件版本,其中,針對所述現(xiàn)有的軟件版本,在所述電子控制單元的輔助存儲器中存在新的軟件版本更新。所述處理器還被配置為:將所述新的軟件版本更新從所述輔助存儲器(“外部存儲器”)加載至所述主存儲器;當在加載期間檢測到故障時,從所述主存儲器中刪除所述新的軟件版本更新,并從所述輔助存儲器重新加載所述現(xiàn)有的軟件版本。
在第二說明性實施例中,一種計算機實現(xiàn)的方法包括:響應于車輛點火開關斷開事件,從內部存儲器中刪除現(xiàn)有的軟件版本,其中,針對所述現(xiàn)有的軟件版本,在外部存儲器中存在新的軟件版本更新。所述方法還包括:將所述新的軟件版本更新從所述外部存儲器加載至所述內部存儲器;響應于所述加載中的故障,從所述內部存儲器中刪除所述新的軟件版本更新,并從所述外部存儲器重新加載所述現(xiàn)有的軟件版本。
在第三說明性實施例中,一種非暫態(tài)計算機可讀存儲介質存儲當被執(zhí)行時使得車輛處理器執(zhí)行包括以下步驟的方法的指令,所述方法包括:響應于車輛點火開關斷開事件,如果在外部存儲器中存在新的軟件版本更新,則從內部存儲器中刪除現(xiàn)有的軟件版本。所述方法還包括:將所述新的軟件版本更新從所述外部存儲器加載至所述內部存儲器;響應于所述加載中的故障,從所述內部存儲器中刪除所述新的軟件版本更新,并從所述外部存儲器中的所述現(xiàn)有的軟件版本存在的位置重新加載所述現(xiàn)有的軟件版本。
根據(jù)本發(fā)明的一個實施例,所述方法還包括:在將所述新的軟件版本更新成功加載至所述內部存儲器之后測試所述新的軟件版本更新。
根據(jù)本發(fā)明的一個實施例,所述方法還包括:響應于在所述測試期間的錯誤,從所述內部存儲器中刪除所述新的軟件版本更新,并從所述外部存儲器中的所述現(xiàn)有的軟件版本存在的位置重新加載所述現(xiàn)有的軟件版本。
根據(jù)本發(fā)明的一個實施例,所述方法還包括:響應于當電子控制單元嘗試利用所述新的軟件版本更新時發(fā)生錯誤,從所述內部存儲器中刪除所述新的軟件版本更新,并從所述外部存儲器中的所述現(xiàn)有的軟件版本存在的位置重新加載所述現(xiàn)有的軟件版本。
根據(jù)本發(fā)明的一個實施例,所述方法還包括:當所述刪除和所述加載中的任何一個正在進行時暫停所述車輛的可駕駛性。
根據(jù)本發(fā)明的一個實施例,所述方法還包括:如果在所述外部存儲器中不存在與所述現(xiàn)有的軟件版本對應的更新,則在刪除所述現(xiàn)有的軟件版本之前將所述現(xiàn)有的軟件版本復制到所述外部存儲器。
附圖說明
圖1示出了說明性的車輛計算系統(tǒng);
圖2a示出了用于提供車輛軟件/固件更新的說明性云端處理;
圖2b示出了用于更新處理的說明性車輛側處理;
圖3示出了用于更新通知的說明性處理;
圖4示出了另一說明性的更新通知處理;
圖5示出了用于召回處理的說明性處理;
圖6示出了車輛存儲系統(tǒng)的說明性示例;
圖7示出了用于更新加載的說明性處理;
圖8示出了用于更新處理的說明性處理。
具體實施方式
根據(jù)需要,在此公開了本發(fā)明的具體實施例;然而,將理解的是,所公開的實施例僅為本發(fā)明的示例,其中,本發(fā)明可以以各種替代形式來實現(xiàn)。附圖不必按比例繪制;一些特征可被夸大或極小化以示出特定組件的細節(jié)。因此,在此公開的具體結構和功能細節(jié)不應被解釋為具有限制性,而僅僅作為用于教導本領域技術人員以多種方式利用本發(fā)明的代表性基礎。
圖1示出用于車輛31的基于車輛的計算系統(tǒng)(vcs)1的示例框式拓撲圖。這種基于車輛的計算系統(tǒng)1的示例為由福特汽車公司制造的sync系統(tǒng)。設置有基于車輛的計算系統(tǒng)的車輛可包含位于車輛中的可視前端界面4。如果所述界面設置有例如觸摸敏感屏幕,則用戶還能夠與所述界面進行交互。在另一說明性實施例中,通過按鈕按壓、具有自動語音識別和語音合成的口語對話系統(tǒng)來進行交互。
在圖1所示的說明性實施例1中,處理器3控制基于車輛的計算系統(tǒng)的至少一部分操作。設置在車輛內的處理器3允許對命令和程序進行車載處理。另外,處理器連接到非持久性存儲器5和持久性存儲器7兩者。在此說明性實施例中,非持久性存儲器是隨機存取存儲器(ram),持久性存儲器是硬盤驅動器(hdd)或閃存。通常,持久性(非暫時性)存儲器可包括當計算機或其它裝置掉電時保持數(shù)據(jù)的所有形式的存儲器。這些存儲器包括但不限于hdd、cd、dvd、磁帶、固態(tài)驅動器、便攜式usb驅動器和任何其它適當形式的持久性存儲器。
處理器還設置有允許用戶與處理器進行交互的多個不同的輸入。在此說明性實施例中,麥克風29、輔助輸入25(用于輸入33)、usb輸入23、gps輸入24、屏幕4(其可為觸摸屏顯示器)和藍牙輸入15全部被設置。還設置有輸入選擇器51,以允許用戶在各種輸入之間進行切換。對麥克風和輔助連接器兩者的輸入在被傳送到處理器之前,由轉換器27對所述輸入進行模數(shù)轉換。盡管未示出,但是與vcs進行通信的眾多車輛組件和輔助組件可使用車輛網(wǎng)絡(諸如但不限于can總線)向vcs1(或其組件)傳送數(shù)據(jù)并傳送來自vcs(或其組件)的數(shù)據(jù)。
系統(tǒng)的輸出可包括但不限于視覺顯示器4以及揚聲器13或立體聲系統(tǒng)輸出。揚聲器被連接到放大器11,并通過數(shù)模轉換器9從處理器3接收其信號。還可分別沿19和21所示的雙向數(shù)據(jù)流產(chǎn)生到遠程藍牙裝置(諸如個人導航裝置(pnd)54)或usb裝置(諸如車輛導航裝置60)的輸出。
在一說明性實施例中,系統(tǒng)1使用藍牙收發(fā)器15與用戶的移動裝置53(例如,蜂窩電話、智能電話、pda或具有無線遠程網(wǎng)絡連接能力的任何其它裝置)進行通信(17)。移動裝置53隨后可用于通過例如與蜂窩塔57的通信(55)來與車輛31外部的網(wǎng)絡61進行通信(59)。在一些實施例中,蜂窩塔57可以是wifi接入點。
移動裝置和藍牙收發(fā)器之間的示例性通信由信號14表示。
可通過按鈕52或類似的輸入來指示將移動裝置53與藍牙收發(fā)器15配對。相應地,cpu被指示車載藍牙收發(fā)器將與移動裝置中的藍牙收發(fā)器進行配對。
可利用例如與移動裝置53關聯(lián)的數(shù)據(jù)計劃、話上數(shù)據(jù)或dtmf音在cpu3與網(wǎng)絡61之間傳送數(shù)據(jù)??蛇x地,可期望包括具有天線18的車載調制解調器63,以便在cpu3與網(wǎng)絡61之間通過語音頻帶傳送數(shù)據(jù)(16)。移動裝置53隨后可用于通過例如與蜂窩塔57的通信(55)來與車輛31外部的網(wǎng)絡61進行通信(59)。在一些實施例中,調制解調器63可與蜂窩塔57建立通信(20),以與網(wǎng)絡61進行通信。作為非限制性示例,調制解調器63可以是usb蜂窩調制解調器,并且通信(20)可以是蜂窩通信。
在一說明性實施例中,處理器設置有包括用于與調制解調器應用軟件進行通信的api的操作系統(tǒng)。調制解調器應用軟件可訪問藍牙收發(fā)器上的嵌入式模塊或固件,以完成與(諸如在移動裝置中發(fā)現(xiàn)的)遠程藍牙收發(fā)器的無線通信。藍牙是ieee802pan(個域網(wǎng))協(xié)議的子集。ieee802lan(局域網(wǎng))協(xié)議包括wifi并與ieee802pan具有相當多的交叉功能。兩者都適合于車輛內的無線通信。可在本領域使用的另一通信方式是自由空間光通信(諸如irda)和非標準化消費者紅外協(xié)議。
在另一實施例中,移動裝置53包括用于語音頻帶或寬帶數(shù)據(jù)通信的調制解調器。在話上數(shù)據(jù)的實施例中,當移動裝置53的擁有者可在數(shù)據(jù)被傳送的同時通過裝置說話時,可實施已知為頻分復用的技術。在其它時間,當擁有者沒有在使用裝置時,數(shù)據(jù)傳送可使用整個帶寬(在一示例中是300hz至3.4khz)。盡管頻分復用對于車輛與互聯(lián)網(wǎng)之間的模擬蜂窩通信而言會是常見的并仍在被使用,但其已經(jīng)在很大程度上被用于數(shù)字蜂窩通信的碼域多址(cdma)、時域多址(tdma)、空域多址(sdma)的混合體所替代。這些都是ituimt-2000(3g)兼容的標準,為靜止或行走的用戶提供高達2mbps的數(shù)據(jù)速率,并為在移動的車輛中的用戶提供高達385kbps的數(shù)據(jù)速率。3g標準現(xiàn)在正被imt-advanced(4g)所替代,其中,所述imt-advanced(4g)為在車輛中的用戶提供100mbps的數(shù)據(jù)速率,并為靜止的用戶提供1gbps的數(shù)據(jù)速率。如果用戶具有與移動裝置53關聯(lián)的數(shù)據(jù)計劃,則所述數(shù)據(jù)計劃可允許寬帶傳輸且系統(tǒng)可使用寬得多的帶寬(加速數(shù)據(jù)傳送)。在另一實施例中,移動裝置53被安裝至車輛31的蜂窩通信裝置(未示出)所替代。在另一實施例中,移動裝置(nd)53可以是能夠通過例如(而不限于)802.11g網(wǎng)絡(即,wifi)或wimax網(wǎng)絡進行通信的無線局域網(wǎng)(lan)裝置。
在一實施例中,傳入數(shù)據(jù)可經(jīng)由話上數(shù)據(jù)或數(shù)據(jù)計劃穿過移動裝置,穿過車載藍牙收發(fā)器,并進入到車輛的內部處理器3。例如,在特定臨時數(shù)據(jù)的情況下,數(shù)據(jù)可被存儲在hdd或其它存儲介質7上,直至不再需要所述數(shù)據(jù)時為止。
可與車輛進行接口連接的其它源包括:具有例如usb連接56和/或天線58的個人導航裝置54、具有usb62或其它連接的車輛導航裝置60、車載gps裝置24、或具有連接到網(wǎng)絡61的能力的遠程導航系統(tǒng)(未示出)。usb是一類串行聯(lián)網(wǎng)協(xié)議中的一種。ieee1394(火線tm(蘋果)、i.linktm(索尼)和lynxtm(德州儀器))、eia(電子工業(yè)協(xié)會)串行協(xié)議、ieee1284(centronics端口)、s/pdif(索尼/飛利浦數(shù)字互連格式)和usb-if(usb開發(fā)者論壇)形成了裝置-裝置串行標準的骨干。多數(shù)協(xié)議可針對電通信或光通信來實施。
此外,cpu可與各種其它的輔助裝置65進行通信。這些裝置可通過無線連接67或有線連接69被連接。輔助裝置65可包括但不限于個人媒體播放器、無線保健裝置、便攜式計算機等。
另外或可選地,可使用例如wifi(ieee803.11)收發(fā)器71將cpu3連接到基于車輛的無線路由器73。這可允許cpu3在本地路由器73的范圍內連接到遠程網(wǎng)絡。
除了由位于車輛中的車輛計算系統(tǒng)執(zhí)行示例性處理之外,在某些實施例中,還可由與車輛計算系統(tǒng)通信的計算系統(tǒng)來執(zhí)行所述示例性處理。這樣的系統(tǒng)可包括但不限于無線裝置(例如但不限于,移動電話)或通過無線裝置連接的遠程計算系統(tǒng)(例如但不限于,服務器)。總體上,這樣的系統(tǒng)可被稱為與車輛關聯(lián)的計算系統(tǒng)(vacs)。在某些實施例中,vacs的特定組件可根據(jù)系統(tǒng)的特定實施而執(zhí)行處理的特定部分。通過示例而并非限制的方式,如果處理包括與配對的無線裝置進行發(fā)送或者接收信息的步驟,則很可能由于無線裝置不會與其自身進行信息的“發(fā)送和接收”而使得無線裝置不執(zhí)行處理的該部分。本領域的普通技術人員將理解何時不適合對給定解決方案應用特定的計算系統(tǒng)。
在此討論的每個說明性的實施例中,示出了可由計算系統(tǒng)執(zhí)行的處理的示例性的、非限制的示例。關于每個處理,執(zhí)行處理的計算系統(tǒng)為了執(zhí)行處理的有限目的而變成被配置為專用處理器以執(zhí)行處理是可能的。所有的處理不需要被全部執(zhí)行,并被理解為可被執(zhí)行以實現(xiàn)發(fā)明的要素的處理類型的示例。額外的步驟可根據(jù)需要被添加至示例性處理或者被從示例性處理中移除。
在當前車輛計算系統(tǒng)允許通過經(jīng)銷商界面完成軟件和固件的更新時,這種系統(tǒng)還需要客戶訪問經(jīng)銷商或其它許可的服務提供者。由于客戶通常等到車輛需要物理服務(更換機油或輪胎調位的期限),因此這將產(chǎn)生獲取更新的延時,或者不能一同更新軟件。由于軟件和固件更新通常提升性能或者被需要用于安全目的,因此客戶可能無法從他們的車輛獲取完整的最優(yōu)的體驗,除非他們努力保持其軟件是最新的,這在經(jīng)銷商更新模式下可能需要為了更新而經(jīng)常訪問經(jīng)銷商或維修地點。
說明性的實施例提供了用于獲取空中(over-the-air,ota)更新的代表性系統(tǒng)和方法,所述系統(tǒng)和方法允許客戶更新車輛軟件而不需要到訪經(jīng)銷商。提出的方案和示例提供了有效且可靠的具有最少的用戶交互和影響的更新車輛軟件和固件的手段。此外,oem可跟蹤對哪些車輛提供和/或應用了哪些更新,因此,可以良好地感知到哪些軟件和固件版本在部署的車輛中非常普遍,從而可幫助專注于更新工作和允許早期的問題識別,以及在例如出現(xiàn)任何特定版本的問題的情況下通知適當?shù)南嚓P方。
圖2a示出了用于提供車輛軟件/固件更新的說明性的云端處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬希鶕?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性示例中,oem工程師或被指定提供軟件和固件更新的其它方可將軟件上傳至初始系統(tǒng)資源庫(諸如被指定為從一方或更多方接收更新的車內軟件系統(tǒng)(in-vehiclesoftwaresystem,ivs))。這些文件隨后被發(fā)送至全球車內信息系統(tǒng)(globalin-vehicleinformationsystem,givis),軟件可被存儲在全球車內信息系統(tǒng)(givis)中以用于通過車輛工具下載。在givis系統(tǒng)從ivs系統(tǒng)接收到軟件之后(操作201),givis系統(tǒng)可將軟件推送給云(操作203),在所述云中,軟件可被提供至遠程連接的車輛遠程信息處理控制單元(telematiccontrolunit,tcu)。
除了將文件推送至云(或者以其它方式使文件無線可用),givis系統(tǒng)還可告知服務傳輸網(wǎng)絡(sdn)以通知特定車輛對安裝的軟件或固件包的更新可用于下載和安裝(操作205)。
在說明性的實施例中,后臺的oem系統(tǒng)跟蹤哪些模塊和版本被安裝在允許ota更新的各種車輛上。這種信息可從例如車輛tcu接收和存儲在遠程oem數(shù)據(jù)庫中。對于配置已知的車輛,sdn可識別哪些車輛適合更新(基于已知的安裝的軟件和固件版本),并可向那些車輛發(fā)送新的安裝包已經(jīng)準備好被下載的消息。對于還未報告的其它車輛,例如,系統(tǒng)可基于初始構造針對更新識別車輛,并且還可通知這些系統(tǒng)。在這個示例中,由于處理將在提供更新之前檢查安裝的軟件,因此當系統(tǒng)被通知實際配置時,任何不兼容性均可被處理。
由于識別的車輛聯(lián)機(例如,而非限制,它們是啟動的),因此它們可基于例如來自sdn的通知登入更新服務器。系統(tǒng)接收登記(操作207)以及安裝在車輛上的軟件和固件的清單(操作209)。這可以是完整的列表,或者,在另一示例中,可與被指定更新的軟件包和固件包特別相關。完整的列表將向oem提供車輛的當前簡況,但簡短的列表可花費更少的時間來匯編和發(fā)送。報告可基于傳輸時間、完整性、數(shù)據(jù)量等之間的權衡來按照需要被配置。
一旦從車輛接收到清單(操作209),處理可確定哪些軟件和固件適合更新,并匯編可用更新的列表(操作211)。識別可用于下載的可更新的軟件/固件和/或版本的更新清單隨后可被發(fā)送至車輛(操作213)。如圖2b所示,所述車輛將下載適當?shù)能浖?,在適當?shù)臅r候安裝軟件更新。一旦軟件更新被成功安裝,處理就將接收識別多個更新的安裝成功或失敗的狀態(tài)日志(操作215)。這可在稍后的時間進行,這是因為例如下載可能發(fā)生在啟動時而安裝可能發(fā)生在關閉時(當車輛沒有被使用時)。遠程系統(tǒng)可隨后存儲安裝的軟件版本和固件版本中的部分或全部的更新的簡況(取決于在初始的清單和更新狀態(tài)日志中提供了多少數(shù)據(jù))(操作217)。
圖2b示出了用于更新處理的說明性的車輛側處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的代表性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬?,根?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性示例中,處理是車輛側的處理,所述處理不必沒有暫停地運行至完成(即,在特定步驟之間可以存在明顯的時間間隙)。車輛通常通過車輛tcu被通知更新的軟件包可用于該車輛(操作221)。例如,這種sdn通知可被用于使車輛處于當車輛下一次啟動時所述車輛將檢查更新的狀態(tài)。
在啟動時,響應于sdn通知,或者在另一合適的時間,處理將生成安裝在車輛上已有的軟件和固件版本的清單(操作223)。這可以是軟件和固件的完整列表,或者例如可被限制為更新可用于的軟件和固件的版本。第三個列表的示例可以是可更新的軟件和固件的版本,以及兼容性目的所需的其它模塊的版本(例如,盡管模塊z不可更新,但針對模塊n的更新,模塊z必須處于2.0.1版本以保持兼容性,因此模塊z和n兩者的版本都可被提供)。隨后,再次處于啟動或其它指定時間時,處理將登入givis云(或其它提供服務的軟件/固件)(操作225)以獲取更新的軟件。
處理將安裝的版本的清單發(fā)送至givis系統(tǒng)(操作227),允許givis系統(tǒng)檢查以確保安裝的軟件的數(shù)據(jù)庫記錄是正確的。如果車輛系統(tǒng)具有非預期的更新的版本(例如用戶可能已經(jīng)手動安裝更新的版本),則更新可被放棄,或被改變?yōu)椴煌陌姹?。一旦更新的適當性被驗證或修正,則車輛系統(tǒng)將接收到包含可用于下載的可更新的軟件模塊的列表的清單(操作229)。
車輛系統(tǒng)隨后將下載合適的更新(可以是全部更新,或者一些系統(tǒng)或用戶從全部更新中選擇的子集)(操作231)。更新也將在某些時候被安裝(操作233),但是如之前提到的這可以發(fā)生在不同的時間。由于對車輛模塊的更新可能在安裝的同時影響駕駛性,因此,可能希望在安裝更新之前等到車輛不被使用時(諸如關閉時)。在另一示例中,為了快速更新,系統(tǒng)可在實施更新時在有線的時間段內阻止駕駛。后一種模式可例如在高優(yōu)先級的安全更新被下載以用于安裝時被使用,或者在任意其它合適的時間被使用。一旦更新被安裝,則處理可向givis系統(tǒng)發(fā)送更新后的日志(操作235),所述更新后的記錄可包括更新成功或失敗,并且如果需要使關于當前車輛配置的信息盡量多,則所述更新后的記錄還可包括當前安裝的軟件和固件模塊的另一完整列表。
盡管未示出,但是例如處理還可記錄或記載對車輛的特定軟件版本更新的傳輸。例如,這可有助于在車輛重復接收更新版本但當嘗試更新時不能成功應用所述更新時,識別更新問題。
圖3示出了用于更新通知的說明性處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬?,根?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性示例中,處理運行在服務傳輸網(wǎng)絡或被指定為向車輛通知新更新的可用性的其它通信系統(tǒng)上。在這個示例中,處理接收(或檢索)被特定更新影響的車輛的車輛識別碼(vin)(操作301)。
每個車輛的軟件和固件配置被存儲在數(shù)據(jù)庫中,可使用多種源(源于車輛報告、經(jīng)銷商報告、生產(chǎn)時的已知的安裝版本等)填充和更新所述數(shù)據(jù)庫。例如,數(shù)據(jù)庫可被查詢以識別被安裝了軟件n的特定版本的車輛,諸如具有例如2.0.3版本的車輛,新更新2.0.4將被應用在該車輛上。在另一示例中,版本為2.0.3或版本低于2.0.3的所有車輛根據(jù)例如特定更新可被識別為更新至2.0.4的候選車輛。
車輛可通過vin被識別,vin可被用于查找允許消息被發(fā)送至特定的vin被識別的車輛的通信數(shù)據(jù)。在這個示例中,為了防止通知不想要ota更新的用戶,處理檢查每個vin以查看用戶是否同意ota更新(操作303)。不在數(shù)據(jù)庫中的vin可對應于不允許ota更新的用戶,或者對應于由于多種原因不想要ota更新的用戶(諸如想要所有車輛處于相同版本水平的車隊經(jīng)理)。如果給定的vin具有與此相關的許可(操作305),則sdn可將該vin添加至列表以用于通知(操作307)。只要vin保留以用于許可驗證(操作309),該處理就可繼續(xù)。一旦允許ota更新的vin已經(jīng)被驗證,則處理可向具有關聯(lián)的vin的車輛發(fā)送更新指令、通知等(操作311)。
圖4示出了另一說明性的更新通知處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬?,根?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性的示例中,例如,運行在givis上的處理從oem工程師或被指定提供更新的其它方接收更新文件(操作401)。在這個示例中,givis存儲車輛配置的記錄(或者訪問存儲記錄的數(shù)據(jù)庫),并僅向sdn提供可應用的vin的列表以用于通知(該處理是參照圖3描述的代表性處理)。這里,處理利用數(shù)據(jù)庫來(在這個示例中,通過vin)確定哪些車輛具有符合接收的更新的條件的軟件(操作403)。在這個示例中,處理首先根據(jù)軟件模塊分類(操作403),以確定哪些車輛被安裝了可更新的模塊。隨后,針對每個車輛,處理確定軟件是否已經(jīng)被更新(操作405),或者處于不適合更新的狀態(tài)。如果所述軟件已經(jīng)被更新或者處于不適合更新的狀態(tài)(操作405),則處理將繼續(xù)下一個記錄(操作409)。否則,該車輛的vin被添加至將被發(fā)送至sdn的更新列表(操作407)。當然,由于示出的處理僅是說明性的,因此查詢數(shù)據(jù)庫和匯編記錄的列表的任意方法可被使用。一旦分析了所有記錄,則處理可向sdn發(fā)送合適的vin的列表(操作411),如圖3所示,sdn可檢查存儲的ota許可。盡管圖4中的givis處理和圖3中示出的ota許可驗證相對于分開的系統(tǒng)被描述,但如果需要并且合適,根據(jù)提供ota軟件更新的后臺網(wǎng)絡的布局和配置,givis處理和ota許可驗證可被合并。
圖5示出了用于召回處理的說明性處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬?,根?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
圖5示出了通過具有當前安裝的軟件和固件版本的更加新的記錄來促進的說明性的召回通知處理。盡管所述處理可利用報告安裝在車輛中的軟件和固件版本的任意記錄集來被使用,但記錄越新,召回通知的傳輸越精確。例如,如果oem不具有關于當前軟件版本的任何信息,則oem必須向具有需要特定更新的一些版本的特定軟件或固件模塊的所有車輛型號發(fā)送召回通知。另一方面,如果更新僅應用于例如3.3.1版本,則完整的或更完整的記錄集可避免向不適合的至少一部分車輛發(fā)送召回通知。對于當前配置是未知的車輛,或者對于更新已經(jīng)過去很長時間的車輛,處理可出于慎重考慮仍然選擇發(fā)送通知。然而,處理可避免向已知更新已經(jīng)被應用和/或具有需要更新的版本之后的版本(例如版本3.3.2)的車輛發(fā)送通知。
處理接收應用于安裝在特定車輛中的特定軟件或固件模塊的召回通知(操作501)。通過如上所述地使用數(shù)據(jù)庫查詢,處理可識別已知哪些車輛需要更新,或者另外地或可選地,哪些車輛不需要更新(操作503)。處理可隨后匯編應對其發(fā)送通知的vin的列表(或者在可選的配置中,肯定不需要通知的vin的列表)(操作505)。這兩種形式的列表可被用于限制向其發(fā)送通知的車輛的列表,因此,至少一些駕駛員不需要被通知不應用到他們的車輛上的召回。召回通知可隨后被發(fā)送至合適的車輛(操作507)。
如提到的,基于不完整的信息,使用該處理仍然存在一些通知的重復和冗余,但是,例如從客戶車輛和經(jīng)銷商更新接收的信息越好,召回通知的定向越精確。基于已知哪些模塊和版本被安裝在哪些特定車輛上,類似的方法還可被用于其它的目標車輛的消息傳送。由于ota更新允許在不需要客戶到訪經(jīng)銷商的情況下更頻繁地維護軟件和固件模塊,因此,如果這些信息由oem采集,則增加的頻率可提供提升的簡況精確度。
圖6示出了車輛存儲系統(tǒng)的說明性示例。典型的車輛啟動系統(tǒng)601包括至少一個引導加載程序(bootloader)603和多個內部閃存605。這種范例可被應用于需要一些形式的開啟(例如當車輛點火開關接通時)的任意系統(tǒng)和所有系統(tǒng)。說明性的實施例提供了可被存儲在多個位置中的軟件更新的安裝(或閃存)。當前安裝的軟件版本的可復原的備份版本還存在,以防更新失敗。例如,典型的電子控制單元(ecu)僅包含存儲操作/啟動/控制文件和對應的指令的內部閃存。
在這個說明性的示例中,提供了外部或額外的閃存,所述外部或額外的閃存具有至少兩個扇區(qū)、分區(qū)或者是至少兩個單獨的存儲器607、609的形式。因此,在至少一個實施例中,考慮到了包含典型的內部存儲器的ecu和附加的外部存儲器。這種附加的存儲器可被提供為ecu上的“內部”存儲器,即,類似于標準存儲器,但可被單獨訪問。在這個示例中,“內部”存儲器會是ecu用于存儲指令的存儲器,“外部”存儲器會是用作用于更新處理的輔助存儲器的存儲器。無論何時加載了新的軟件更新,兩個存儲器分區(qū)中的非最近使用的分區(qū)接收該更新。更近使用的分區(qū)保存軟件的當前安裝版本的副本。這種方案可用于在不支持可重定位代碼的電子控制單元上實現(xiàn)a和b更新方法(安裝至新位置,如果新的安裝不可用則使用舊位置)。在支持可重定位代碼的系統(tǒng)中,引導加載程序可嘗試從新位置啟動,并且如果啟動不成功(例如代碼質量不好),則隨后返回到舊位置,但很多ecu不支持這個模式。
圖7示出了用于更新加載的說明性處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬?,根?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性的示例中,處理接收新的軟件更新(操作701)。這可以是軟件或固件,并被設計為例如更新已經(jīng)由現(xiàn)有的ecu執(zhí)行的現(xiàn)有的一部分代碼。在這個示例中,ecu在已知的閃存位置處具有現(xiàn)有的軟件,所述代碼從所述位置被執(zhí)行。外部存儲位置a和b被提供用于保存當前安裝的軟件的更新和備份版本(通常是以前的更新留下的)。
這是描述可用的外部存儲空間的簡化示例。在更復雜的示例中,存在巨大的外部存儲空間(位置/扇區(qū)),被指定用于代替或不使用的扇區(qū)可被新的軟件覆寫。例如,如果針對另一模塊存在兩個版本的不同的軟件更新,則僅有最近的版本可被保存(如果所述版本已經(jīng)被處理),因此,兩個版本中的較舊的版本可被新的更新覆寫,即使該更新可能與被覆寫的軟件不相關。這允許重新使用不再被需要用于保存已經(jīng)被更新的軟件的較舊的備份版本的存儲空間(意味著更新的更新版本可被存儲在外部存儲器中的其它位置)。
一旦新的軟件被接收,處理可檢查安裝日志、文件生成日期等,以確定外部(或額外)存儲位置a或b中的哪個以前被用于安裝軟件的當前現(xiàn)有的版本(操作703)。如果存儲位置是位置a(操作705),則處理將新的更新加載至位置b(操作707)。位置a繼續(xù)保存以前的更新??蛇x地,如果位置a未被使用(在這個示例中,意味著位置b是最后一次使用的位置),則處理將新的更新加載至位置a(操作709)。示出的方法僅是說明性的,對于確定寫入更新的位置存在多種可能性,并且,還可能存在多于兩個的外部存儲位置(或額外存儲位置)可用于執(zhí)行該處理。
圖8示出了用于更新處理的說明性處理。關于在該圖中描述的說明性實施例,應注意,通用處理器可臨時作為專用處理器以用于執(zhí)行在此示出的示例性方法中的一些或全部的目的。當執(zhí)行提供指令的代碼以執(zhí)行所述方法的一些或全部步驟時,處理器可被臨時轉用為專用處理器,直到方法完成時為止。在另一示例中,在適當?shù)某潭壬希鶕?jù)預配置的處理器運行的固件可使處理器作為用于執(zhí)行所述方法或其一些合理變型的目的的專用處理器。
在這個說明性的示例中,更新將在車輛點火開關斷開時被安裝。這有助于確保擁有者不在安裝更新時使用車輛。在這個說明性的示例中,當更新被安裝時,車輛的使用可被暫時禁用,至少持續(xù)有限的時間段。
一旦發(fā)生點火開關斷開(操作801),處理暫停車輛使用(或至少暫停發(fā)動機啟動,或類似地暫停驅動車輛的功能)(操作803)。所述暫??沙掷m(xù)更新的時長、持續(xù)有限的時間段、或者大概持續(xù)到車輛適合行駛為止。處理還檢查外部(或額外)閃存(操作805),以確定新的軟件更新是否存在(操作807)。在其它實施例中,處理可僅在確定新的軟件存在之后暫停車輛使用,但是在這個示例中,由于一經(jīng)確定不存在新的軟件,車輛就能夠被使用(操作809),因此,可能發(fā)生的幾秒鐘或更短的延時不會對擁有者造成很大的不便。如果延時是個問題,則處理可在暫停車輛使用之前一直等到驗證了新的更新存在。
一旦新的更新被驗證存在,處理就可隨后將現(xiàn)有的軟件版本從內部閃存中刪除(操作811)。此時,內部存儲器沒有安裝的軟件,這就是當更新發(fā)生時車輛的使用被短暫暫停的原因,以防當車輛啟動時需要軟件。新的軟件版本從包含在外部存儲空間中的可用更新被閃存(flash)(操作813)。
新安裝的版本可被測試錯誤和功能(操作815)。如果在新安裝的版本中檢測到錯誤(即新安裝的版本是無效的)(操作817),則處理可將新安裝的版本從存儲器中擦除(操作819)。以前安裝的版本可隨后從另一外部存儲空間被重新加載(操作821),其中,最初提供該版本的更新被存儲在所述另一外部存儲空間。
例如,如果存在兩個外部存儲位置a和b,并且位置a保存以前安裝的版本,則新的軟件將在下載之后被加載至位置b。隨后,當點火開關斷開時,處理將暫停車輛操作并識別新的軟件更新存在于位置b(反之亦可)。處理將現(xiàn)有的版本從內部存儲器(在內部存儲器,所述版本被引導加載程序使用)中擦除。
新版本從外部存儲位置b被加載,所述新版本向車輛系統(tǒng)提供新的軟件版本(或者固件版本)。在這個示例中,新加載的軟件隨后被檢查錯誤。如果發(fā)現(xiàn)錯誤,則處理可再次擦除存儲器,并從存儲位置a加載舊的軟件版本。由于舊的軟件版本與以前安裝的版本相對應,因此這應該被推測為是沒有錯誤的。如果處理不能恢復舊的版本,則可采取額外的補救步驟。此外或可選地,如果直到引導加載程序嘗試使用新安裝的軟件時(可以是當點火開關接通時或稍后的一些其它時間)仍未檢測到錯誤,則舊版本仍被存儲在位置a并且可用于恢復舊版本。
如果針對多個車輛軟件安裝的更新的數(shù)量超過現(xiàn)有的外部(或額外)存儲位置的數(shù)量加一(用于更新),則以上描述的“a”位置(包含舊版本)可通過在處理來自新軟件位置的更新之前將當前構造/版本閃存/加載至第一軟件位置來被創(chuàng)建。這確保至少當前被更新的軟件的備份當前存在于一個額外的位置中。充足的外部/額外存儲器避免了這種狀況,但是,如果在外部存儲器中沒有已經(jīng)存在的副本,則至少可以通過在擦除當前構造的內部存儲器之前進行復制來重新創(chuàng)建現(xiàn)有的軟件版本。
雖然以上描述了示例性實施例,但這些實施例并不意在描述要求保護的主題的所有可能形式。更確切地,說明書中所使用的詞語是描述性詞語而非限制性詞語,并且應理解的是,可在不脫離本公開的精神和范圍的情況下做出各種改變。此外,可將各種實施的實施例的特征進行組合以形成未被明確描述或說明的進一步的實施例。