時(shí)間:2006-08-09 11:20:00來(lái)源:wangsl
圖1 在線編程系統(tǒng)結(jié)構(gòu)框圖
在線編程軟件體系分為三層結(jié)構(gòu):控制層、通信層和實(shí)現(xiàn)層,在線編程功能通過(guò)軟件設(shè)計(jì)實(shí)現(xiàn)。最高層為控制層,運(yùn)行在上位機(jī)PC計(jì)算機(jī)中,主要負(fù)責(zé)代碼生成和ECU節(jié)點(diǎn)在線編程的啟停;中間層為通信層,運(yùn)行在CAN總線設(shè)備上,實(shí)現(xiàn)CAN總線鏈路層和部分應(yīng)用層功能,如報(bào)文發(fā)送、接收及濾波;底層為實(shí)現(xiàn)層,運(yùn)行在ECU節(jié)點(diǎn),實(shí)現(xiàn)對(duì)嵌入式節(jié)點(diǎn)的編程操作,具體結(jié)構(gòu)見(jiàn)圖2。通信層處理的數(shù)據(jù)有三種:控制命令、代碼數(shù)據(jù)和反饋信息,其中控制命令和代碼數(shù)據(jù)由控制層向?qū)崿F(xiàn)層傳遞,反饋信息則是由實(shí)現(xiàn)層向控制層傳遞,所有數(shù)據(jù)傳輸遵循系統(tǒng)定制的CAN總線應(yīng)用層協(xié)議,該協(xié)議在分布式控制系統(tǒng)中CAN總線協(xié)議應(yīng)用層的基礎(chǔ)上,重新劃分報(bào)文標(biāo)志符空間,并定義相應(yīng)的含義和可執(zhí)行操作。本文主要探討系統(tǒng)的具體實(shí)現(xiàn),總線協(xié)議的擴(kuò)展定義不作詳細(xì)介紹。
圖2 系統(tǒng)軟件體系結(jié)構(gòu)示意圖
2.2PC機(jī)控制層軟件的設(shè)計(jì)
整個(gè)控制系統(tǒng)中,控制層軟件位于PC機(jī)節(jié)點(diǎn),通過(guò)與實(shí)現(xiàn)層軟件通信來(lái)控制編程操作的啟停和代碼的總線數(shù)據(jù)傳輸,不直接參與對(duì)ECU節(jié)點(diǎn)的控制功能操作。
控制層軟件的功能主要包括兩部分:首先是生成下載到flash中的最終代碼數(shù)據(jù),PC機(jī)軟件不參與flash編程,但必須為ECU節(jié)點(diǎn)提供編程所需要的信息,因此,PC機(jī)軟件對(duì)生成的二進(jìn)制代碼進(jìn)行分析,獲取flash編程的必要信息,如代碼長(zhǎng)度、寫入flash的地址、校驗(yàn)字等;其次是控制在線編程的啟動(dòng)和停止,控制層維護(hù)一個(gè)稱為反饋信息表格的數(shù)據(jù)結(jié)構(gòu),表格中的信息表明哪些節(jié)點(diǎn)編程結(jié)束、哪些節(jié)點(diǎn)需要重新啟動(dòng)在線編程,根據(jù)表格內(nèi)容的含義,對(duì)不同ECU節(jié)點(diǎn)發(fā)送不同的命令報(bào)文,啟動(dòng)相應(yīng)操作。
控制層軟件完全由PC機(jī)實(shí)現(xiàn),但系統(tǒng)中PC機(jī)不僅僅完成控制層功能,還包括通信層的部分功能。PC機(jī)通過(guò)轉(zhuǎn)換模塊接入CAN總線網(wǎng)絡(luò),除了完成接收發(fā)送CAN總線報(bào)文的基本功能外,更重要的是實(shí)現(xiàn)系統(tǒng)定制的CAN通信協(xié)議。
2.3ECU節(jié)點(diǎn)軟件的分析
實(shí)現(xiàn)層位于ECU節(jié)點(diǎn),直接完成flash編程操作,是整個(gè)在線編程系統(tǒng)的核心部分。按系統(tǒng)運(yùn)行流程,實(shí)現(xiàn)層軟件可以分為三部分:首先,完成狀態(tài)切換,進(jìn)入在線編程狀態(tài);其次,接收代碼報(bào)文,并進(jìn)行校驗(yàn);最后,將接收到的代碼寫入flash空間,驗(yàn)證無(wú)誤后,結(jié)束在線編程。同通信層類似,實(shí)現(xiàn)層需要定義ECU節(jié)點(diǎn)在線編程協(xié)議。在線編程技術(shù)的基本原理:從結(jié)構(gòu)上將Flash存儲(chǔ)器映射為兩個(gè)存儲(chǔ)空間,運(yùn)行一個(gè)存儲(chǔ)體上的程序,打開(kāi)flash高壓編程開(kāi)關(guān)對(duì)另一個(gè)存儲(chǔ)體進(jìn)行編程操作。MC08HC908GZ60的內(nèi)部flash存儲(chǔ)器具有保護(hù)功能,可以設(shè)置flash寫保護(hù)空間,將flash空間分為兩段,一段為系統(tǒng)區(qū),存儲(chǔ)系統(tǒng)代碼,另一段為保護(hù)區(qū),存儲(chǔ)實(shí)現(xiàn)層代碼,對(duì)系統(tǒng)區(qū)編程時(shí),保護(hù)BootLoader代碼,兩個(gè)代碼段共存于一個(gè)系統(tǒng),又不會(huì)相互干擾。系統(tǒng)打開(kāi)高壓開(kāi)關(guān)后,任何讀flash操作都是非法的,系統(tǒng)進(jìn)入在線編程狀態(tài)后,需要將flash編程代碼拷貝到RAM中,再運(yùn)行相關(guān)代碼。在線編程時(shí),RAM空間需要?jiǎng)澐殖鰞啥螌S每臻g,一段為CAN接收緩沖區(qū),一段為代碼空間,是在線編程時(shí)代碼存放和運(yùn)行空間。
同樣的,ECU節(jié)點(diǎn)不僅運(yùn)行實(shí)現(xiàn)層軟件,同時(shí)完成了通信層的部分功能,本質(zhì)上通信層是對(duì)系統(tǒng)定制的CAN通信協(xié)議的具體實(shí)現(xiàn),由PC機(jī)節(jié)點(diǎn)和ECU節(jié)點(diǎn)代碼共同完成,兩者通過(guò)CAN總線實(shí)現(xiàn)通信的過(guò)程就是通信層的工作過(guò)程。
3.ECU節(jié)點(diǎn)的軟件設(shè)計(jì)
在線編程系統(tǒng)中,ECU節(jié)點(diǎn)的代碼即為保護(hù)區(qū)的代碼,可以分為兩部分:通信層部分代碼和實(shí)現(xiàn)層代碼。通信層代碼主要由CAN報(bào)文接收中斷函數(shù)和報(bào)文發(fā)送函數(shù)組成,兩函數(shù)都是不允許在線更新,因此代碼必須位于flash保護(hù)區(qū)中。
圖3 實(shí)現(xiàn)層軟件流程
保護(hù)區(qū)除了存儲(chǔ)通信層部分代碼外,還包括實(shí)現(xiàn)層的全部代碼。實(shí)現(xiàn)層的主要功能是flash編程操作,將接收緩沖區(qū)的代碼數(shù)據(jù)寫入flash的確定地址空間內(nèi),在flash編程操作前需要完成節(jié)點(diǎn)的狀態(tài)遷移,即ECU節(jié)點(diǎn)必須進(jìn)入在線編程狀態(tài)。本系統(tǒng)采用的方式是在啟動(dòng)過(guò)程中檢測(cè)啟動(dòng)報(bào)文,若檢測(cè)到有啟動(dòng)報(bào)文到達(dá),則跳入特定的地址,進(jìn)入在線編程狀態(tài)。具體流程圖3所示:
系統(tǒng)啟動(dòng)后,先檢測(cè)是否收到啟動(dòng)報(bào)文,然后轉(zhuǎn)入相應(yīng)的狀態(tài),省略了啟動(dòng)后的初始化操作。由圖可知,有兩處跳轉(zhuǎn)可以進(jìn)入正常運(yùn)行狀態(tài),這可以通過(guò)“JMP Main”匯編指令完成,保護(hù)區(qū)地址不變,那么啟動(dòng)向量就不需要改變。MC08HC908GZ60共有26個(gè)中斷源,中斷向量位于(0xFFCC-0xFFFF)空間內(nèi),內(nèi)容是支持在線更新的,如何實(shí)現(xiàn)更新呢?有兩種解決方法:第一種, MC08HC908GZ60的中斷向量表固定在(0xFFCC-0xFFFF)之間的52個(gè)字節(jié)內(nèi),對(duì)中斷向量表空間的內(nèi)容進(jìn)行單獨(dú)編程寫入。注意,不是整頁(yè)寫入,中斷向量表所在頁(yè)空間中部分地址是保留空間,部分地址是寄存器地址,不可能用圖3編程流程對(duì)向量表空間編程,只能對(duì)頁(yè)內(nèi)部分空間執(zhí)行在線編程操作。第二種解決方法:通過(guò)輔助表格實(shí)現(xiàn)中斷向量表的在線更新,如圖4所示。
圖4 輔助表格示意圖
所謂輔助表格是一個(gè)存放指令的數(shù)據(jù)結(jié)構(gòu),表格內(nèi)存放跳轉(zhuǎn)到中斷入口的指令,中斷向量則對(duì)應(yīng)輔助表格中的單元格地址,輔助表格的地址是用戶定義的,位于支持在線編程的系統(tǒng)區(qū)空間。輔助表格中所有指令均采用擴(kuò)展尋址,指令長(zhǎng)3個(gè)字節(jié),設(shè)輔助表格地址Tbl_Start,則表格中第N單元格的地址為Tbl_Start+(26-N)*3,輔助表格代碼如下:
ORG Tbl_Start ;輔助表格的起始地址
JMP Address_ISR24 ;跳轉(zhuǎn)到24號(hào)中斷處理程序入口
JMP Address_ISR23 ;跳轉(zhuǎn)到23號(hào)中斷處理程序入口
――――――――――
JMP Main ;跳轉(zhuǎn)到Main主函數(shù)入口
上面的代碼屬于系統(tǒng)區(qū)代碼,除首地址外,其他地址均根據(jù)需要隨時(shí)改變的。中斷向量表中內(nèi)容則可以保持不變,代碼如下:
ORG $FFCC ;中斷向量表的地址空間0xFFCC-0xFFFF
Vectors FDB Tbl_Start, Tbl_Start+3, Tbl_Start+6―――― ;向量表的內(nèi)容
這樣,中斷向量表代碼可以在保護(hù)區(qū)內(nèi)保持不變,不需要對(duì)表內(nèi)容直接進(jìn)行更新。
4.結(jié)束語(yǔ)
利用CAN總線完成對(duì)汽車電子控制系統(tǒng)節(jié)點(diǎn)的在線編程,利用了已有的硬件條件解決了車身分布式控制系統(tǒng)的現(xiàn)場(chǎng)升級(jí)問(wèn)題。系統(tǒng)主要通過(guò)軟件方式實(shí)現(xiàn),不需要進(jìn)行單獨(dú)硬件開(kāi)發(fā),開(kāi)發(fā)過(guò)程易于掌握。在線編程時(shí),只需要將PC機(jī)節(jié)點(diǎn)接入車身控制系統(tǒng)預(yù)留的CAN總線接口即可,操作方便,本技術(shù)模型不僅可以應(yīng)用于汽車電子領(lǐng)域,還可以推廣到其他分布式控制系統(tǒng),應(yīng)用前景看好。
標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
耐磨管道機(jī)器人檢測(cè)電纜CCTV,水下管道...
2025-09-23