欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于Bootloader自更新的ECU固件更新方法

文檔序號:6631519閱讀:2632來源:國知局
基于Bootloader自更新的ECU固件更新方法
【專利摘要】本發(fā)明涉及一種基于Bootloader自更新的ECU固件更新方法,包括:步驟S1:劃分ECU系統(tǒng)的存儲空間;步驟S2:判斷ECU系統(tǒng)接收到應用程序更新請求還是Bootloader更新請求,若為應用程序更新請求,執(zhí)行步驟S3,若為Bootloader更新請求,執(zhí)行步驟S4;步驟S3:采用增量更新方式更新應用程序代碼區(qū)的代碼,執(zhí)行步驟S5;步驟S4:Bootloader程序進行整體式自更新Bootloader區(qū)的代碼,執(zhí)行步驟S5;步驟S5:重寫版本信息區(qū)中的相應版本信息,ECU系統(tǒng)復位。與現(xiàn)有技術(shù)相比,本發(fā)明具有節(jié)約時間和成本,保證Bootloader的安全性,以及燒寫過程更加高效可靠等優(yōu)點。
【專利說明】基于Bootloader自更新的ECU固件更新方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種固件更新方法,尤其是涉及一種基于Bootloader自更新的E⑶固件更新方法。

【背景技術(shù)】
[0002]在汽車電子控制單元(ECU)中,不需要加載操作系統(tǒng)內(nèi)核,引導程序(Bootloader)是用來完成嵌入式系統(tǒng)啟動和系統(tǒng)軟件加載工作的程序,主要工作是用于應用程序代碼的更新,即在線更新。
[0003]一般對ECU進行程序燒寫,常采用整體更新的方式,先對整個存儲空間進行擦除,然后將整個新的程序燒寫至目標ECU中。但有的時候,前后ECU軟件版本改動不大,若仍然采用整體更新的方式,則更新效率低,且更新時占用的內(nèi)存消耗也大。
[0004]同時,在設(shè)計Bootloader時,應盡可能保證其功能完善且沒有漏洞。但是不能完全消除漏洞存在和考慮不全的可能性。所以還需要考慮Bootloader的自更新功能,以便能夠在發(fā)現(xiàn)問題或者改善其相關(guān)功能后,發(fā)布新的版本,通過遠程更新的方式,對其進行重新燒寫,進一步保證Bootloader的各項性能,從而保證E⑶固件遠程更新的高效、安全和可靠的執(zhí)行。


