一種自動更新的bootloader裝置及更新方法
【專利摘要】本發(fā)明提供一種自動更新的bootloader裝置及更新方法,包括:bootloader引導程序第一模塊和bootloader引導程序第二模塊;所述bootloader引導程序第一模塊,用于bootloader引導程序和更新EMS區(qū);所述bootloader引導程序第二模塊,用于根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。通過使用以上裝置,可以實現(xiàn)對bootloader的程序故障響應恢復,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
【專利說明】—種自動更新的bootloader裝置及更新方法
【技術領域】
[0001]本發(fā)明涉及單片機控制【技術領域】,特別涉及一種自動更新的bootloader裝置及更新方法。
【背景技術】
[0002]隨著在現(xiàn)有的機電控制【技術領域】中,電子控制單元EQJ (ElectronicControlUnit)被廣泛應用于各種電子控制設備上。
[0003]在共軌式蓄壓器噴射系統(tǒng)中,E⑶用于通過接收傳感器的信號,借助于噴油器上的電磁閥讓柴油以正確的噴油壓力在正確的噴油點噴射出正確的噴油量,保證柴油機最佳的燃燒比、最佳的霧化效果和最佳的點火時間,以實現(xiàn)良好的經(jīng)濟性和最少的污染排放。
[0004]其中,EQJ中包括有bootloader引導程序和EMS應用程序。bootloader引導模塊是系統(tǒng)上電后運行的第一段軟件代碼,用于引導、更新程序和數(shù)據(jù)。EMS應用模塊中包括基礎軟件和應用軟件,是ECU能夠控制發(fā)動機正常工作所需要的程序。
[0005]在現(xiàn)有技術中,bootloader引導程序和EMS應用程序都處于同一個編譯鏡像內。Bootloader引導程序自我更新時,需要將bootloader引導程序相關代碼復制到RAM中執(zhí)行。
[0006]但在這種使用方式中存在一定的風險:
[0007]一種情況是在對鏡像文件中的EMS應用程序進行修改時,對鏡像中的bootloader程序或整個鏡像文件造成誤修改,使bootloader引導程序或鏡像文件不能正常加載;另一種情況是在對bootloader引導程序進行升級時出現(xiàn)突然斷電等情況,造成bootloader程序升級不完整。以上兩種情況下對bootloader程序的破壞都會造成系統(tǒng)在重新上電時出現(xiàn)錯誤。而其解決方法只能是通過維護人員將E⑶進行開蓋操作,使用Trace32或者P&E等仿真器重新刷寫ECU,從而大大增加了維護人員的工作量。
【發(fā)明內容】
[0008]本發(fā)明要解決的技術問題是提供一種自動更新的bootloader裝置及更新方法,實現(xiàn)對ECU中bootloader引導程序的故障恢復或版本更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,,大大減小了維護人員的工作量。
[0009]一種自動更新的bootloader裝置,包括:
[0010]bootloader引導程序第一模塊和bootloader引導程序第二模塊;
[0011 ] 所述bootloader弓丨導程序第一模塊,用于運行bootloader弓丨導程序;
[0012]所述bootloader引導程序第二模塊,用于根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。
[0013]優(yōu)選地,所述bootloader引導程序第二模塊安裝在所述bootloader引導程序第一模塊之后,在所述bootloader引導程序第一模塊不能正常運行bootloader引導程序時,順序運行所述bootloader引導程序第二模塊。[0014]優(yōu)選地,所述bootloader引導程序第二模塊,還包括:更新失敗反饋子模塊;
[0015]所述更新失敗反饋子模塊,用于在使用所述上位機發(fā)送的bootloader引導更新程序無法正常更新所述bootloader引導程序第一模塊中的bootloader引導程序時,向所述上位機發(fā)送更新錯誤信息。
[0016]優(yōu)選地,所述bootloader引導程序第二模塊,還包括:當前進程反饋子模塊;
[0017]所述當前進程反饋子模塊,用于在接收到所述上位機的查詢指令后,向所述上位機反饋當前運行的程序信息。
[0018]優(yōu)選地,所述bootloader引導程序第一模塊還包括:引導程序更新跳轉子模塊;
[0019]所述引導程序更新跳轉模塊,用于在接收到所述上位機發(fā)送的bootloader引導程序更新指令時,跳轉運行所述bootloader引導程序第二模塊。
[0020]優(yōu)選地,還包括:EMS應用程序模塊;
[0021]所述EMS應用程序模塊,用于在所述bootloader引導程序正常運行后運行EMS應用程序。
[0022]優(yōu)選地,所述bootloader引導程序第一模塊還包括:EMS應用程序更新子模塊;
[0023]所述EMS應用程序更新子模塊,用于根據(jù)上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序模塊中的EMS應用程序。
[0024]優(yōu)選地,所述EMS應用程序模塊中還包括:應用程序更新跳轉子模塊;
[0025]所述應用程序更新跳轉子模塊,用于在接收到所述上位機發(fā)送的EMS應用程序更新指令時,跳轉運行所述bootloader引導程序第一模塊中的EMS應用程序更新子模塊。
[0026]優(yōu)選地,所述bootloader引導程序第一模塊還包括:EMS應用計時加載子模塊;
[0027]所述EMS應用計時加載子模塊,用于在所述EMS應用程序模塊運行之前,在指定時間內等待所述上位機發(fā)送的所述EMS應用更新指令;所述指定時間為所述上位機發(fā)送所述EMS應用更新指令的時間窗。
[0028]優(yōu)選地,所述bootloader引導程序第一模塊還包括:EMS應用程序檢測子模塊;
[0029]所述EMS應用程序檢測子模塊,用于檢測所述EMS應用程序是否正確,若檢測到所述EMS應用程序不正確,將所述bootloader引導程序第一模塊設置為等待狀態(tài)。
[0030]一種自動更新的bootloader方法,包括:
[0031]運行bootloader引導程序;
[0032]檢測bootloader引導程序是否需要更新;
[0033]若所述bootlader引導程序需要更新,根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序。
[0034]優(yōu)選地,在所述根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序之后,還包括:
[0035]若無法使用所述上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序,向所述上位機發(fā)送更新錯誤信息。
[0036]優(yōu)選地,還包括:
[0037]若所述bootloader引導程序正常運行,則運行EMS應用程序。
[0038]優(yōu)選地,在運行EMS應用程序之后還包括:
[0039]若接收到所述上位機發(fā)送的EMS應用程序更新指令,跳轉運行所述bootloader弓丨導程序,根據(jù)所述上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序。
[0040]優(yōu)選地,在所述運行EMS應用程序之前,還包括:
[0041]在所述指定時間內等待接收所述上位機發(fā)送的EMS應用更新指令;
[0042]若在所述指定時間內接收到所述上位機發(fā)送的更新EMS應用程序指令,則接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
[0043]優(yōu)選地,在所述運行EMS應用程序之前,還包括:
[0044]檢測所述EMS應用程序是否正確;
[0045]若檢測到所述EMS應用程序不正確,將所述bootloader引導程序等待狀態(tài),接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
[0046]與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點:
[0047]在本發(fā)明中,包括bootloader引導程序第一模塊和bootloader引導程序第二模塊。其中,bootloader引導程序第一模塊用于運行bootloader引導程序。bootloader引導程序第二模塊用于根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。通過使用以上裝置,可以實現(xiàn)對E⑶中的bootloader引導程序故障響應恢復或版本更新操作,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
【專利附圖】
【附圖說明】
[0048]圖1是本發(fā)明提供的一種自動更新的bootloader裝置第一實施例的原理框圖;
[0049]圖2是本發(fā)明提供的一種自動更新的bootloader裝置第二實施例的原理框圖;
[0050]圖3是本發(fā)明提供的一種自動更新的bootloader裝置第三實施例的原理框圖;
[0051]圖4是本發(fā)明提供的一種自動更新的bootloader裝置第四實施例的原理框圖;
[0052]圖5是本發(fā)明提供的一種自動更新的bootloader裝置第五實施例的原理框圖;
[0053]圖6是本發(fā)明提供的一種自動更新的bootloader裝置第六實施例的原理框圖;
[0054]圖7是本發(fā)明提供的一種自動更新的bootloader方法第一實施例的流程圖;
[0055]圖8是本發(fā)明提供的一種自動更新的bootloader方法第二實施例的流程圖;
[0056]圖9是本發(fā)明提供的一種自動更新的bootloader方法第三實施例的流程圖;
[0057]圖10是本發(fā)明提供的一種自動更新的bootloader方法第四實施例的流程圖。
[0058]圖11是本發(fā)明提供的一種自動更新的bootloader方法第五實施例的流程圖。
【具體實施方式】
[0059]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,,下面結合附圖對本發(fā)明的【具體實施方式】做詳細的說明。
[0060]為了方便介紹本發(fā)明,首先介紹一下E⑶啟動時候的執(zhí)行順序。
[0061]在一般E⑶的正常啟動過程中,首先應該加載bootloader引導加載程序,在bootloader引導加載程序正常運行的情況下,再加載EMS應用程序,運行其中的基礎軟件和應用軟件。
[0062]參見圖1,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第一實施例的原理框圖。[0063]在本實施例中,本裝置100包括:
[0064]bootloader引導程序第一模塊10和bootloader引導程序第二模塊20。
[0065]所述bootloader引導程序第一模塊10,用于運行bootloader引導程序。
[0066]所述bootloader弓丨導程序第二模塊20,用于根據(jù)上位機40發(fā)送的bootloader弓丨導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。
[0067]在bootloader引導程序第一模塊10中,存儲有bootloader引導程序。而在bootloader引導程序第二模塊20中,存儲有接收程序和更新bootloader引導程序的寫入程序。
[0068]在實際使用時,bootloader引導程序第一模塊10首先運行bootloader引導程序。
[0069]在某些情況下,bootloader引導程序會因為誤修改或突然斷電等情況出現(xiàn)無法正常運行加載的問題。因此,可以將bootloader引導程序第二模塊20安裝在所述bootloader引導程序第一模塊10之后。這樣,在出現(xiàn)bootloader引導程序第一模塊10不能正常運行bootloader弓丨導程序時,,順序運行所述bootloader弓丨導程序第二模塊20。另外,如果出現(xiàn)bootloader引導程序不能正常加載的情況此時,還可以通過故障燈或消息指令等方式對用戶或上位機40進行提示,告知bootloader引導程序不能正常運行。
[0070]在另外一些情況下時,在上位機40中還可能存在需要bootloader引導程序的新版本,需要替換bootloader第一模塊10中的舊版本的bootloader引導程序。
[0071]在出現(xiàn)以上情況時,可以將控制權跳轉到bootloader引導程序第二模塊20來執(zhí)行其中的程序。由于在bootloader引導程序第二模塊20中存儲有接收上位機40的接收程序和bootloader引導程序寫入程序。因此,,用戶可以將上位機40與本裝置進行連接,通過上位機40將bootloader弓I導更新程序發(fā)送到bootloader弓I導程序第二模塊20,并由bootloader引導程序第二模塊20將接到的bootloader引導更新程序更新bootloader引導程序第一模塊10中的bootloader引導程序,實現(xiàn)對bootloader引導程序的重新寫入。
[0072]在本實施例中,包括bootloader引導程序第一模塊和bootloader引導程序第二模塊。其中,bootloader引導程序第一模塊用于運行bootloader引導程序。bootloader引導程序第二模塊用于根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。通過使用以上裝置,可以實現(xiàn)對E⑶的故障響應恢復或版本更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0073]參見圖2,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第二實施例的原理框圖。
[0074]在本實施例中,所述bootloader引導程序第二模塊20,還包括:更新失敗反饋子模塊201。
[0075]所述更新失敗反饋子模塊201,用于在使用所述上位機發(fā)送的bootloader引導更新程序無法正常更新所述bootloader引導程序第一模塊中的bootloader引導程序時,向所述上位機發(fā)送更新錯誤信息。
[0076]在bootloader引導程序第一模塊10不能正常運行bootloader的情況下,上位機40可以將bootloader弓丨導程序傳送到bootloader弓丨導程序第二模塊20中,由bootloader引導程序第二模塊20進行更新操作。[0077]但在實際發(fā)生故障時,上位機40并不知道是bootloader引導程序出現(xiàn)問題,還是其它程序(例如EMS應用程序)出現(xiàn)問題。因此,上位機40可能會發(fā)送EMS應用程序進行更新。
[0078]如果bootloader引導程序第二模塊20根據(jù)上位機40發(fā)送的更新程序無法正常對bootloader引導程序進行更新寫入時,更新失敗反饋子模塊201可以向上位機40發(fā)送消息,提示上位機40程序更新操作錯誤。
[0079]上位機40在接收到程序更新操作錯誤后,可以根據(jù)其中的內容重新發(fā)送更新程序。例如:上位機在第一次發(fā)送的是EMS應用更新程序,在接收到更新失敗反饋子模塊201發(fā)出的更新錯誤信息后,改為發(fā)送bootloader引導更新程序。
[0080]在本實施例中,在bootloader引導程序第二模塊中還包括:更新失敗反饋子模塊。更新失敗反饋子模塊用于在無法正常使用所述bootloader引導更新程序進行更新操作時向所述上位機發(fā)送更新錯誤消息。通過使用以上裝置,可以實現(xiàn)在上位機發(fā)送錯誤更新文件時對上位機及時進行錯誤消息反饋,從而由上位機再次發(fā)送正確的更新文件進行操作,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0081]參見圖3,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第三實施例的原理框圖。
[0082]在本實施例中,所述bootloader弓丨導程序第二模塊20還包括:當前進程反饋子模塊 202。
[0083]所述當前進程反饋子模塊202,用于在接收到所述上位機的查詢指令后,向所述上位機反饋當前運行的程序信息。
[0084]在有些情況下,上位機40為了進行程序更新或其它調試等需要,還要了解bootloader裝置中的當前程序運行信息。因此,可以在bootloader引導程序第二模塊20中設置當前進程反饋子模塊202。當前進程反饋子模塊202用于在接收到上位機的查詢指令后,向上位機返回當前運行的程序信息。例如:上位機向本裝置發(fā)送請求,詢問當前正在運行的程序或模塊。假設當前bootloader裝置中正在運行的是bootloader引導程序,則當前進程反饋子模塊202向上位機反饋bootloader引導程序的信息。
[0085]在本實施例中,在bootloader弓丨導程序第一模塊10還包括:弓I導程序更新跳轉子模塊101。
[0086]所述引導程序更新跳轉模塊101,用于在接收到所述上位機發(fā)送的bootloader引導程序更新指令時,跳轉運行所述bootloader引導程序第二模塊。
[0087]在需要對bootloader引導程序進行更新時,上位機首先使用當前進程反饋子模塊202詢問當前運行的程序或模塊,如果反饋的結果為bootloader引導程序正在運行或bootloader引導程序第一模塊正在運行,貝U上位機可以向bootloader引導程序第一模塊10中的引導程序更新跳轉子模塊101發(fā)送跳轉指令。引導程序更新跳轉子模塊101在接收到跳轉指令后,,將從正在運行的bootloader引導程序中斷,跳轉執(zhí)行bootloader引導程序第二模塊中的程序。這樣,bootloader引導程序第二模塊中的接收程序和更新程序就可以接收上位機的更新程序,對bootloader引導程序第一模塊中的bootloader引導程序進行更新。[0088]通過使用以上裝置,可以實現(xiàn)在正常使用情況下對bootloader引導程序的自動更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0089]參見圖4,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第四實施例的原理框圖。
[0090]在本實施例中,還包括:EMS應用程序模塊30。
[0091]所述EMS應用程序模塊30,用于在所述bootloader引導程序正常運行后運行EMS應用程序。
[0092]在bootloader引導程序第一模塊10正常運行bootloader引導程序后,就可以開始運行后續(xù)的EMS應用程序。因此,在本實施例中可以在bootloader引導程序第一模塊10和bootloader引導程序第二模塊20后,安裝EMS應用程序模塊30,在bootloader引導程序正常運行后運行EMS應用程序。
[0093]在本實施例中,在bootloader引導程序第一模塊10中還包括:EMS應用程序更新子模塊102。
[0094]所述EMS應用程序更新子模塊102,用于將所述上位機40發(fā)送的EMS應用更新程序更新所述EMS應用程序模塊30中的EMS應用程序。
[0095]由于在實際使用中,EMS應用程序也有可能因為誤修改或突然斷電等情況導致EMS應用程序無法正常運行,或者需要運行新版本的EMS應用程序。因此,EMS應用程序也存在需要進行EMS程序更新的技術要求。
[0096]為了實現(xiàn)以上功能,可以在bootloader引導程序第一模塊10中設置EMS應用程序更新子模塊102。
[0097]在bootloader引導程序第一模塊10正常運行bootloader引導程序后,開始由EMS應用程序模塊30來運行EMS應用程序。如果EMS應用程序模塊30在運行EMS應用程序出現(xiàn)錯誤時(可以通過故障燈或消息指令等方式對用戶或上位機40進行提示),或者在上位機中存在了 EMS應用程序的新版本,需要對EMS應用程序模塊30中的EMS應用程序進行更新替換時,可以將控制權跳轉到EMS應用程序更新子模塊102等待用戶或上位機40的指令和更新程序。
[0098]在上位機40連接本裝置后,通過向bootloader引導程序第一模塊10中的EMS應用程序更新子模塊102發(fā)送正確的EMS應用更新程序,由EMS應用程序更新子模塊102來更新EMS應用程序。
[0099]為了能夠實現(xiàn)對EMS應用程序在任意時刻的更新操作,可以在EMS應用程序模塊中安裝應用程序更新跳轉子模塊103,用于在接收到所述上位機發(fā)送的EMS應用程序更新指令時,跳轉運行bootloader引導程序第一模塊10中的EMS應用程序更新子模塊102。這樣,不管當前運行的是什么內容的EMS應用程序,都可以在接收到上位機的EMS應用程序更新指令后中斷運行,將控制器跳轉到EMS應用程序更新子模塊102進行執(zhí)行。
[0100]在本實施例中,在bootloader引導程序第一模塊中設置EMS應用程序更新子模塊,可以在EMS應用程序無法正常運行或需要進行升級時,將上位機發(fā)送的EMS應用程序通過EMS應用程序更新模塊進行更新操作。通過使用以上裝置,可以實現(xiàn)EMS應用程序的故障響應或程序版本升級,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0101]參見圖5,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第五實施例的原理框圖。
[0102]在本實施例中,所述bootloader引導程序第一模塊10還包括:EMS應用計時加載子模塊103。
[0103]所述EMS應用計時加載子模塊103,用于在所述EMS應用程序模塊運行之前,在指定時間內等待所述上位機發(fā)送的所述EMS應用更新指令;所述指定時間為所述上位機發(fā)送所述EMS應用更新指令的時間窗。
[0104]在bootloader引導程序正常運行后,開始啟動EMS應用程序模塊30來運行EMS應用程序。
[0105]但由于在上位機40可能存在新版本的EMS應用程序,,因此可以在EMS應用程序運行前由EMS應用計時加載子模塊103計時等待一定時間,例如50ms。如果在這段時間窗內接收到上位機40發(fā)送的EMS應用更新指令,則跳轉執(zhí)行EMS應用程序更新子模塊102來接收上位機40之后發(fā)送的EMS應用更新程序更新本裝置中的EMS應用程序。如果沒有接收到上位機40的EMS應用更新程序,則繼續(xù)正常啟動EMS應用程序模塊30運行其中的EMS應用程序。
[0106]在本實施例中,通過在bootloader弓丨導程序第一模塊設置EMS應用計時加載子模塊,可以在指定時間內等待上位機的更新指令,為自動更新EMS應用程序提供合理的時間窗口,方便了對ECU中EMS應用程序的更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0107]參見圖6,該圖為本發(fā)明提供的一種自動更新的bootloader裝置第六實施例的原理框圖。
[0108]在本實施例中,在所述bootloader引導程序第一模塊10中還可以包括:EMS應用程序檢測子模塊104。
[0109]所述EMS應用程序檢測子模塊104,用于檢測所述EMS應用程序是否正確,若檢測到所述EMS應用程序不正確,則將所述bootloader引導程序第一模塊設置為等待狀態(tài)。
[0110]在運行EMS應用程序之前時,為了能夠確定EMS應用程序的完整性,可以在bootloader引導程序第一模塊10中設置EMS應用程序檢測子模塊103。EMS應用程序檢測子模塊104可以檢測在EMS應用程序模塊30中的EMS應用程序是否完整,如果完整則由EMS應用程序模塊30進行運行加載。如果不完整,則認為EMS應用程序受損,可以通過故障燈或消息指令等方式對用戶或上位機40進行提示。同時,可以將bootloader引導程序第一模塊10設置為等待狀態(tài),直至上位機對EMS應用程序故障進行響應,例如上位機40發(fā)送EMS應用更新程序更新EMS應用程度模塊中受損的EMS應用程序。
[0111]通過在bootloader引導程序第一模塊中設置EMS應用程序檢測子模塊,可以實現(xiàn)在每次啟動EMS應用程序模塊前都自動檢測EMS應用程序是否完整,能夠及時的確定EMS應用程序的問題,并結合EMS應用程序更新子模塊實現(xiàn)了對損壞的EMS應用程序的更新更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0112]基于上述提供的一種自動更新的bootloader裝置,本發(fā)明還提供了一種自動更新bootloader的方法,下面結合具體實施例來詳細說明其組成部分。
[0113]參見圖7,該圖為本發(fā)明提供的一種自動更新的bootloader方法第一實施例的流程圖。
[0114]在本實施例中,包括:
[0115]SlOl:運行 bootloader 引導程序。
[0116]S102:檢測bootloader引導程序是否需要更新。
[0117]S103:若所述bootlader引導程序需要更新,根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序。
[0118]在啟動本裝置后,首先運行bootloader引導程序。
[0119]在某些情況下,bootloader引導程序會因為誤修改、突然斷電等情況出現(xiàn)無法正常加載的問題,需要檢測bootloader引導程序是否正常運行。在這種情況下,可以通過故障燈或消息指令等方式對用戶或上位機40進行提示,或直接暫停執(zhí)行后面的程序,等待上位機40的指令。
[0120]在另一些情況下,在上位機存在新版本的bootloader引導程序,需要對本裝置中存儲的bootloader引導程序進行更新替換。
[0121]在以上情況出現(xiàn)時,可以連接上位機,通過上位機將bootloader引導更新程序發(fā)送到本地,并使用接到的bootloader引導更新程序更新本地的bootloader引導程序,實現(xiàn)對bootloader引導程序的重新寫入。
[0122]為了保證更新操作的完成,可以在根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序之后,還包括:
[0123]若無法使用所述上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序,向所述上位機發(fā)送更新錯誤信息。
[0124]在本實施例中,首先運行bootloader引導程序,之后檢測bootloader引導程序是否需要更新,若bootlader引導程序需要更新,則根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序。通過使用以上方法,可以實現(xiàn)對bootloader引導程序的故障響應恢復,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0125]參見圖8,該圖為本發(fā)明提供的一種自動更新的bootloader方法第二實施例的流程圖。
[0126]本實施例中的步驟S201-203與自動更新的bootloader方法第一實施例中的步驟S101-S103相同,在此不再重復介紹。
[0127]在本實施例中,所述根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序之后,還包括;
[0128]S204:檢測使用所述bootloader引導更新程序更新所述bootloader引導程序是否正常完成。
[0129]S205:若無法正常使用所述bootloader引導更新程序更新所述bootloader引導程序,則向所述上位機發(fā)送更新錯誤消息。
[0130]在bootloader引導程序不能正常運行或進行版本更新的情況下,上位機可以將bootloader引導更新程序發(fā)送到本地更新bootloader引導程序。[0131]但在實際操作時,由于各種原因可能在對bootloader引導程序進行更新時可能不能正常完成;或者上位機可能并不知道是bootloader引導程序出現(xiàn)問題,還是EMS應用程序出現(xiàn)問題,上位機可能會發(fā)送錯誤的更新程序。
[0132]在根據(jù)上位機發(fā)送的更新程序無法完成本地bootloader引導程序的更新操作后,用戶或上位機在更新完成后會向本地發(fā)送查詢指令,查詢bootloader引導程序更新結果。在接收到查詢指令后,可以將更新錯誤信息發(fā)送到上位機進行反饋;或者可以直接向上位機發(fā)送更新錯誤信息,提示本地程序更新操作錯誤。
[0133]上位機在接收到程序更新操作錯誤后,可以根據(jù)其中的內容重新發(fā)送更新程序。如上位機第一次發(fā)送的是EMS應用更新程序,在接收到更新錯誤信息后,改為發(fā)送bootloader引導更新程序。
[0134]在本實施例中,在根據(jù)上位機發(fā)送的bootloader引導更新程序更新bootloader引導程序之后,還包括:若無法使用上位機發(fā)送的bootloader引導更新程序更新bootloader引導程序,向所述上位機發(fā)送更新錯誤信息。通過使用以上方法,可以實現(xiàn)在更新失敗后對上位機及時進行錯誤信息反饋,從而由上位機再次發(fā)送正確的更新程序進行更新操作,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0135]參見圖9,該圖為本發(fā)明提供的一種自動更新的bootloader方法第三實施例的流程圖。
[0136]本實施例中的步驟S301-303與自動更新的bootloader方法第一實施例中的步驟S101-S103相同,在此不再重復介紹。
[0137]在本實施例中,還包括:
[0138]S304:若所述bootloader引導程序正常運行,則運行EMS應用程序。
[0139]在bootloader引導程序正常運行后,就可以開始運行后續(xù)的EMS應用程序。
[0140]由于在實際使用中,EMS應用程序有可能因為誤修改或突然斷電等情況導致EMS應用程序無法正常運行,或者需要運行新版本的EMS應用程序。因此,EMS應用程序也存在需要進行EMS程序更新的技術要求。
[0141]因此,在本實施例中,還包括:
[0142]S305:判斷是否接收到所述上位機發(fā)送的EMS應用程序更新指令。
[0143]S306:若接收到所述上位機發(fā)送的EMS應用程序更新指令,跳轉運行所述bootloader引導程序,根據(jù)所述上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序。
[0144]在有些情況下,在上位機可能存在新版本的EMS應用程序,需要對本地的EMS應用程序進行更新替換。在這種情況下,上位機可能隨時會向本地發(fā)送EMS應用程序更新指令。
[0145]在接收到EMS應用程序更新指令后,可以中止當前正在運行的EMS應用程序,將跳轉執(zhí)行bootloader引導程序。其中,在bootloader引導程序中包括有EMS應用程序的寫入程序。在上位機連接到本地后,可以使用將接收到的新版本的EMS應用更新程序更新替換本地的EMS應用程序。
[0146]在本實施例中,在bootloader引導程序正常運行的情況下,則運行EMS應用程序。如果接收到所述上位機發(fā)送的EMS應用程序更新指令,跳轉運行所述bootloader引導程序,根據(jù)所述上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序。通過使用以上方法,可以實現(xiàn)對EMS應用程序的故障響應和程序版本升級,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0147]參見圖10,該圖為本發(fā)明提供的一種自動更新的bootloader方法第四實施例的流程圖。
[0148]本實施例中的步驟S401-S403和S406與自動更新的bootloader方法第三實施例中的步驟S301-S303和S304相同,在此不再重復介紹。
[0149]在本實施例中,在所述運行EMS應用程序之前,還包括:
[0150]S404:在所述指定時間內等待接收所述上位機發(fā)送的EMS應用更新指令。
[0151]S405:若在所述指定時間內接收到所述上位機發(fā)送的更新EMS應用程序指令,則接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
[0152]在bootloader引導程序正常運行后,開始運行EMS應用程序。
[0153]但由于在上位機可能存在新版本的EMS應用程序,因此,可以在EMS應用程序運行前等待一定時間,例如50ms。如果在這段時間窗內接收到上位機40發(fā)送的EMS應用更新指令,則認為上位機存在新版本的EMS應用程序,需要對本地EMS應用程序進行更新,根據(jù)上位機發(fā)送的EMS應用更新程序更新本地的EMS應用程序。如果沒有接收到上位機發(fā)送的應用更新程序,則繼續(xù)正常運行EMS應用程序。
[0154]在本實施例中,通過在指定時間內等待接收上位機發(fā)送的EMS應用更新指令,可以為上位機提供時間窗口進行新版本更新交互,方便了對ECU中EMS應用程序的更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的
工作量。
[0155]參見圖11,該圖為本發(fā)明提供的一種自動更新的bootloader方法第五實施例的流程圖。
[0156]本實施例中的步驟S501-S503和S506與自動更新的bootloader方法第三實施例中的步驟S301-S303和S304相同,在此不再重復介紹。
[0157]在本實施例中,在所述運行EMS應用程序之前,還包括:
[0158]S504:檢測所述EMS應用程序是否正確。
[0159]S505:若檢測到所述EMS應用程序不正確,將所述bootloader引導程序等待狀態(tài),接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
[0160]在運行EMS應用程序之前時,為了能夠確定EMS應用程序的完整性,可以檢測EMS應用程序是否完整,如果檢測到EMS應用程序完整,則運行該EMS應用程序。如果檢測到EMS應用程序不完整,則認為EMS應用程序受損,可以通過故障燈或消息指令等方式對用戶或上位機進行提示,同時,等待上位機發(fā)送EMS應用更新程序進行更新操作。
[0161]在本實施例中,在運行EMS應用程序之前檢測EMS應用程序是否正確,如果檢測到EMS應用程序不正確,接收上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。通過使用以上方法,可以實現(xiàn)在每次啟動EMS應用程序模塊前都自動檢測EMS應用程序是否完整,能夠及時的確定EMS應用程序的問題,并結合EMS應用程序更新子模塊實現(xiàn)了對損壞的EMS應用程序的更新更新,避免了現(xiàn)有技術中維護人員需要將ECU開蓋進行程序重置的繁瑣工作,大大減小了維護人員的工作量。
[0162]以上所述,僅是本發(fā)明的較佳實施例而已,并非對本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明。任何熟悉本領域的技術人員,在不脫離本發(fā)明技術方案范圍情況下,都可利用上述揭示的方法和技術內容對本發(fā)明技術方案做出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發(fā)明技術方案的內容,依據(jù)本發(fā)明的技術實質對以上實施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發(fā)明技術方案保護的范圍內。
【權利要求】
1.一種自動更新的bootloader裝置,其特征在于,包括: bootloader引導程序第一模塊和bootloader引導程序第二模塊; 所述bootloader引導程序第一模塊,用于運行bootloader引導程序; 所述bootloader引導程序第二模塊,用于根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序第一模塊中的bootloader引導程序。
2.根據(jù)權利要求1所述的裝置,其特征在于,所述bootloader引導程序第二模塊安裝在所述bootloader引導程序第一模塊之后,在所述bootloader引導程序第一模塊不能正常運行bootloader引導程序時,順序運行所述bootloader引導程序第二模塊。
3.根據(jù)權利要求1所述的裝置,其特征在于,所述bootloader引導程序第二模塊,還包括:更新失敗反饋子模塊; 所述更新失敗反饋子模塊,用于在使用所述上位機發(fā)送的bootloader引導更新程序無法正常更新所述bootloader引導程序第一模塊中的bootloader引導程序時,向所述上位機發(fā)送更新錯誤信息。
4.根據(jù)權利要求1所述的裝置,其特征在于,所述bootloader引導程序第二模塊,還包括:當前進程反饋子模塊; 所述當前進程反饋子模塊,用于在接收到所述上位機的查詢指令后,向所述上位機反饋當前運行的程序信息。
5.根據(jù)權利要求1所述的裝置,其特征在于,所述bootloader引導程序第一模塊還包括:引導程序更新跳轉子模塊; 所述引導程序更新跳轉模塊,用于在接收到所述上位機發(fā)送的bootloader引導程序更新指令時,跳轉運行所述bootloader引導程序第二模塊。
6.根據(jù)權利要求1所述的裝置,其特征在于,還包括::EMS應用程序模塊; 所述EMS應用程序模塊,用于在所述bootloader引導程序正常運行后運行EMS應用程序。
7.根據(jù)權利要求6所述的裝置,其特征在于,所述bootloader引導程序第一模塊還包括:EMS應用程序更新子模塊; 所述EMS應用程序更新子模塊,用于根據(jù)上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序模塊中的EMS應用程序。
8.根據(jù)權利要求7所述的裝置,其特征在于,所述EMS應用程序模塊中還包括:應用程序更新跳轉子模塊; 所述應用程序更新跳轉子模塊,用于在接收到所述上位機發(fā)送的EMS應用程序更新指令時,跳轉運行所述bootloader引導程序第一模塊中的EMS應用程序更新子模塊。
9.根據(jù)權利要求7所述的裝置,其特征在于,所述bootloader引導程序第一模塊還包括:EMS應用計時加載子模塊; 所述EMS應用計時加載子模塊,用于在所述EMS應用程序模塊運行之前,在指定時間內等待所述上位機發(fā)送的所述EMS應用更新指令;所述指定時間為所述上位機發(fā)送所述EMS應用更新指令的時間窗。
10.根據(jù)權利要求7所述的裝置,其特征在于,所述bootloader引導程序第一模塊還包括:EMS應用程序檢測子模塊;所述EMS應用程序檢測子模塊,用于檢測所述EMS應用程序是否正確,若檢測到所述EMS應用程序不正確,將所述bootloader引導程序第一模塊設置為等待狀態(tài)。
11.一種自動更新的bootloader方法,其特征在于,包括: 運行bootloader引導程序; 檢測bootloader引導程序是否需要更新; 若所述bootlader引導程序需要更新,根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序。
12.根據(jù)權利要求11所述的方法,其特征在于,在所述根據(jù)上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序之后,還包括: 若無法使用所述上位機發(fā)送的bootloader引導更新程序更新所述bootloader引導程序,向所述上位機發(fā)送更新錯誤信息。
13.根據(jù)權利 要求11所述的方法,其特征在于,還包括: 若所述bootloader引導程序正常運行,則運行EMS應用程序。
14.根據(jù)權利要求11所述的方法,其特征在于,在運行EMS應用程序之后還包括: 若接收到所述上位機發(fā)送的EMS應用程序更新指令,跳轉運行所述bootloader引導程序,根據(jù)所述上位機發(fā)送的EMS應用更新程序更新所述EMS應用程序。
15.根據(jù)權利要求13所述的方法,其特征在于,在所述運行EMS應用程序之前,還包括: 在所述指定時間內等待接收所述上位機發(fā)送的EMS應用更新指令; 若在所述指定時間內接收到所述上位機發(fā)送的更新EMS應用程序指令,則接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
16.根據(jù)權利要求13所述的方法,其特征在于,在所述運行EMS應用程序之前,還包括: 檢測所述EMS應用程序是否正確; 若檢測到所述EMS應用程序不正確,將所述bootloader引導程序等待狀態(tài),接收所述上位機發(fā)送的EMS應用更新程序更新本地所述EMS應用程序。
【文檔編號】G06F9/445GK103995712SQ201410153269
【公開日】2014年8月20日 申請日期:2014年4月16日 優(yōu)先權日:2014年4月16日
【發(fā)明者】史家濤, 劉曉波, 紀小娟, 陳娜娜, 劉名 申請人:濰柴動力股份有限公司