一種ecu程序刷寫和檢測方法
【技術領域】
[0001 ]本發(fā)明涉及一種E⑶程序刷寫和檢測方法。
【背景技術】
[0002]在汽車電控單元ECU產(chǎn)品開發(fā)、生產(chǎn)以及售后服務等各個階段,不便于采用DEBUG方式進行程序下載,需要采用CAN總線通信來完成程序更新刷寫,此時就需要在ECU里運行引導程序BootLoader來完成軟件系統(tǒng)啟動和程序更新刷寫。
[0003]引導程序BootLoader通常包含三個部分:系統(tǒng)啟動引導程序,CAN通信驅動程序,F(xiàn)lashDriver編程驅動程序;其中前兩部分通常固化在E⑶中。針對第三部分FlashDriver編程驅動程序,如果固化在ECU中,就有可能意外調(diào)用,而將導致嚴重的錯誤;因此通常采用兩次下載的方式,即第一次下載上位機將FlashDriver編程驅動程序下載到E⑶的RAM中,第二次下載的是需要更新的代碼和數(shù)據(jù),運行在RAM中的FlashDriver負責將需要更新的代碼和數(shù)據(jù)寫入到指定的存儲區(qū)域。
【發(fā)明內(nèi)容】
[0004]本發(fā)明旨在提供一種安全性較高的ECU刷寫和檢測方法。
[0005]本發(fā)明通過以下方案實現(xiàn):
[0006]—種E⑶程序刷寫和檢測方法,按以下步驟:
[0007]SI:系統(tǒng)復位E⑶初始化,包括初始化微控制器、系統(tǒng)時鐘、CAN通信,建立存儲空間映射;所述存儲空間分為BootLoader模式用代碼區(qū)、APP(即應用程序)模式用代碼區(qū)、RAM區(qū)和EEPROM區(qū);所述1?00讓03(161.模式用代碼區(qū)包括BootLoade FlashDriver編程驅動程序代碼區(qū)、BootLoader程序區(qū)、復位中斷向量表;APP模式用代碼區(qū)包括APP入口函數(shù)、APP程序區(qū)、APP重映射中斷向量表;RAM區(qū)包括BootLoader模式與APP模式共享RAM區(qū)、BootLoader模式與APP模式default RAM區(qū)、BootLoader FlashDriver編程驅動程序映射區(qū);EEPR0M區(qū)包括BootLoader模式用區(qū)和APP模式用區(qū);BootLoader模式用代碼區(qū)中的復位中斷向量表只會處理系統(tǒng)復位中斷,并將其他中斷指向APP模式用代碼區(qū)中的APP重映射中斷向量表,也就是說BootLoader程序包含了復位中斷服務程序,APP程序包含了非復位中斷服務程序。BootLoader模式與APP模式共享RAM區(qū)記錄了由應用程序請求跳轉到BootLoader程序的標識;EEPROM區(qū)中的BootLoader模式用區(qū)用于保存應用程序APP的有效標識信息,記錄是否有可正常運行的應用程序;EEPROM中的APP模式用區(qū)則留給APP程序使用;
[0008]S2:讀取存儲空間的EEPROM區(qū)中APP模式用區(qū)的應用程序有效標識,讀取RAM區(qū)中BootLoader模式與APP模式共享RAM區(qū)的應用程序請求跳轉到BootLoader程序的標識,和BootLoader模式與APP模式default RAM區(qū)的用戶強制要求進入BootLoader程序的標識;若應用程序有效標識為無效或應用程序請求跳轉到BootLoader程序標識為跳轉或用戶強制要求進入BootLoader程序標識為強制要求進入,則執(zhí)行S3,否則執(zhí)行S4;
[0009]S3:進入BootLoader程序,包括:(I Wl^WtBootLoader FlashDriver編程驅動程序,將BootLoader FlashDriver編程驅動程序從BootLoade FlashDriver編程驅動程序代碼區(qū)拷貝到BootLoade FlashDriver編程驅動程序映射區(qū),并標記EQJ進入BootLoader刷寫模式;(2)接收上位機下載的程序文件,將應用程序設置為無效,在將程序文件寫入APP程序區(qū)之前先調(diào)用BootLoader FlashDriver編程驅動程序映射區(qū)中的FlashDriver擦除指令,然后調(diào)用編程指令,直到完成所有的程序文件寫入;(3)通過CHECKSUM校驗,檢查刷寫是否正確,如果不正確則等待系統(tǒng)復位;如果刷寫成功,則更新應用程序為有效,并將APP有效標識寫入EEPROM中的BootLoader模式用區(qū);(4)刪除BootLoader FlashDriver編程驅動程序映射區(qū)中的程序,然后調(diào)用APP入口函數(shù)AppMain(),執(zhí)行S4 ;
[0010]S4:運行應用程序,并周期性的循環(huán)檢測是否有ECU檢測請求或者刷寫請求;若有E⑶檢測請求,則執(zhí)行S5;若有E⑶刷寫請求,則執(zhí)行S6;
[0011 ] S5: E⑶接收到檢測請求后,進入檢測模式運行,與上位機進行問-答式通信,完成E⑶輸入或者輸出端口的檢測;
[0012]S6:E⑶接收到刷寫請求后,讀取包括車輛運行工況、發(fā)動機工況、車速、發(fā)動機轉速的信息,確定系統(tǒng)安全后,觸發(fā)系統(tǒng)復位,并設置應用程序請求跳轉到BootLoader程序的標識為有效。
[0013]所述S5步驟具體為:首先,HOST發(fā)出控制指令,ECU接收到后解析控制指令,并根據(jù)控制指令要求讀取傳感器輸入信號或者控制執(zhí)行器輸出,然后根據(jù)控制指令要求和硬件在環(huán)系統(tǒng)HIL反饋的實際狀態(tài)對控制結果進行對比分析,并反饋給HOST,最后由HOST對所有的控制指令和檢測結果進行統(tǒng)計分析,完成ECU輸入或者輸出端口的檢測。
[0014]若所述S3步驟中BootLoader刷寫中斷,則系統(tǒng)復位后再進入BootLoader刷寫模式。
[0015]BootLoader模式代碼區(qū)位于有保護功能的FLASH區(qū)域,通過設定專門的寄存器,使得BootLoader模式代碼區(qū)是具有防止被擦除和被編寫操作功能的代碼區(qū)。在進入BootLoader刷寫模式后,BootLoader模式用代碼區(qū)中的BootLoader FlashDriver編程驅動程序會被從BootLoader FlashDriver編程驅動程序代碼區(qū)拷貝到RAM區(qū)中的BootLoaderFlashDriver編程驅動程序映射區(qū),也就是說BootLoader模式代碼區(qū)中的BootLoaderFlashDriver編程驅動程序代碼區(qū)只是用來存放代碼,而不會被調(diào)用執(zhí)行。
[0016]本發(fā)明的一種ECU程序刷寫和檢測方法,分離BootLoader FlashDriver編程驅動程序的代碼區(qū)和映射區(qū),將BootLoader FlashDriver編程驅動程序代碼區(qū)中的BootLoaderFlashDriver復制到BootLoader FlashDriver編程驅動程序映射區(qū),刷寫完成后刪除BootLoader FlashDriver編程驅動程序映射區(qū)里的代碼,防止BootLoader FlashDriver編程驅動程序被意外調(diào)用執(zhí)行。同時為了確保安全性,根據(jù)用戶的刷寫請求,通過結合車輛運行工況如車速、發(fā)動機轉速等變量值判定系統(tǒng)是否可以進入BootLoader刷寫模式,確保安全的進入刷寫模式。完成程序刷寫后,可以根據(jù)用戶的指令進入檢測模式,通過CAN通信采用問答的方式實現(xiàn)電控單元ECU的輸入、輸出端的檢測。本發(fā)明的ECU程序刷寫和檢測方法,安全性較高。
【附圖說明】
[0017]圖1:實施例1中ECU程序刷寫和檢測流程圖
[0018]圖2:實施例1中E⑶存儲空間示意圖
[0019]圖3:實施例1中E⑶檢測流程框圖
【具體實施方式】
[0020]以下結合實施例對本發(fā)明作進一步說明,但本發(fā)明并不局限于實施例之表述。
[0021]實施例1
[0022]—種ECU程序刷寫和檢測方法,其流程圖如圖1所示,按以下步驟:
[0023]SI:系統(tǒng)復位E⑶初始化,包括初始化微控制器、系統(tǒng)時鐘、CAN通信,建立存儲空間映射;如圖2所示,存儲空間分為BootLoader模式用代碼區(qū)、APP(即應用程序)模式用代碼區(qū)、RAM區(qū)和EEPROM區(qū);BootLoader模式用代碼區(qū)包括BootLoade FlashDriver編程驅動程序代碼區(qū)、BootLoader程序區(qū)、復位中斷向量表;APP模式用代碼區(qū)包括APP入口函數(shù)、APP程序區(qū)、APP重映射中斷向量表;RAM區(qū)包括BootLoader模式與APP模式共享RAM區(qū)、BootLoader