【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于Bootloader自更新的ECU固件更新方法,應用程序的更新采用增量更新方法,只對新版本程序不同于舊版本程序的部分進行更新,節(jié)約時間和成本,而Bootloader自更新能保證Bootloader的安全性,使得程序燒寫更加高效可靠。
[0006]本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
[0007]—種基于Bootloader自更新的E⑶固件更新方法,包括以下步驟:
[0008]步驟S1:運行Bootloader程序,將E⑶系統(tǒng)的存儲空間劃分為用戶數(shù)據(jù)存儲區(qū)和程序存儲區(qū),所述用戶數(shù)據(jù)存儲區(qū)包括版本信息區(qū)和標記區(qū),所述版本信息區(qū)包括Bootloader版本信息和應用程序版本信息,所述標記區(qū)包括更新請求標記、應用程序有效性標記和引導區(qū)交換標記,所述程序存儲區(qū)包括應用程序更新區(qū)、Bootloader區(qū)和固定區(qū)域,所述應用程序更新區(qū)包括應用程序代碼區(qū)和中斷向量重映射表,所述固定區(qū)域包括復位向量重映射表和中斷向量表;
[0009]步驟S2:讀取更新請求標記,判斷ECU系統(tǒng)接收到應用程序更新請求還是Bootloader更新請求,若為應用程序更新請求,執(zhí)行步驟S3,若為Bootloader更新請求,執(zhí)行步驟S4 ;
[0010]步驟S3:獲取最新的應用程序版本信息,采用增量更新方式更新應用程序代碼區(qū)的代碼,執(zhí)行步驟S5;
[0011]步驟S4:獲取最新的Bootloader版本信息,Bootloader程序進行整體式自更新Bootloader區(qū)的代碼,執(zhí)行步驟S5 ;
[0012]步驟S5:更新版本信息區(qū)中的Bootloader版本信息或應用程序版本信息,E⑶系統(tǒng)復位。
[0013]所述用戶數(shù)據(jù)存儲區(qū)為EEPROM區(qū)域。
[0014]所述用戶數(shù)據(jù)存儲區(qū)為Flash區(qū)域,E⑶系統(tǒng)的存儲空間還包括用戶數(shù)據(jù)備份區(qū),為用戶數(shù)據(jù)存儲區(qū)的信息備份。
[0015]所述應用程序代碼區(qū)劃分為若干個功能模塊,每個功能模塊存儲不同功能的應用程宇代碼,每個功能模塊具有一個應用程序有效性標記與之對應。
[0016]所述應用程序有效性標記分為有效和無效,若功能模塊對應的應用程序有效性標記為有效,則執(zhí)行此功能模塊的應用程序代碼,反之不執(zhí)行。
[0017]所述步驟S3具體為:
[0018]301:獲取最新應用程序版本彳目息以及對應的最新應用程序代碼;
[0019]302:由中斷向量表跳轉(zhuǎn)中斷向量重映射表,執(zhí)行相應中斷處理程序,對比最新應用程序代碼與現(xiàn)有應用程序代碼,獲得兩者間有變動的功能模塊,并使與之對應的應用程序有效性標記為無效;
[0020]303:擦除應用程序有效性標記為無效的功能模塊中現(xiàn)有應用程序代碼,燒寫最新應用程序代碼到擦除后的功能模塊,并使與之對應的應用程序有效性標記為有效,完成增量更新。
[0021]所述Bootloader區(qū)劃分為兩塊Bootloader分區(qū)域。
[0022]所述引導區(qū)交換標記分為無效和有效,無效表示不切換E⑶系統(tǒng)運行的Bootloader分區(qū)域,有效表示切換EQJ系統(tǒng)運行的Bootloader分區(qū)域。
[0023]所述步驟S4具體為:
[0024]401:獲取最新Bootloader版本信息以及對應的最新Bootloader程序代碼;
[0025]402:ECU系統(tǒng)復位,由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為無效,不切換E⑶運行的Bootloader分區(qū)域,則跳轉(zhuǎn)到原Bootloader分區(qū)域,運行現(xiàn)有 Bootloader 程序;
[0026]403:擦除與當前Bootloader分區(qū)域?qū)牧硪?Bootloader分區(qū)域,并燒寫進最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為有效;
[0027]404:ECU系統(tǒng)再次復位,由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為有效,則跳轉(zhuǎn)切換后的Bootloader分區(qū)域,運行最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為無效。
[0028]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
[0029]I)本發(fā)明方法能夠通過Bootloader實現(xiàn)E⑶應用程序在線燒寫,應用程序采用增量更新方法,只對新版本程序不同于舊版本程序的部分進行更新,節(jié)約時間和成本;
[0030]2)本發(fā)明同時實現(xiàn)了 Bootloader自我更新的功能,Bootloader自更新能保證Bootloader的安全性,使得程序燒寫更加高效可靠。
[0031]3)本發(fā)明針對應用程序增量更新和Bootloader自更新對E⑶系統(tǒng)的存儲空間進行了合理規(guī)劃,包括:在用戶數(shù)據(jù)存儲區(qū)為Flash區(qū)域時,還分配了一個用戶數(shù)據(jù)備份區(qū);Bootloader分區(qū)域與復位中斷向量做隔離,防止丟失復位向量,并利用復位向量重映射,完成兩個Bootloader分區(qū)域之間的切換,以便在更新過程的任意時刻發(fā)生異常,都能保證其重映射到功能完備的Bootloader區(qū)中,避免整個系統(tǒng)進入“孤立”狀態(tài)。

【專利附圖】

【附圖說明】
[0032]圖1為本發(fā)明方法流程圖;
[0033]圖2為本發(fā)明E⑶存儲空間規(guī)劃示意圖;
[0034]圖3為本發(fā)明ECU應用程序增量更新方法中存儲空間布局示意圖;
[0035]圖4為本發(fā)明Bootloader自更新方法中存儲空間布局示意圖。

