本發(fā)明屬于汽車自動化技術領域,具體涉及一種汽車控制器的刷新方法及裝置。
背景技術:在汽車的整車研發(fā)試驗階段,經(jīng)常發(fā)現(xiàn)汽車控制器(ECU)內(nèi)存在Bug,需要更新其內(nèi)部的應用程序;或在車輛售后服務中,若發(fā)現(xiàn)ECU內(nèi)部程序存在問題,也需要更新內(nèi)部應用程序。以往需要把ECU整體從整車上拆卸下來,打開外殼,把新的應用程序燒寫進去。繁瑣的拆卸和代碼燒寫過程,給開發(fā)人員和售后人員帶來了很多不便,而且在拆卸過程中還容易對其它關聯(lián)件造成損壞。由于只有ECU生產(chǎn)商自己才能刷新應用程序,所以使用者很難對ECU內(nèi)部軟件進行更新和維護。隨著車載網(wǎng)絡總線的發(fā)展,開始探索通過CAN總線通訊數(shù)據(jù)刷新ECU應用程序,車載診斷服務的逐步完善使其成為了現(xiàn)實。將一段代碼(Bootloader)注入到ECU存儲器內(nèi),利用診斷功能將汽車控制器軟件程序下載到控制器內(nèi)存區(qū)域。汽車控制器開發(fā)了診斷刷新功能,即可在整車網(wǎng)絡中借助診斷設備通過車載診斷接口完成整車相關控制器軟件程序下載,無需拆卸控制器硬件。但是在對汽車控制器進行刷新過程中存在很多問題,例如缺乏對汽車控制器刷新的安全保護功能,刷新應用程序數(shù)據(jù)與汽車控制器不匹配,刷新應用程序數(shù)據(jù)不可靠等。上述問題都是汽車控制器刷新過程中存在的安全隱患,會影響到汽車整車的安全性和穩(wěn)定性。
技術實現(xiàn)要素:本發(fā)明所要解決的技術問題是針對現(xiàn)有技術中存在的上述不足,提供一種汽車控制器的刷新方法和裝置,該方法可以加強對汽車控制器刷新的安全保護,使得刷新應用程序數(shù)據(jù)與汽車控制器匹配,提高刷新應用程序數(shù)據(jù)的可靠性,大大提高了汽車整車的安全性和穩(wěn)定性。解決本發(fā)明技術問題所采用的技術方案是提供一種汽車控制器的刷新方法,所述汽車控制器上電或復位后運行的第一段代碼為Bootloader,Bootloader可分為PBL和SBL兩部分,其中,所述PBL駐留在所述汽車控制器的ROM內(nèi),所述汽車控制器的刷新方法包括以下步驟:(1)所述汽車控制器診斷預刷新,其包括:所述汽車控制器信息和/或所述汽車控制器內(nèi)應用程序版本信息的安全校驗認證;(2)所述汽車控制器診斷刷新。優(yōu)選的是,所述步驟(1)中的所述汽車控制器信息安全校驗認證的內(nèi)容包括:所述汽車控制器內(nèi)的Bootloader的軟件版本信息、所述汽車的廠信息、所述汽車的車輛VIN碼信息中的任意一項或幾項。優(yōu)選的是,所述步驟(1)中的所述汽車控制器診斷預刷新包括所述汽車狀態(tài)檢查。優(yōu)選的是,所述步驟(1)中的所述汽車控制器診斷預刷新包括所述汽車狀態(tài)檢查內(nèi)容包括:所述汽車的電源電壓信息、所述汽車的運動狀態(tài)信息、所述汽車的發(fā)動機運行狀態(tài)信息、所述汽車的防盜狀態(tài)信息中的任意一項或幾項。優(yōu)選的是,所述步驟(2)中所述汽車控制器診斷刷新前,對所述汽車控制器進行解鎖驗證。優(yōu)選的是,所述步驟(2)中的汽車控制器診斷刷新包括駐留在所述汽車控制器的ROM內(nèi)的PBL將所述SBL下載到所述汽車控制器的RAM中。優(yōu)選的是,所述步驟(2)中的所述汽車控制器診斷刷新包括下載應用程序數(shù)據(jù),并對所述應用程序數(shù)據(jù)進行檢查校驗。優(yōu)選的是,所述步驟(2)中的所述汽車控制器診斷刷新還包括將Bootloader中的中斷向量表在應用程序中重構。本發(fā)明還提供一種汽車控制器的刷新裝置,包括:汽車控制器診斷預刷新單元,用于安全校驗認證所述汽車控制器信息和/或所述汽車控制器內(nèi)應用程序版本信息;和汽車控制器診斷刷新單元,用于診斷刷新所述汽車控制器。優(yōu)選的是,所述汽車控制器診斷刷新單元中還包括所述汽車控制器應用程序檢查校驗單元,用于對汽車控制器下載的應用程序進行檢查校驗。本發(fā)明的汽車控制器的刷新方法可以加強對汽車控制器刷新的安全保護,使得刷新應用程序數(shù)據(jù)與汽車控制器匹配,提高刷新應用程序數(shù)據(jù)的可靠性,大大提高了汽車整車的安全性和穩(wěn)定性。附圖說明圖1是本發(fā)明實施例1中的汽車控制器內(nèi)的Bootloader軟件存儲分布;圖2是本發(fā)明實施例2中的汽車控制器啟動及刷新狀態(tài)時序圖。具體實施方式為使本領域技術人員更好地理解本發(fā)明的技術方案,下面結合附圖和具體實施方式對本發(fā)明作進一步詳細描述。實施例1本實施例提供一種汽車控制器的刷新方法,所述汽車控制器上電或復位后運行的第一段代碼為Bootloader,Bootloader可分為PBL和SBL兩部分,其中,所述PBL駐留在所述汽車控制器的ROM內(nèi),所述汽車控制器的刷新方法的特征在于,包括以下步驟:S101所述汽車控制器診斷預刷新,其包括:所述汽車控制器信息和/或所述汽車控制器內(nèi)應用程序版本信息的安全校驗認證;S102所述汽車控制器診斷刷新。Bootloader是系統(tǒng)上電或者復位后運行的第一段代碼,這段程序?qū)⑾到y(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),為最終調(diào)用應用程序準備好正確的環(huán)境。汽車電子中所謂的Bootloader是一個狹義的概念,可稱為引導加載/升級程序,將診斷設備中新版本的軟件下載到汽車控制器中,即軟件/程序升級更新。就汽車控制器來說:刷新就是數(shù)據(jù)的下載/上傳。如圖1所示,Bootloader軟件在汽車控制器軟件架構中可分成PBL(PrimaryBootloader)和SBL(SecondBootloader)兩個獨立的部分,分別駐留在汽車控制器的ROM和RAM內(nèi)。SBL駐留在RAM中,可以節(jié)省Bootloader占用的ROM空間,且刷新完成后SBL將失效,即可用于存儲其它變量數(shù)據(jù)。PBL駐留在ROM中的受保護的閃存中,應用程序和校正數(shù)據(jù)則在ROM中的可擦寫的閃存中。診斷設備通過CAN通訊對汽車控制器進行診斷刷新。PBL由主引導模塊、診斷模塊、網(wǎng)絡模塊、CAN驅(qū)動模塊和定時器模塊組成,執(zhí)行代碼量約10k。在出廠前把PBL寫入一個固定的受保護的flash區(qū)域,在復位后激活。它的功能為檢測軟硬件的版本信息(硬件、軟件、零件號等)、將SBL下載到RAM中、跳轉到SBL等。為節(jié)省RAM空間,SBL由FLASH的擦除\編程代碼組成,其他模塊(比如引導、診斷、網(wǎng)絡、定時器)復用PBL內(nèi)的,SBL執(zhí)行代碼量4k左右。SBL可以看作PBL增加擦除和刷新功能的擴展集;通過PBL將SBL下載到RAM中并在RAM中運行,負責更新代碼或數(shù)據(jù),每次使用后均刪除;SBL的功能有:擦除和刷新Flash區(qū)域、驗證刷新數(shù)據(jù)的有效性等。汽車控制器上電后即運行Bootloader這段代碼,具體運行邏輯如下:(1)上電后,汽車控制器即進入PBL,若在規(guī)定的時間沒有收到刷新指令,即進入正常的應用程序(若沒有檢測到有效的應用程序,將停留在PBL),把控制權轉換給應用程序;若收到了刷新指令,進入步驟2;(2)PBL通過與診斷設備通信把Flash的驅(qū)動SBL下載到RAM中;(3)診斷設備通過PBL把新的應用程序傳遞給SBL,SBL把應用程序?qū)懙较鄳奈恢茫?4)刷新完新的應用程序后,將對數(shù)據(jù)進行校驗,無誤后,重啟ECU。ECU在運行應用程序時,當收到診斷服務(DiagnosticSessionControl)的值為刷新會話(ProgrammingSession)時,也可跳轉到Bootloader進行刷新工作。將Bootloader分成PBL和SBL有以下好處:(1)運行最小的Boot程序(PBL)和最大的靈活性;(2)一旦Bootloader運行出現(xiàn)異常(如異常斷電),不會產(chǎn)生難以恢復的后果;(3)可以保密SBL。本實施例的汽車控制器的刷新方法可以加強對汽車控制器刷新的安全保護,使得刷新應用程序數(shù)據(jù)與汽車控制器匹配,提高刷新應用程序數(shù)據(jù)的可靠性,大大提高了汽車整車的安全性和穩(wěn)定性。實施例2本實施例提供一種汽車控制器的刷新方法,所述汽車控制器上電或復位后運行的第一段代碼為Bootloader,Bootloader可分為PBL和SBL兩部分,其中,所述PBL駐留在所述汽車控制器的ROM內(nèi),所述汽車控制器的刷新方法包括以下步驟:S201標準診斷會話:對于汽車控制器的刷新是通過診斷設備與汽車控制器之間建立診斷通訊來實現(xiàn)的。診斷設備通過$22診斷服務讀取要刷新的汽車控制器內(nèi)的Bootloader的軟件版本信息、所述汽車的廠信息、所述汽車的車輛VIN碼信息中的任意一項或幾項,通過$22診斷服務并對上述信息進行核對。若核對通不過,則不允許進行下一步的操作。這樣可以使得診斷設備中將要刷新的應用程序與要刷新的車輛控制器信息和/或汽車控制器內(nèi)應用版本信息相匹配,才進行下一步的操作。對于汽車控制器的刷新是通過診斷設備與汽車控制器之間建立診斷通訊來實現(xiàn)的。診斷設備通過$22診斷服務讀取要刷新的汽車控制器內(nèi)的Bootloader的軟件版本信息、所述汽車的廠信息、所述汽車的車輛VIN碼信息中的任意一項或幾項。所使用的診斷設備優(yōu)選為診斷儀或PC機作為上位機,連接到汽車控制器的診斷口,對汽車控制器進行刷新;可連接網(wǎng)絡對診斷儀中的SBL和應用軟件進行升級。S202擴展診斷會話:(1)診斷設備進入擴展診斷會話模式,屏蔽其他診斷幀,并停止故障碼DTC的設置;同時屏蔽網(wǎng)管幀和應用幀。為提高診斷設備的刷新速率,用戶可選擇提高通訊的波特率。(2)診斷設備通過$27診斷服務并對上述讀取的信息進行安全校驗認證。若安全校驗認證通不過,則不允許進行下一步的操作。這樣只有診斷設備中要刷入的應用程序與汽車控制器匹配,診斷設備才可以對汽車控制器進行刷新操作。(3)診斷設備通過$31診斷服務對當前汽車狀態(tài)進行檢查,汽車狀態(tài)檢查內(nèi)容包括:所述汽車的電源電壓信息、所述汽車的運動狀態(tài)信息、所述汽車的發(fā)動機運行狀態(tài)信息、所述汽車的防盜狀態(tài)信息中的任意一項或幾項。若汽車處于運動狀態(tài)、汽車的發(fā)動機處于運行狀態(tài)、汽車防盜裝置未解鎖狀態(tài)中的一項或者幾項,則不進行下一步操作。這樣可以保護汽車在不受汽車控制器控制的狀態(tài)下,安全實現(xiàn)對汽車控制器的刷新。并可防止由于汽車控制器的刷新,給汽車的各種狀態(tài)下帶來危險。S203刷新會話:(1)診斷設備進入刷新診斷模式,將汽車控制器切換到Bootloader程序中。(2)診斷設備通過$27診斷服務對汽車控制器進行解鎖驗證,通過此步安全校驗認證之后,安全功能打開汽車控制器,此時可以執(zhí)行刷新操作。若解鎖驗證通不過,則不允許進行下一步的操作。這樣,可以大大提高汽車的安全控制系數(shù)。(3)駐留在所述汽車控制器的ROM內(nèi)的PBL將所述SBL下載到汽車控制器的RAM中,擦除汽車控制器中存儲的已有應用數(shù)據(jù)。SBL由FLASH的擦除/編程代碼組成,SBL執(zhí)行代碼量4k左右,SBL可以看作PBL增加擦除和刷新功能的擴展集,通過PBL將SBL下載到RAM中并在RAM中運行,負責更新代碼或數(shù)據(jù),每次使用后均刪除;SBL的功能有:擦除和刷新Flash區(qū)域、驗證刷新數(shù)據(jù)的有效性等。本實施例中的SBL文件和要刷入的新的應用程序文件采用流行的S19、Hex或二進制格式,可利用編譯器直接把源代碼或庫文件生成S19、Hex或二進制文件。大大增強了汽車控制器,對于各種程序的適配性。(4)汽車控制器下載應用程序數(shù)據(jù),根據(jù)Flash存儲的地址分區(qū),下載應用程序到Flash的每個扇區(qū)內(nèi)。S204刷新可靠性驗證:診斷設備通過CRC16服務校驗檢查下載的應用程序數(shù)據(jù)是否正確:如果正確刷完所有數(shù)據(jù)塊,則置位Flash指定地址中的標志位;如果所刷數(shù)據(jù)不正確,則停止此次刷新并提示錯誤,然后擦除所有扇區(qū)數(shù)據(jù),重新刷寫。然后再通過該CRC16服務請求ECU對所有刷入的所有應用數(shù)據(jù)進行CRC16服務校驗,正確后設置應用存在標志位,不正確將停止下一步操作。通過該步對刷入的應用程序數(shù)據(jù)的檢查,可以提高應用程序數(shù)據(jù)的安全可靠性,防止刷入錯誤的應用程序數(shù)據(jù),給汽車控制器帶來安全隱患。S205應用校驗:刷新應用程序數(shù)據(jù)完成后,汽車控制器執(zhí)行復位;重啟后檢查Flash制定位置的標志位是否存在:若Flash制定位置的標志位存在,則進入應用程序;若Flash制定位置的標志位不存在,則停留在Bootloader程序中。通過該步復位,可以引導診斷器在刷新和應用程序之間切換。S206擴展診斷會話:(1)汽車控制器進入應用程序后,則進入擴展模式。汽車控制器開啟通訊功能,允許設置DTC。(2)診斷設備通過$27診斷服務進行安全校驗認證。若安全校驗認證通不過,則不允許進行下一步的操作。通過該步安全校驗認證,可以提高汽車控制器應用程序運行的安全性。(3)診斷設備寫入汽車的車輛VIN碼信息,并清除DTC。S207應用軟件標準診斷會話:恢復汽車控制器進入標準會話模式,汽車控制器正常運行應用程序。上述的診斷設備和控制器之間的CAN診斷幀通訊來完成ECU刷新。其中診斷服務規(guī)范符合ISO14229,通訊傳輸協(xié)議符合ISO15765-2/4。主要應用于更新控制器內(nèi)部軟件或標定代碼,進行軟件的升級。所述汽車控制器診斷刷新還包括將Bootloader中的中斷向量表在應用程序中重構?,F(xiàn)有技術中的中斷向量表駐留在Bootloader程序中的PBL中,但實際的中斷程序入口是在應用程序中定義的。因此,需要對PBL中的中斷向量表進行重定位。中斷發(fā)生時,從實際的中斷向量表跳轉到應用的跳轉表,再從應用的跳轉表中進入到中斷服務程序。通過將Bootloader中的中斷向量表在應用程序中重構,可以實現(xiàn)應用程序中中斷向量表的改寫。由于對汽車控制器進行了刷新操作,所以原有的中斷向量表的中斷向量表會發(fā)生變化,而在Bootloader中無法隨意更改更改中斷向量表。而在實現(xiàn)中斷向量表從Bootloader到應用程序中的中斷向量表的跳轉,可以實現(xiàn)在應用程序中更改中斷向量表。例如1號中斷和2號中斷映射如下:PBL內(nèi)中斷向量表:應用的跳轉表:如圖2為汽車控制器啟動及刷新狀態(tài)時序圖,其中,刷新可靠性驗證是在RAM中進行的,ROM中還有數(shù)據(jù)緩沖區(qū);刷新會話、應用校驗、標準診斷會話是在FlashROM中的Bootloader軟件程序中實現(xiàn)的;擴展診斷會話和應用軟件標準診斷會話是在FlashROM中的應用程序軟件中實現(xiàn)的。汽車控制器的刷新會話通過Flash的擦寫程序?qū)崿F(xiàn);刷新可靠性驗證成功后,開啟汽車控制器重啟服務,則汽車控制器重啟;汽車控制器重啟后,直接進入到應用校驗;應用校驗無效,則進入到標準診斷會話模式;應用校驗無效,則進入到應用軟件標準診斷會話。本應用軟件刷新可用于以下階段或情景:開發(fā)階段:控制器軟件程序從開發(fā)到凍結,要經(jīng)歷多次修改的過程,刷新可以方便地實現(xiàn)控制器軟件程序的及時更新。生產(chǎn)線:在主機廠生產(chǎn)線上,根據(jù)車型配置不同,通過刷新設備對控制器刷寫不同的應用程序。售后:通過刷新工具完成控制器軟件程序的更新升級。實施例3本實施例提供一種汽車控制器的刷新裝置,包括:汽車控制器診斷預刷新單元,用于安全校驗認證所述汽車控制器信息和/或所述汽車控制器內(nèi)應用程序版本信息;和汽車控制器診斷刷新單元,用于診斷刷新所述汽車控制器。優(yōu)選的是,所述汽車控制器診斷刷新單元中還包括所述汽車控制器應用程序檢查校驗單元,用于對汽車控制器下載的應用程序進行檢查校驗??梢岳斫獾氖牵陨蠈嵤┓绞絻H僅是為了說明本發(fā)明的原理而采用的示例性實施方式,然而本發(fā)明并不局限于此。對于本領域內(nèi)的普通技術人員而言,在不脫離本發(fā)明的精神和實質(zhì)的情況下,可以做出各種變型和改進,這些變型和改進也視為本發(fā)明的保護范圍。