一種汽車控制器的引導啟動方法以及汽車控制器的製作方法
2023-06-01 06:19:56 2
專利名稱:一種汽車控制器的引導啟動方法以及汽車控制器的製作方法
技術領域:
本發明屬於汽車控制器領域,尤其涉及一種汽車控制器的引導啟動方法以及汽車控制器。
背景技術:
汽車控制器(或稱E⑶,電控單元)一般包括MCU (電機控制器)、VCU (或稱VMS,整車控制器)、BCM (車身控制器)以及BMS (電池管理系統)等。隨著應用的變化,汽車控制器的引導裝載程序(Bootloader)及其上位機軟體需要更新。在升級汽車控制器的目標應用程式(Application)的過程中,若發生掉電、需升級的目標應用程式不完善或受損、目標應用程式禁用弓I導裝載程序使用的通信接口等情況時, 會導致汽車控制器失效,並無法再次升級目標應用程式。另外發生上述情況時,可能需要拆卸、更換汽車控制器。因此,提高引導裝載程序的安全性和可靠性,一直是汽車控制器研發人員備受關注的研究課題。安全可靠的引導裝載程序可以避免在升級目標應用程式時或升級目標應用程式完成後,由於各種不確定因素導致汽車控制器無法執行目標程序或無法再度升級目標應用程式的風險。另外,還可以避免發生上述情況時拆卸、更換汽車控制器的風險,在一定程度上還可以提高汽車控制器開發設計過程中的效率。
發明內容
本發明實施例的目的在於提供一種汽車控制器的引導裝載程序,旨在解決由於汽車控制器在升級目標應用程式的過程中掉電、升級目標應用程式完成後程序不完善、目標應用程式禁用了弓I導裝載程序與上位機的通信接口等問題,導致無法再度升級目標應用程式的問題。本發明實施例是這樣實現的,一種汽車控制器的引導啟動方法,所述方法包括以下步驟
在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求; 如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式; 如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊,由消息處理模塊從上位機獲取刷新數據並執行對應用程式或引導程序的刷新。進一步地,在設定的時間t內檢測是否收到上位機發送的刷新請求的步驟之前還包括
發送引導啟動指示給上位機
進一步地,所述刷新請求是指定ID的UDS或KWP2000協議的服務請求消息,或者是包含設備型號或設備地址的一條特殊請求消息。本發明實施例的另一目的在於提供一種汽車控制器的引導啟動程序,所述引導程序包括刷新請求檢測模塊,用於在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求;
完整性檢測模塊,用於如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式;
應答跳轉模塊,用於如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊;以及
消息處理模塊,用於從上位機獲取刷新數據並執行對應用程式或引導程序的刷新。進一步地,所述引導啟動程序包括
弓丨導啟動指示發送模塊,用於發送弓I導啟動指示給上位機。進一步地,所述刷新請求是指定ID的UDS或KWP2000協議的服務請求消息,或者是包含設備型號或設備地址的一條特殊請求消息。本發明實施例的另一目的在於提供一種汽車控制器,所述汽車控制器採用上述任一項所述的引導啟動程序。在本發明的實施例中,通過採用新的引導方式,解決由於汽車控制器在升級目標應用程式的過程中掉電、升級目標應用程式完成後程序不完善、目標應用程式禁用了引導裝載程序與上位機的通信接口等問題,導致無法再度升級目標應用程式的問題。
圖1是本發明第一實施例提供的引導啟動方法的實施流程; 圖2是本發明第二實施例提供的引導啟動方法的實施流程;
圖3是本發明第三實施例提供的引導啟動方法的實施流程; 圖4是本發明實施例提供的汽車控制器的軟體模塊結構示意圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。圖1示出了本發明第一實施例提供的引導啟動方法的實施流程,詳述如下 在步驟SlOl中,汽車控制器進行上電或復位。在步驟S102中,汽車控制器進行常規初始化。在步驟S103中,檢測是否收到上位機發送的刷新請求。當未收到刷新請求時,執行步驟S104。當收到刷新請求時,執行步驟S105。在步驟S104中,判斷是否等待超時,也即判斷是否達到設定的等待時間t。為了避免長期檢測刷新請求,可以設定一刷新等待時間t ((如10ms),從而可以適當縮減啟動時間。如果等待超時,則執行步驟S106 ;否則返回步驟S103,即繼續檢測刷新請求。在步驟S105中,發送應答確認消息給上位機,並跳轉至步驟S108。這樣,以便讓上位機準備配合對應用程式進行刷新。在步驟S106中,判斷應用程式是否完整。如果應用程式完整,則執行步驟S107 ; 否則執行步驟S108。
在步驟S107中,跳轉到應用程式。在步驟S108中,由消息處理模塊從上位機獲取刷新程序並執行對應用程式的刷新。也就是說,上電或復位並初始化完成後,Bootloader (汽車控制器的引導啟動程序)首先作一個指定時間(如IOms)的循環檢測,該時間內,若檢測到有刷新請求(或進入 Bootloader刷新模式請求)則一直運行在Bootloader。否則,指定時間過後沒有檢測到刷新請求,則檢測目標應用程式是否完整,並根據應用程式的完整性,跳轉到應用程式或停留在 Bootloader0圖2示出了本發明第二實施例提供的引導啟動方法的實施流程,詳述入下 在步驟S201中,汽車控制器進行上電或復位。在步驟S202中,汽車控制器進行常規初始化。在步驟S203中,判斷應用程式是否完整。在步驟S204中,當完整時,置應用程式完整性標識。在步驟S205中,當不完整時,清除應用程式完整性標識。在步驟S206中,由消息處理模塊從上位機獲取消息並執行對應的消息處理(如 刷新請求,程序下載等)。在該步驟S206中,內嵌了刷新請求的檢測過程。其內嵌的過程 分析已有周期任務和復位刷新請求有效時間之間的關係。若與某個周期任務相等,則將「應用程式完整性」和「刷新請求」檢測和應用程式跳轉(應用程式完整,刷新請求無效時)的功能添加到該周期任務中,否則,新增實現該功能的周期任務。在步驟S207中,跳轉到應用程式。本發明第二實施例為內嵌式檢測,上電或復位並初始化完成後,Bootloader首先檢測應用程式是否完整,並置應用程式完整標誌位(Application integrity flag)為相應狀態,然後執行Bootloader常規任務,並在常規任務中內嵌「是否收到刷新請求」的檢測, 並置刷新請求有效標誌位(Refresh program request flag)為相應狀態。在指定的周期調度(如IOms周期任務)中判斷是否同時滿足兩個條件應用程式完整且沒有收到有效刷新請求。若條件滿足,則跳轉到應用程式。否則,繼續運行Bootloader。本發明第二實施例與第一實施例基本類似,其主要區別在於將復位請求的檢測過程內嵌於消息處理模塊。圖3示出了本發明第三實施例提供的引導啟動方法的實施流程。在上電或復位並初始化完成後,Bootloader主動向外發送一條消息,在指定的時間內(如10 ms)收到正確的應答,則停留在Bootloader。否則,若沒有收到應答確認,則進行應用程式完整性檢測,此時,若應用程式完整,則跳轉到應用程式,否則依然停留在Bootloader。其中,第3 中方案不適用於 UDS (IS0-14229), KWP2000 (IS0-14230),CCP 等協議設計的 Bootloader0在實現上述方案時,需要上位機刷新軟體的配合。此外,當應用程式完整,且不需要刷新應用程式時,從控制器上電或復位到跳轉至Application之間的停留時間不宜過長,建議控制在IOms至IOOms之間。此外按照本發明設計的Bootloader,是可以兼容常規的刷新流程的。例如,使用 UDS並按照本設計的Bootloader,其上位機的刷新流程,既可以使用UDS常規刷新流程,也可以使用本發明提出的刷新流程。總體而言,對於設計本發明所闡述的Bootloader,無論使用那種方式去實現,首先要確定一條特殊的消息,用來指示,上位機程序請求刷新應用程式。這條消息還可以包含設備型號或設備地址的確認信息。為了避免汽車控制器通之間正常通信的幹擾,通常指定的這條消息,在汽車控制器的通信網絡間不應該出現(或需要避免出現)的消息。以UDS(IS0-14229)或 KWP2000(IS0-14230)為例,可以使用10 Hex服務請求進入刷新模式,也可以使用34 Hex服務進行刷新請求,還可以使用31 Hex服務使用自定義的例程。對於ISO-142^協議,推薦使用10 Hex和31 Hex服務,不推薦使用34 Hex服務。因為,34 Hex服務通常是一條需要安全認證確認後才能響應的服務。這樣,使用34 Hex,相當於使用了 27 Hex和34 Hex服務同時作為上位機請求Bootloader刷新程序的依據。從而在一定程度上加大了檢測刷新程序所需要的延時時間,降低了控制器的啟動速度。目前,大部分汽車控制器都是使用CAN網絡做為整個汽車各控制器之間的主通信網絡。常用的兩種刷新方式,一種是基於CCP標定的刷新,另外一種是基於UDS或KWP2000 的刷新。控制器下線後,通常會卸載CCP功能。所以,控制器量產後,在Bootloader中,最常見的就是基於UDS或者是KWP2000的刷新功能。圖4示出了本發明實施例提供的一種汽車控制器的軟體結構模塊,該汽車控制器軟體包括一引導啟動程序,所述引導程序採用三層或兩層軟體架構通信層、網絡協議層 (可選,當應用層基於UDS或KWP2000時必選)、應用層。其中,應用層包括
刷新請求檢測模塊,用於在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求;
完整性檢測模塊,用於如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式;
應答跳轉模塊,用於如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊;以及
消息處理模塊,用於從上位機獲取刷消息序並執行對應用程式或引導啟動程序的刷新。所述引導啟動程序還包括
弓丨導啟動指示發送模塊,用於發送弓I導啟動指示給上位機
在本發明的實施例中,所述刷新請求為一條引導程序使用ID的基於UDS或KWP2000的請求服務或一條引導程序指定的包含設備型號或設備地址的特殊消息。以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種汽車控制器的引導啟動方法,其特徵在於,所述方法包括以下步驟在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求;如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式;如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊,由消息處理模塊從上位機獲取刷新數據並執行對應用程式或引導程序的刷新。
2.根據權利要求1所述的汽車控制器的引導啟動方法,其特徵在於,在設定的時間t內檢測是否收到上位機發送的刷新請求的步驟之前還包括發送引導啟動指示給上位機。
3.根據權利要求1所述的汽車控制器的引導啟動方法,其特徵在於,所述刷新請求是指定ID的UDS或KWP2000協議的服務請求消息,或者是包含設備型號或設備地址的一條特殊請求消息。
4.一種汽車控制器的引導啟動程序,其特徵在於,所述引導程序包括刷新請求檢測模塊,用於在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求;完整性檢測模塊,用於如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式;應答跳轉模塊,用於如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊;以及消息處理模塊,用於從上位機獲取刷新數據並執行對應用程式或引導程序的刷新。
5.根據權利要求4所述的汽車控制器的引導啟動程序,其特徵在於,所述引導啟動程序包括弓丨導啟動指示發送模塊,用於發送弓I導啟動指示給上位機。
6.根據權利要求4所述的汽車控制器的引導啟動程序,其特徵在於,所述刷新請求是指定ID的UDS或KWP2000協議的服務請求消息,或者是包含設備型號或設備地址的一條特殊請求消息。
7.一種汽車控制器,其特徵在於,所述汽車控制器採用權利要求4-6中任一項所述的引導啟動程序。
全文摘要
本發明適用於汽車控制器領域,提供了一種汽車控制器的引導啟動方法以及汽車控制器,所述方法包括以下步驟在上電或復位後,在設定的時間t內檢測是否收到上位機發送的刷新請求;如果沒有收到刷新請求則檢測應用程式是否完整,當完整時跳轉到應用程式;如果收到刷新請求則發送應答確認消息給上位機,並跳轉到消息處理模塊,由消息處理模塊從上位機獲取刷新數據並執行對應用程式或引導程序的刷新。在本發明的實施例中,通過採用新的引導方式,解決由於汽車控制器在升級目標應用程式的過程中掉電、升級目標應用程式完成後程序不完善、目標應用程式禁用了引導裝載程序與上位機的通信接口等問題,導致無法再度升級程序的問題。
文檔編號G06F9/445GK102314363SQ20111021205
公開日2012年1月11日 申請日期2011年7月27日 優先權日2011年7月27日
發明者劉金強, 朱剛陽, 李永堅, 邱林, 陳小江 申請人:深圳市航盛電子股份有限公司