【具體實施方式】
[0036]下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術(shù)方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
[0037]如圖1所示,一種基于Bootloader自更新的E⑶固件更新方法,包括以下步驟:
[0038]步驟S1:如圖2所示,運行Bootloader程序,將E⑶系統(tǒng)的存儲空間劃分為用戶數(shù)據(jù)存儲區(qū)和程序存儲區(qū),用戶數(shù)據(jù)存儲區(qū)(Data Flash)包括版本信息區(qū)和標記區(qū),版本信息區(qū)包括Bootloader版本信息和應用程序版本信息,標記區(qū)包括更新請求標記、應用程序有效性標記和引導區(qū)交換標記,程序存儲區(qū)(Program Flash/Code Flash)包括應用程序更新區(qū)、Bootloader區(qū)和固定區(qū)域,應用程序更新區(qū)包括應用程序代碼區(qū)和中斷向量重映射表,固定區(qū)域包括復位向量重映射表和中斷向量表。
[0039]在版本驗證時,需要讀取版本信息區(qū)的信息,同上位機發(fā)送過來的版本信息作比對,同時在更新完成后,需要重寫版本信息。為了防止外部異常,該部分信息需要單獨存儲,一直保持有效性。
[0040]在該布局中應用程序更新區(qū)、Bootloader區(qū)以及固定區(qū)域位于程序/代碼Flash中,該三塊區(qū)域都應該保持程序/代碼Flash最小擦除塊對齊。用戶數(shù)據(jù)存儲區(qū)為EEPROM(電可擦除只讀存儲器)區(qū)域;或者用戶數(shù)據(jù)存儲區(qū)為Flash區(qū)域,ECU系統(tǒng)的存儲空間還包括用戶數(shù)據(jù)備份區(qū),用戶數(shù)據(jù)備份區(qū)為用戶數(shù)據(jù)存儲區(qū)的信息備份,在ECU系統(tǒng)不包含EEPROM時有效,因為若沒有EEPROM支持,不能對數(shù)據(jù)進行單字節(jié)操作,在改寫數(shù)據(jù)時,需要對整個扇區(qū)進行擦除,如果系統(tǒng)出現(xiàn)異常,將引起數(shù)據(jù)丟失,故需要再分配一塊區(qū)域作為信息備份。
[0041]步驟S2:讀取更新請求標記,判斷ECU系統(tǒng)接收到應用程序更新請求還是Bootloader更新請求,若為應用程序更新請求,執(zhí)行步驟S3,若為Bootloader更新請求,執(zhí)行步驟S4。
[0042]步驟S3:獲取最新的應用程序版本信息,采用增量更新方式更新應用程序代碼區(qū)的代碼,執(zhí)行步驟S5。其中,應用程序代碼區(qū)劃分為若干個功能模塊,每個功能模塊存儲不同功能的應用程序代碼,應用程序有效性標記分為有效和無效,若功能模塊對應的應用程序有效性標記為有效,則執(zhí)行此功能模塊的應用程序代碼,反之不執(zhí)行。
[0043]步驟S3具體為:
[0044]301:根據(jù)ECU系統(tǒng)內(nèi)現(xiàn)有應用程序版本信息,獲取最新應用程序版本信息以及對應的最新應用程序代碼;
[0045]302:由中斷向量表跳轉(zhuǎn)中斷向量重映射表,在中斷向量重映射表內(nèi)有跳轉(zhuǎn)指令,通過跳轉(zhuǎn)指令跳轉(zhuǎn)到應用程序中斷處理路徑中,執(zhí)行相應中斷處理程序,包括:對比最新應用程序代碼與現(xiàn)有應用程序代碼,獲得兩者間有變動的功能模塊,并使與之對應的應用程序有效性標記為無效;
[0046]303:擦除應用程序有效性標記為無效的功能模塊中現(xiàn)有應用程序代碼,燒寫從上位機下載的最新應用程序代碼到擦除后功能模塊的應用程序代碼區(qū)內(nèi),并使與之對應的應用程序有效性標記為有效,完成增量更新。
[0047]因此要對一段應用程序進行更新需要先清除其有效性標記,使該段程序不可執(zhí)行,然后將其擦除,再燒寫新的應用程序,新程序燒寫完成后,將寫程序有效性標記使更新后的程序為有效,至此,新的程序被置為可執(zhí)行的有效程序。
[0048]如圖3所示,在功能模塊A修改前后,其他模塊的內(nèi)容及其在控制器中的內(nèi)存位置都保持不變,更新部分內(nèi)容僅與修改模塊相關(guān)。但是由于在內(nèi)存配置時,需要為每個功能模塊預留一定的內(nèi)存地址,以滿足其功能擴展的需要,在各功能模塊間會產(chǎn)生一定大小的內(nèi)存碎片,影響內(nèi)存利用率。要減小內(nèi)存碎片,最有效的辦法是減小可變功能模塊的數(shù)量,這需要對應用程序功能模塊做詳細的分析。
[0049]步驟S4:獲取最新的Bootloader版本信息,Bootloader程序進行整體式自更新Bootloader區(qū)的代碼,執(zhí)行步驟S5。
[0050]其中,Bootloader區(qū)劃分為兩塊Bootloader分區(qū)域,包括第一 Bootloader區(qū)和第二 Bootloader區(qū)。引導區(qū)交換標記(SWAP_FLAG)分為無效和有效兩類,無效表示E⑶系統(tǒng)運行的Bootloader分區(qū)域不做切換,有效表示EOJ系統(tǒng)運行的Bootloader分區(qū)域要進行切換,所以,根據(jù)該標記做復位向量重映射表,當引導區(qū)交換標記為有效時,復位向量重映射表跳轉(zhuǎn)到“更新器起始地址”,否則進入Bootloader區(qū)。
[0051]如圖2、4所示,步驟S4具體為:
[0052]401:根據(jù)EQJ系統(tǒng)內(nèi)原Bootloader版本信息,獲取最新Bootloader版本信息以及對應的最新Bootloader程序代碼;
[0053]402:E⑶系統(tǒng)復位(RESET),由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為無效,EOJ系統(tǒng)運行的Bootloader分區(qū)域不做切換,則跳轉(zhuǎn)到原Bootloader分區(qū)域,假設(shè)為第一 Bootloader區(qū),運行現(xiàn)有Bootloader程序;
[0054]403:擦除與當前Bootloader分區(qū)域?qū)牧硪?Bootloader分區(qū)域,即擦除第二Bootloader區(qū),并燒寫進從上位機下載的最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為有效;
[0055]404:ECU系統(tǒng)再次復位,由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為有效,則跳轉(zhuǎn)切換后的Bootloader分區(qū)域,即在第二 Bootloader區(qū)運行最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為無效。
[0056]下一次Bootloader自更新則由第二 Bootloader區(qū)中版本擦除第一 Bootloader區(qū)并燒寫新版本,如此循環(huán)在兩個Bootloader分區(qū)域中切換新老版本。
[0057]步驟S5:更新版本信息區(qū)中的Bootloader版本信息或應用程序版本信息,E⑶系統(tǒng)復位。
[0058]以上通過Bootloader與復位中斷向量做隔離,防止丟失復位向量,并利用復位向量重映射,完成第一 Bootloader區(qū)和第二 Bootloader區(qū)的切換,在更新過程的任意時刻發(fā)生異常,都能保證其重映射到功能完備的Bootloader分區(qū)域中,避免整個系統(tǒng)進入“孤立”狀態(tài)。
【權(quán)利要求】
1.一種基于Bootloader自更新的E⑶固件更新方法,其特征在于,包括以下步驟: 步驟S1:運行Bootloader程序,將E⑶系統(tǒng)的存儲空間劃分為用戶數(shù)據(jù)存儲區(qū)和程序存儲區(qū),所述用戶數(shù)據(jù)存儲區(qū)包括版本信息區(qū)和標記區(qū),所述版本信息區(qū)包括Bootloader版本信息和應用程序版本信息,所述標記區(qū)包括更新請求標記、應用程序有效性標記和引導區(qū)交換標記,所述程序存儲區(qū)包括應用程序更新區(qū)、Bootloader區(qū)和固定區(qū)域,所述應用程序更新區(qū)包括應用程序代碼區(qū)和中斷向量重映射表,所述固定區(qū)域包括復位向量重映射表和中斷向量表; 步驟S2:讀取更新請求標記,判斷ECU系統(tǒng)接收到應用程序更新請求還是Bootloader更新請求,若為應用程序更新請求,執(zhí)行步驟S3,若為Bootloader更新請求,執(zhí)行步驟S4 ; 步驟S3:獲取最新的應用程序版本信息,采用增量更新方式更新應用程序代碼區(qū)的代碼,執(zhí)行步驟S5; 步驟S4:獲取最新的Bootloader版本信息,Bootloader程序進行整體式自更新Bootloader區(qū)的代碼,執(zhí)行步驟S5 ; 步驟S5:更新版本信息區(qū)中的Bootloader版本信息或應用程序版本信息,ECU系統(tǒng)復位。
2.根據(jù)權(quán)利要求1所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述用戶數(shù)據(jù)存儲區(qū)為EEPROM區(qū)域。
3.根據(jù)權(quán)利要求1所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述用戶數(shù)據(jù)存儲區(qū)為Flash區(qū)域,ECU系統(tǒng)的存儲空間還包括用戶數(shù)據(jù)備份區(qū),為用戶數(shù)據(jù)存儲區(qū)的信息備份。
4.根據(jù)權(quán)利要求1所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述應用程序代碼區(qū)劃分為若干個功能模塊,每個功能模塊存儲不同功能的應用程序代碼,每個功能模塊具有一個應用程序有效性標記與之對應。
5.根據(jù)權(quán)利要求4所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述應用程序有效性標記分為有效和無效,若功能模塊對應的應用程序有效性標記為有效,則執(zhí)行此功能模塊的應用程序代碼,反之不執(zhí)行。
6.根據(jù)權(quán)利要求5所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述步驟S3具體為: 301:獲取最新應用程序版本信息以及對應的最新應用程序代碼; 302:由中斷向量表跳轉(zhuǎn)中斷向量重映射表,執(zhí)行相應中斷處理程序,對比最新應用程序代碼與現(xiàn)有應用程序代碼,獲得兩者間有變動的功能模塊,并使與之對應的應用程序有效性標記為無效; 303:擦除應用程序有效性標記為無效的功能模塊中現(xiàn)有應用程序代碼,燒寫最新應用程序代碼到擦除后的功能模塊,并使與之對應的應用程序有效性標記為有效,完成增量更新。
7.根據(jù)權(quán)利要求1所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述Bootloader區(qū)劃分為兩塊Bootloader分區(qū)域。
8.根據(jù)權(quán)利要求7所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述引導區(qū)交換標記分為無效和有效,無效表示不切換E⑶系統(tǒng)運行的Bootloader分區(qū)域,有效表示切換E⑶系統(tǒng)運行的Bootloader分區(qū)域。
9.根據(jù)權(quán)利要求8所述的基于Bootloader自更新的ECU固件更新方法,其特征在于,所述步驟S4具體為: 401:獲取最新Bootloader版本信息以及對應的最新Bootloader程序代碼; 402:ECU系統(tǒng)復位,由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為無效,不切換EOJ系統(tǒng)運行的Bootloader分區(qū)域,則跳轉(zhuǎn)到原Bootloader分區(qū)域,運行現(xiàn)有 Bootloader 程序; 403:擦除與當前Bootloader分區(qū)域?qū)牧硪?Bootloader分區(qū)域,并燒寫進最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為有效; 404:ECU系統(tǒng)再次復位,由中斷向量表跳轉(zhuǎn)到復位向量重映射表,讀取引導區(qū)交換標記為有效,則跳轉(zhuǎn)切換后的Bootloader分區(qū)域,運行最新Bootloader程序代碼,引導區(qū)交換標記設(shè)為無效。
【文檔編號】G06F9/445GK104360877SQ201410577297
【公開日】2015年2月18日 申請日期:2014年10月24日 優(yōu)先權(quán)日:2014年10月24日
【發(fā)明者】張戟, 廖治, 謝朋甫, 朱翔宇, 彭勇, 陳啟鵬 申請人:同濟大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
开平市| 泰来县| 博白县| 印江| 岐山县| 海城市| 阿拉善左旗| 姚安县| 祁阳县| 唐山市| 安塞县| 四子王旗| 安国市| 招远市| 泗水县| 精河县| 东城区| 寿阳县| 东明县| 长泰县| 永登县| 康定县| 定日县| 红桥区| 湖口县| 太保市| 修文县| 乃东县| 拜泉县| 贵阳市| 泰州市| 视频| 新巴尔虎左旗| 西华县| 湖南省| 宜城市| 遂平县| 宿迁市| 开阳县| 辽宁省| 广东省|