本發(fā)明屬于電動(dòng)汽車(chē)控制器開(kāi)發(fā)領(lǐng)域,特別是涉及一種電動(dòng)汽車(chē)的電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)。
背景技術(shù):
:傳統(tǒng)汽車(chē)的壓縮機(jī)由發(fā)動(dòng)機(jī)直接驅(qū)動(dòng),在電動(dòng)汽車(chē)中由于發(fā)動(dòng)機(jī)的取消,因此改為電機(jī)驅(qū)動(dòng),軟件更加復(fù)雜,往往需要進(jìn)行缺陷修復(fù)以及版本更新,因此在研發(fā)、生產(chǎn)、使用與維護(hù)階段,都會(huì)有軟件更新升級(jí)需求。對(duì)于大多數(shù)以飛思卡爾單片機(jī)作為MCU的車(chē)載控制器,開(kāi)發(fā)者往往通過(guò)P&E或者BDM等專門(mén)工具進(jìn)行程序調(diào)試和燒寫(xiě),當(dāng)然也可以使用串行通訊接口,傳統(tǒng)的方法是使用UART外設(shè)實(shí)現(xiàn)數(shù)據(jù)傳輸,然而車(chē)載控制器數(shù)量繁多并且往往有外殼保護(hù)來(lái)滿足相當(dāng)高的防水防塵要求,給程序更新帶來(lái)了極大的不便。因此采用傳統(tǒng)的程序更新方式費(fèi)時(shí)費(fèi)力,效率低下,極大的影響車(chē)載控制器的開(kāi)發(fā)、調(diào)試及使用。Bootloader又稱引導(dǎo)加載程序,是系統(tǒng)加電/復(fù)位后在應(yīng)用程序前運(yùn)行的一段軟件代碼。在現(xiàn)有的汽車(chē)控制器的刷新方法中,Bootloader軟件架構(gòu)由PBL和SBL兩部分組成。PBL由主引導(dǎo)模塊、診斷模塊、網(wǎng)絡(luò)模塊、CAN驅(qū)動(dòng)模塊和定時(shí)器模塊組成,SBL由FLASH的擦除\編程代碼組成。程序刷新需要通過(guò)預(yù)存在ROM中的PBL將SBL下載到RAM區(qū),SBL再負(fù)責(zé)更新代碼或數(shù)據(jù)。同時(shí)現(xiàn)有的刷新方法及系統(tǒng)對(duì)硬件需求高,除上位機(jī)和目標(biāo)控制器外,過(guò)程實(shí)現(xiàn)需額外提供刷新裝置包括:診斷欲刷新單元和診斷刷新單元。因而刷新過(guò)程相對(duì)較復(fù)雜,效率低,且成本更高。技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問(wèn)題是,基于電動(dòng)汽車(chē)電動(dòng)空調(diào)對(duì)應(yīng)用程序更新的需求,本發(fā)明提供一種安全高效的基于CCP協(xié)議自主擴(kuò)展的通信協(xié)議的電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)。為解決上述技術(shù)問(wèn)題,本發(fā)明采用如下技術(shù)方案:一種電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng),包括,汽車(chē)空調(diào)控制器、USB-CAN卡、上位機(jī),其特征在于:汽車(chē)空調(diào)控制器內(nèi)預(yù)先貯存Bootloader引導(dǎo)程序,上位機(jī)中裝載Labview程序,上位機(jī)將待更新的應(yīng)用程序發(fā)送至CAN總線上,USB-CAN卡負(fù)責(zé)連接上位機(jī)和汽車(chē)空調(diào)控制器,實(shí)現(xiàn)上位機(jī)與汽車(chē)空調(diào)控制器的物理通信支持;上位機(jī)主要分為下載操作區(qū)和顯示區(qū),在下載操作區(qū)按照文件選擇、讀取、連接、下載需求完成系統(tǒng)功能操作,在顯示區(qū)顯示連接和下載狀態(tài)、以及讀取經(jīng)過(guò)處理的待更新的應(yīng)用程序文件;所述待更新的應(yīng)用程序文件為S19文件格式;所述的通信協(xié)議在CCP協(xié)議的基礎(chǔ)上根據(jù)下載文件格式及Bootloader原理參考CCP指令格式自定義擴(kuò)展了兩條擴(kuò)展指令;所述Bootloader引導(dǎo)程序有啟動(dòng)加載模式和下載模式,Bootloader引導(dǎo)程序在下載模式接收待更新的應(yīng)用程序文件并存入汽車(chē)空調(diào)控制器存儲(chǔ)器,在加載模式下加載應(yīng)用程序,完成軟件更新。上述技術(shù)方案中,兩條擴(kuò)展指令分別為:S19_Message指令:下載S19記錄信息幀,攜帶每條記錄中的基本信息,包括類型、數(shù)據(jù)地址、數(shù)據(jù)長(zhǎng)度、校驗(yàn)和信息;S19_Data指令:下載S19記錄數(shù)據(jù)幀,攜帶每條記錄中的有效數(shù)據(jù)。上述技術(shù)方案中,當(dāng)Bootloader引導(dǎo)程序切換至下載模式時(shí),Labview程序基于自定義擴(kuò)展的CCP協(xié)議將應(yīng)用程序發(fā)送至CAN總線上建立上下位機(jī)連接并進(jìn)行應(yīng)用程序數(shù)據(jù)下載,下位機(jī)將接受的數(shù)據(jù)存放在對(duì)應(yīng)存儲(chǔ)區(qū),數(shù)據(jù)傳輸完畢,上位機(jī)發(fā)送斷開(kāi)連接命令,上下位機(jī)結(jié)束通訊;當(dāng)Bootloader引導(dǎo)程序切換至啟動(dòng)加載模式,汽車(chē)空調(diào)控制器開(kāi)始執(zhí)行應(yīng)用程序,軟件更新結(jié)束。上述技術(shù)方案中,汽車(chē)空調(diào)控制器主控MCU采用片內(nèi)集成FLASH存儲(chǔ)的單片機(jī)。上述技術(shù)方案中,所述的USB-CAN卡采用NI公司的USB-9862。一種電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新方法,其特征在于包括如下步驟:S1、通過(guò)BDM下載器將預(yù)先編寫(xiě)的Bootloader引導(dǎo)程序首次裝入空調(diào)控制器單片機(jī),所述Bootloader程序長(zhǎng)期貯存在單片機(jī)芯片內(nèi)部存儲(chǔ)器中,在受到觸發(fā)時(shí)啟動(dòng)加載應(yīng)用程序或者下載基于CCP協(xié)議的擴(kuò)展指令文件;S2、應(yīng)用程序編寫(xiě)完后,進(jìn)行編譯,在codewarrior工程文件中生成S19文件;S3、啟動(dòng)上位機(jī),找到S19文件所在路徑,進(jìn)行文件的讀取解析并按照自主擴(kuò)展的CCP協(xié)議進(jìn)行重新組幀等待發(fā)送;S4、將Bootloader模式選擇開(kāi)關(guān)切換至下載模式;S5、建立上下位機(jī)連接,上位機(jī)發(fā)送握手信號(hào),并等待下位機(jī)返回DTO信息判斷是否握手成功,若發(fā)送成功,則等待啟動(dòng)下載命令,若連接不成功,則顯示連接失??;S6、進(jìn)行數(shù)據(jù)下載,按照自主擴(kuò)展的CCP協(xié)議,上位機(jī)發(fā)送S19文件數(shù)據(jù),下位機(jī)接受數(shù)據(jù),并將數(shù)據(jù)正確存放在對(duì)應(yīng)存儲(chǔ)區(qū);S7、數(shù)據(jù)傳輸完畢,上位機(jī)發(fā)送斷開(kāi)連接命令,上下位機(jī)結(jié)束通訊;S8、將Bootloader模式選擇開(kāi)關(guān)切換至加載模式,控制器開(kāi)始執(zhí)行應(yīng)用程序;軟件更新結(jié)束。上述技術(shù)方案中,所述自主擴(kuò)展的CCP協(xié)議,除包括驗(yàn)證身份時(shí)使用的CONNECT,EXCHANGE_ID,GET_SEED指令以及斷開(kāi)連接時(shí)使用的DISCONNCET指令外,還包括根據(jù)下載文件格式及bootloader原理參考CCP指令格式自定義的兩條擴(kuò)展指令。上述技術(shù)方案中,兩條擴(kuò)展指令分別為:S19_Data指令:下載S19記錄數(shù)據(jù)幀,攜帶每條記錄中的有效數(shù)據(jù);S19_Message:下載S19記錄信息幀,攜帶每條記錄中的基本信息,包括類型、數(shù)據(jù)地址、數(shù)據(jù)長(zhǎng)度、校驗(yàn)和信息。上述技術(shù)方案中,在數(shù)據(jù)下載傳輸過(guò)程中,上位機(jī)讀取S19文件并拆分重組,發(fā)送一條記錄時(shí),先發(fā)送S19_Data指令,再發(fā)送S19_Message,每發(fā)送完一條記錄時(shí)要及時(shí)進(jìn)行校驗(yàn);待所有記錄發(fā)送成功后顯示發(fā)送成功斷開(kāi)與空調(diào)控制器連接。相對(duì)于現(xiàn)有技術(shù),本發(fā)明的有益效果為:從軟件架構(gòu)、程序刷新過(guò)程來(lái)看,本發(fā)明自主設(shè)計(jì)的配套上位機(jī)軟件與Bootloader引導(dǎo)程序,整套系統(tǒng)使用簡(jiǎn)單。Bootloader整體存放在控制器內(nèi)存中,軟件結(jié)構(gòu)更簡(jiǎn)單,控制器直接接收CAN網(wǎng)絡(luò)上的目標(biāo)代碼或數(shù)據(jù),過(guò)程簡(jiǎn)便。從通訊協(xié)議來(lái)看,本發(fā)明的通信協(xié)議在CCP協(xié)議基礎(chǔ)上根據(jù)下載文件格式及bootloader原理進(jìn)行了自定義擴(kuò)展,在充分利用CCP安全性的同時(shí)簡(jiǎn)化了通信過(guò)程。從數(shù)據(jù)傳輸可靠性驗(yàn)證來(lái)看,本發(fā)明系統(tǒng)在數(shù)據(jù)傳輸過(guò)程中,每接收完一條記錄進(jìn)行數(shù)據(jù)校驗(yàn),而不是如傳統(tǒng)協(xié)議(診斷服務(wù)規(guī)范符合ISO14229,通訊傳輸協(xié)議符合ISO15765-2/4)中,診斷設(shè)備在數(shù)據(jù)傳輸結(jié)束后進(jìn)行傳輸可靠性驗(yàn)證。從刷新完成后程序加載方式來(lái)看,硬件開(kāi)關(guān)對(duì)主芯片指定引腳進(jìn)行狀態(tài)切換,避免占用存儲(chǔ)空間,有別于傳統(tǒng)指定標(biāo)志位存在后進(jìn)入應(yīng)用程序的方式。從硬件需求來(lái)看,除上位機(jī)和目標(biāo)空調(diào)控制器外,硬件部分僅需USB-CAN卡,不需要額外提供包括診斷欲刷新單元和診斷刷新單元的刷新裝置。綜上所述,本發(fā)明通過(guò)CAN總線更新程序,提高系統(tǒng)升級(jí)的效率和可操作性,而且可以直接利用汽車(chē)上現(xiàn)有的CAN網(wǎng)絡(luò)資源,節(jié)約成本和人力;借鑒CCP協(xié)議中部分與安全性有關(guān)的指令,同時(shí)針對(duì)Bootloader原理自定義擴(kuò)展指令,以此作為通信協(xié)議,充分利用CCP協(xié)議的安全性,并簡(jiǎn)化通信過(guò)程。附圖說(shuō)明圖1為本發(fā)明所述電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)的硬件結(jié)構(gòu)框圖。圖2為本發(fā)明實(shí)例中電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)的空調(diào)控制器單片機(jī)存儲(chǔ)空間劃分示意圖。圖3為本發(fā)明實(shí)例中電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)的上位機(jī)軟件流程圖。圖4為本發(fā)明實(shí)例中電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)下位機(jī)Bootloader程序流程圖。具體實(shí)施方式如圖1所示電動(dòng)汽車(chē)電動(dòng)空調(diào)控制器軟件刷新系統(tǒng)的硬件結(jié)構(gòu)框圖,本發(fā)明包括裝有上位機(jī)Labview軟件的上位機(jī)、USB-CAN卡、貯存了Bootloader引導(dǎo)程序的汽車(chē)空調(diào)控制器,上位機(jī)實(shí)現(xiàn)將待更新的應(yīng)用程序發(fā)送至CAN總線上,USB-CAN通信模塊負(fù)責(zé)連接上位機(jī)和汽車(chē)空調(diào)控制器,實(shí)現(xiàn)上位機(jī)與控制器CAN通信的物理支持,預(yù)先在汽車(chē)空調(diào)控制器中存儲(chǔ)的Bootloader引導(dǎo)程序在下載模式接收待更新的應(yīng)用程序并存入存儲(chǔ)器,在加載模式下加載應(yīng)用程序,完成軟件更新。通信協(xié)議在CCP協(xié)議基礎(chǔ)上根據(jù)下載文件格式及Bootloader原理進(jìn)行了自定義擴(kuò)展,在充分利用CCP安全性的同時(shí)簡(jiǎn)化了通信過(guò)程。所述的上位機(jī)軟件采用Labview平臺(tái)進(jìn)行設(shè)計(jì),如圖2所示,主要分為下載操作區(qū)和顯示區(qū)。使用時(shí),按照文件選擇、讀取、連接、下載等完成系統(tǒng)功能操作,在顯示區(qū)顯示連接和下載狀態(tài)以及讀取并經(jīng)過(guò)處理的19文件。所述的USB-CAN卡采用NI公司的USB-9862。所述的汽車(chē)空調(diào)控制器主控MCU采用FreescaleMC9S12XD256單片機(jī),此款單片機(jī)具備MSCAN模塊,片內(nèi)集成256KFLASH存儲(chǔ)器,F(xiàn)LASH支持在線編程,滿足應(yīng)用程序通過(guò)CAN總線下載、更新的需求,CAN收發(fā)芯片采用TJA1050。本發(fā)明所述的系統(tǒng)包括步驟:S1、預(yù)先編寫(xiě)的Bootloader程序首次裝入單片機(jī)需要通過(guò)BDM下載器,以后將長(zhǎng)期貯存在芯片內(nèi)部存儲(chǔ)器中,執(zhí)行加載程序或者下載應(yīng)用程序功能。S2、應(yīng)用程序編寫(xiě)完后,進(jìn)行編譯,在工程文件中生成待發(fā)送的S19文件。S3、啟動(dòng)上位機(jī),找到文件所在路徑,進(jìn)行文件的讀取解析并按照自主擴(kuò)展的CCP協(xié)議進(jìn)行重新組幀。S4、將Bootloader模式選擇開(kāi)關(guān)切換至下載模式。S5、建立上下位機(jī)連接,上位機(jī)發(fā)送握手信號(hào),并等待下位機(jī)返回DTO判斷是否握手成功,若發(fā)送成功,則等待啟動(dòng)下載命令,若連接不成功,則顯示連接失敗。S6、進(jìn)行數(shù)據(jù)下載,按照自主擴(kuò)展的CCP協(xié)議,上位機(jī)發(fā)送數(shù)據(jù),下位機(jī)接受數(shù)據(jù),并將數(shù)據(jù)正確存放在對(duì)應(yīng)存儲(chǔ)區(qū)。S7、數(shù)據(jù)傳輸完畢,上位機(jī)發(fā)送斷開(kāi)連接命令,上下位機(jī)結(jié)束通訊。S8、將Bootloader模式選擇開(kāi)關(guān)切換至加載模式,控制器開(kāi)始執(zhí)行應(yīng)用程序。軟件更新結(jié)束。所述的自主擴(kuò)展的CCP協(xié)議,包括驗(yàn)證身份時(shí)使用的CONNECT,EXCHANGE_ID,GET_SEED指令以及斷開(kāi)連接時(shí)使用的DISCONNCET指令外,根據(jù)下載文件格式及bootloader原理參考CCP指令格式自定義擴(kuò)展了如下兩條指令。S19_Message:下載S19記錄信息幀,攜帶每條記錄中的基本信息,包括類型、數(shù)據(jù)地址、數(shù)據(jù)長(zhǎng)度、校驗(yàn)和等信息,相應(yīng)的CRO如下:0x1FCTRTYPEADD0ADD1LENCHECKS19_Data:下載S19記錄數(shù)據(jù)幀,攜帶每條記錄中的有效數(shù)據(jù),相應(yīng)的CRO如下:0x30CTRDATA0DATA1DATA2DATA3DATA4DATA5所述的下載文件格式為S19文件,S19文件是飛思卡爾推薦使用的標(biāo)準(zhǔn)文件傳送格式,是一段直接燒寫(xiě)進(jìn)ECU的ASCII碼。上述步驟1中,考慮到Bootloader也是一段程序,不允許修改或擦除,為了避免與應(yīng)用程序存儲(chǔ)地址與其重合,需要對(duì)空調(diào)控制器單片機(jī)內(nèi)部的存儲(chǔ)單元進(jìn)行劃分,劃分的單片機(jī)存儲(chǔ)空間如圖2所示,在編寫(xiě)應(yīng)用程序時(shí),要注意合理放置代碼區(qū)間。上述步驟中,上位機(jī)labview軟件流程圖如圖3所示,建立邏輯連接時(shí),除了發(fā)送CONNECT命令外,本系統(tǒng)還使用了CCP協(xié)議中的GET_SEED與UNLOCK命令來(lái)獲取密鑰和解除保護(hù)狀態(tài),通過(guò)此種密鑰機(jī)制保證系統(tǒng)安全。應(yīng)用程序按順序以指令的形式發(fā)送至下位機(jī),待一條記錄的CAN報(bào)文發(fā)送完畢后,經(jīng)過(guò)一段時(shí)間的的延時(shí),讀取下位機(jī)返回的DTO,判斷S記錄是否發(fā)送成功。若發(fā)送成功,則繼續(xù)發(fā)送下一條S記錄,直到全部S記錄發(fā)送完畢,此時(shí)再發(fā)送一條DISCONNECT指令,告知下位機(jī)發(fā)送完畢;否則顯示“發(fā)送失敗”。上述步驟中,空調(diào)控制器中的Bootloader程序流程如圖4所示,通過(guò)模式切換開(kāi)關(guān)決定是執(zhí)行加載功能還是下載功能,在下載功能中,邏輯連接成功后才能接收上位機(jī)指令,接受完一條記錄時(shí)要及時(shí)進(jìn)行校驗(yàn),回復(fù)上位機(jī)DTO,如果校驗(yàn)正確則將其存入存儲(chǔ)區(qū),否則等待上位機(jī)重新發(fā)送。當(dāng)接收到DISCONNECT指令時(shí),說(shuō)明發(fā)送完成,這時(shí)Bootloader等待開(kāi)關(guān)切換為加載模式。當(dāng)前第1頁(yè)1 2 3