一種汽車電控單元的程序加載引導方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于汽車電控單元的軟件管理與維護領(lǐng)域,具體涉及一種汽車電控單元的程序加載引導方法。
【背景技術(shù)】
[0002]軟件加載引導程序(Bootloader)在嵌入式系統(tǒng)中,是在應(yīng)用程序之前運行,用于啟動和加載應(yīng)用程序的一段代碼,是系統(tǒng)開發(fā)的關(guān)鍵步驟。它一方面提供程序下載和更新功能,另一方面為程序調(diào)試和擴展提供方便。
[0003]傳統(tǒng)Bootloader —般通過串口與PC機進行通信,該方式通信的抗干擾能力差,汽車電控單元需要專門留出串口,當汽車電控單元需要更新程序時,往往需要將其從整車上拆卸下來進行更新,耗費人力和時間的同時,也可能會造成車輛部件的損壞。CAN總線通信在汽車電子領(lǐng)域的廣泛應(yīng)用,使得Bootloader可以直接通過CAN總線進行通信,在具備較強抗干擾能力的同時,使用起來也更加靈活。
[0004]汽車電控單元上所使用的Bootloader,根據(jù)實際使用的需要,在程序加載和更新功能的基礎(chǔ)上集成了許多其他功能,如存儲區(qū)加密、參數(shù)標定、故障診斷等。但是對于不同級別的工作人員(開發(fā)人員,現(xiàn)場服務(wù)人員,修理廠電工),如果不將Bootloader的功能進行劃分和限制,就無法協(xié)調(diào)好汽車電控單元的后期服務(wù)和維護,甚至可能造成核心代碼的泄密問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種汽車電控單元的程序加載引導方法,以克服上述現(xiàn)有技術(shù)存在的缺陷,本發(fā)明便于開發(fā)和服務(wù)人員了解汽車電控單元的使用情況,使汽車電控單元的軟件具有可追溯性,同時減少了現(xiàn)場服務(wù)時對汽車電控單元的誤操作,防止了產(chǎn)品核心代碼的泄漏。
[0006]為達到上述目的,本發(fā)明采用如下技術(shù)方案:
[0007]一種汽車電控單元的程序加載引導方法,汽車電控單元通過CAN總線連接PC機,汽車電控單元的存儲空間分為以下四個部分:
[0008]Bootloader 存儲區(qū):用于存儲 Bootloader 軟件;
[0009]應(yīng)用程序存儲區(qū),用于存儲應(yīng)用程序軟件;
[0010]參數(shù)存儲區(qū),用于存儲汽車電控單元相關(guān)參數(shù);
[0011]程序版本存儲區(qū),用于存儲汽車電控單元中應(yīng)用程序的軟件版本信息和軟件更新記錄;
[0012]程序加載引導方法包括以下步驟:
[0013]步驟1、Bootloader在系統(tǒng)上電后從地址O開始自動運行;
[0014]步驟2、Bootloader對系統(tǒng)硬件進行初始化;
[0015]步驟3、Bootloader進入命令接收模式,等待從CAN總線上接收到的CAN消息;
[0016]步驟4、Bootloader判斷接收到的CAN消息是否為Bootloader命令請求,若是,則進入Bootloader服務(wù)模式;若否,則進入步驟5 ;
[0017]步驟5、Bootloader判斷等待時間是否到達設(shè)定時限,若是,則進入步驟6 ;若否,則回到步驟3 ;
[0018]步驟6、Bootloader從指定地址處讀取信息并判斷存儲區(qū)中是否存在應(yīng)用程序,若是,則啟動應(yīng)用程序;若否,則進入步驟7 ;
[0019]步驟7、Bootloader通過CAN總線向PC機發(fā)送程序更新請求。
[0020]進一步地,步驟4中進入Bootloader服務(wù)模式包括以下步驟:
[0021]步驟4.1、Bootloader通過CAN總線請求密鑰;
[0022]步驟4.2、Bootloader判斷接收到的密鑰是否有效,若是,則進入步驟4.4 ;若否,則進入步驟4.3 ;
[0023]步驟4.3,Bootloader判斷密鑰錯誤次數(shù)是否達到上限值,若是,則進入步驟4.7 ;若否,則進入步驟4.1;
[0024]步驟4.4、Bootloader判斷所請求功能是否在接收密鑰的權(quán)限內(nèi),若是,則進入步驟4.5 ;若否,則進入步驟4.3 ;
[0025]步驟4.5、Bootloader執(zhí)行與命令相對應(yīng)的功能;
[0026]步驟4.6、Bootloader判斷所執(zhí)行功能是否對存儲區(qū)有更改,若是,則進入步驟4.8;若否,則進入步驟4.7;
[0027]步驟4.7、Bootloader通過CAN總線發(fā)送命令請求消息,并回到命令接收模式;
[0028]步驟4.8、系統(tǒng)復(fù)位重啟。
[0029]進一步地,步驟4.3中密鑰錯誤包括密鑰無效和密鑰與請求功能不匹配。
[0030]進一步地,步驟4.6中對存儲區(qū)的更改包括擦除、寫入、加密和解密操作。
[0031]進一步地,步驟4.5中Bootloader執(zhí)行與命令相對應(yīng)的功能包括以下步驟:
[0032]步驟4.5.1、Bootloader跳轉(zhuǎn)到功能函數(shù)入口并啟動功能程序;
[0033]步驟4.5.2、Bootloader判斷功能程序所操作存儲區(qū)是否為Bootloader存儲區(qū),若是,則直接進入步驟4.5.6 ;若否,則進入步驟4.5.3 ;
[0034]步驟4.5.3、Bootloader判斷所操作存儲區(qū)是否已經(jīng)加密,若是,則通過CAN總線發(fā)送解密請求并進入命令接收模式;若否,則進入步驟4.5.4 ;
[0035]步驟4.5.4、Bootloader 執(zhí)行功能;
[0036]步驟4.5.5、Bootloader判斷所操作存儲區(qū)是否為應(yīng)用程序存儲區(qū),若是,則通過CAN總線發(fā)送加密請求并進入命令接收模式;若否,則進入步驟4.5.6 ;
[0037]步驟4.5.6、功能完成。
[0038]進一步地,步驟7中Bootloader通過CAN總線向PC機發(fā)送程序更新請求包括以下步驟:
[0039]步驟7.1、開始應(yīng)用程序更新;
[0040]步驟7.2、Bootloader以CAN消息的形式接收來自PC機的二進制程序文件;
[0041]步驟7.3、Bootloader將接收到的二進制程序文件寫入指定存儲區(qū);
[0042]步驟7.4、Bootloader讀取所更新應(yīng)用程序的軟件版本;
[0043]步驟7.5、Bootloader判斷更新前汽車電控單元是否已存在應(yīng)用程序,若是,貝丨J進入步驟7.6 ;若否,則進入步驟7.8 ;
[0044]步驟7.6、Bootloader判斷所更新程序的軟件版本與已存在程序的軟件版本是否相同,若是,則進入步驟7.7 ;若否,則進入步驟7.8 ;
[0045]步驟7.7、應(yīng)用程序更新結(jié)束;
[0046]步驟7.8、Bootloader記錄軟件更新信息。
[0047]進一步地,步驟7.8中記錄軟件更新信息包括軟件版本和更新時間。
[0048]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益的技術(shù)效果:
[0049]本發(fā)明的Bootloader軟件采用CAN總線通信的方式,抗干擾能力強,通信速度快,軟件更新時無需拆卸。專門設(shè)置存儲區(qū)用于存儲汽車電控單元中應(yīng)用程序的軟件版本信息以及軟件更新記錄,便于開發(fā)和服務(wù)人員了解汽車電控單元的使用情況,使汽車電控單元的軟件具有可追溯性。同時為不同級別的工作人員分配密鑰來劃分其可使用的功能權(quán)限,減少了現(xiàn)場服務(wù)時對汽車電控單元的誤操作,防止了產(chǎn)品核心代碼的泄漏。
【附圖說明】
[0050]圖1是本發(fā)明的汽車電控單元系統(tǒng)的整體示意圖;
[0051]圖2是本發(fā)明的Bootloader軟件運行流程圖;
[0052]圖3是本發(fā)明的Bootloader服務(wù)模式流程圖;
[0053]圖4是本發(fā)明的Bootloader功能服務(wù)流程圖;
[0054]圖5是本發(fā)明的Bootloader應(yīng)用程序更新流程圖。
【具體實施方式】
[0055]下面結(jié)合附圖對本發(fā)明的實施方式做進一步詳細描述:
[0056]參見圖1,一種汽車電控單元的程序加載引導方法,汽車電控單元通過CAN總線連接PC機,汽車電控單元的存儲空間分為以下四個部分:
[0057]Bootloader存儲區(qū):用于存儲Bootloader軟件;Bootloader軟件主要負責應(yīng)用程序軟件的啟動引導以及下載更新,同時還集成了存儲區(qū)加密保護、參數(shù)標定、故障診斷、軟件版本查詢等功能,它存儲在汽車電控單元存儲空間的0x000000地址上,上電后自動從該地址開始運行。Bootloader軟件會對系統(tǒng)硬件進行初始化,根據(jù)CAN總線上接收的指令,實現(xiàn)相應(yīng)的功能,并最終將應(yīng)用程序軟件加載至系統(tǒng)內(nèi)存中運行;
[0058]應(yīng)用程序存儲區(qū),用于存儲應(yīng)用程序軟件;
[0059]參數(shù)存儲區(qū),用于存儲汽車電控單元相關(guān)參數(shù);
[0060]程序版本存儲區(qū),用于存儲汽車電控單元中應(yīng)用程序的軟件版本信息和軟件更新記錄。
[0061]Bootloader軟件啟動后,根據(jù)CAN總線上接收到的命令,提供相應(yīng)的功能服務(wù),若在限定時間內(nèi)未接收到任何命令,則直接加載并引導應(yīng)用程序存儲區(qū)內(nèi)的軟件啟動運行;Bootloader軟件為不同級別的工作人員分配不同的密鑰,根據(jù)工作人員的密鑰來判斷其所請求功能是否在其功能權(quán)限范圍內(nèi),如果在范圍內(nèi),則Bootloader提供相應(yīng)的功能服務(wù);如果不在,則Bootloader不會提供相應(yīng)服務(wù)并重新回到接收命令狀態(tài)。
[0062]參見圖2,程序加載引導方法包括以下步驟:
[0063]步驟1、Bootloader在系統(tǒng)上電后從地址O開始自動運行;
[0064]步驟2、Bootloader對系統(tǒng)硬件進行初始化;