999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CAN總線的ECU在線編程技術(shù)*

2014-09-06 10:49:55朱少輝夏超英
關(guān)鍵詞:單片機(jī)程序系統(tǒng)

朱少輝,夏超英

(天津大學(xué) 電氣與自動化工程學(xué)院,天津 300072)

?

基于CAN總線的ECU在線編程技術(shù)*

朱少輝,夏超英

(天津大學(xué) 電氣與自動化工程學(xué)院,天津 300072)

針對已安裝完成的車身ECU程序升級困難的問題,基于CAN總線的自定義協(xié)議,設(shè)計(jì)了一種ECU在線升級方案,并在Infineon XC2000系列單片機(jī)上具體實(shí)現(xiàn)。詳細(xì)介紹了在線升級系統(tǒng)的軟硬件組成、單片機(jī)Bootloader的設(shè)計(jì)方案,以及系統(tǒng)的工作過程。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能夠很好地完成ECU在線升級功能,并能有效解決ECU在線升級過程中的一些問題。

CAN總線;在線編程;引導(dǎo)加載程序; Infineon XC2000

引 言

隨著IAP技術(shù)的出現(xiàn)以及Flash價(jià)格的降低,一般的電控單元(ECU)都具有IAP(In Application Programming)功能和較大的Flash空間,為實(shí)現(xiàn)ECU在線編程功能提供了必要條件[1]。

目前基于IAP技術(shù)的在線編程的方案有很多,采用的通信方式和具體實(shí)現(xiàn)方法也各不相同。參考文獻(xiàn)[2]采用RS232總線 和YMODEM協(xié)議開發(fā)了用于智能終端的在線升級系統(tǒng),但是RS232總線的傳輸速率有限。參考文獻(xiàn)[3]采用LIN總線實(shí)現(xiàn)了適用于汽車ECU的在線升級系統(tǒng),LIN總線除了傳輸速率有限以外,同時(shí)它只是一種輔助總線,并不是所有車身ECU都采用LIN接口。參考文獻(xiàn)[1]、[4]采用基于CCP(CAN Calibration Protocol)協(xié)議的在線升級系統(tǒng),兼具CAN總線傳輸速率快和CCP協(xié)議可擴(kuò)展性好的優(yōu)點(diǎn)。本文采用CAN總線,基于CCP原理自定義協(xié)議的在線升級系統(tǒng),具有傳輸速度快的特點(diǎn)。自定義協(xié)議各命令基本沿用CCP協(xié)議,但內(nèi)容做了改動,這樣通過改動協(xié)議內(nèi)容能夠很好地適合特定環(huán)境的應(yīng)用。同時(shí)在升級過程中加入升級請求標(biāo)志位,能夠很好地改進(jìn)程序下載過程中命令延時(shí)等待、應(yīng)用程序下載失敗以后下次無法連接的問題。

IAP和Bootloader原理略——編者注。

1 在線編程系統(tǒng)設(shè)計(jì)

在線編程系統(tǒng)硬件主要包含三個(gè)部分:帶有下載上位機(jī)軟件的PC機(jī)、USB-CAN接口卡和安裝有Bootloader程序的ECU。上位機(jī)通過USB-CAN接口卡與ECU通信,并進(jìn)行代碼的升級。軟件主要包含兩個(gè)部分:上位機(jī)的Bootloader下載程序和下位機(jī)的Bootloader程序。

1.1 通信協(xié)議與上位機(jī)程序設(shè)計(jì)

1.1.1 通信協(xié)議的制定

系統(tǒng)通信協(xié)議的以CCP協(xié)議原理為基礎(chǔ),結(jié)合實(shí)際操作過程的需求來制定。CCP協(xié)議提供11個(gè)基本命令和17個(gè)可選命令,基本命令包括:CONNECT、GET_CCP_VERS ION、EXCHANGE_ID、SET_MTA、DNLOAD、UPLOAD、GET_DAQ_PTR、WRITE_DAQ、START_STOP、DISCONNECT。本協(xié)議采用其中CONNECT、DISCONNECT、CLEAR_MEMORY、PROGRAM、SET_MTA。命令內(nèi)容根據(jù)實(shí)際需要自定義;消息應(yīng)答信號有連接成功應(yīng)答、編程準(zhǔn)備就緒應(yīng)答、頁編程完成應(yīng)答、編程完成應(yīng)答、編程失敗應(yīng)答、SECTION擦除就緒應(yīng)答、SECTION擦除完成應(yīng)答等。本套自定義協(xié)議能夠很好地應(yīng)用在實(shí)際下載過程中。

1.1.2 PC端下載程序的組成

PC端的Bootloader下載程序主要功能是實(shí)現(xiàn)對目標(biāo)文件的解析和與下位機(jī)軟件通信。下載程序采用Visual C++ 6.0編寫,主要分成目標(biāo)文件加載與解析以及Flash編程兩個(gè)模塊。

(1) 目標(biāo)文件的生成和解析

系統(tǒng)應(yīng)用程序文件采用*.HEX格式文件,該文件是記錄文本行的ASCII文本文件,每一行是一條記錄,每條記錄是16進(jìn)制數(shù)組成的機(jī)械碼或數(shù)據(jù)常量。記錄格式:

: LL ADDR TT [DDD…] CC

其中,冒號是記錄開始;LL表示數(shù)據(jù)長度,即[DDD…]的字節(jié)數(shù);ADDR表示地址信息;TT表示記錄的類型;[DDD…]表示數(shù)據(jù)內(nèi)容;CC表示校驗(yàn)和。

利用Tasking開發(fā)環(huán)境,能夠生成包含應(yīng)用程序的*.HEX文件,文件中的記錄類型只有數(shù)據(jù)記錄、線性擴(kuò)展地址記錄和文件結(jié)束記錄。通過上位機(jī)載入目標(biāo)文件,逐條檢索文件內(nèi)容將帶有地址信息的數(shù)據(jù)解析出來,并以CAN數(shù)據(jù)幀(8字節(jié))的形式存放,每16幀數(shù)據(jù)組合成一個(gè)頁,同時(shí)記錄每個(gè)數(shù)據(jù)頁的首地址。

(2) Flash編程模塊

Flash編程模塊實(shí)現(xiàn)與下位機(jī)的通信,主要包含命令的解析、CAN總線驅(qū)動、數(shù)據(jù)發(fā)送和狀態(tài)顯示等部分。CAN總線驅(qū)動采用廣州周立功單片機(jī)發(fā)展有限公司的USB-CAN采集卡的驅(qū)動程序,加入提供的庫函數(shù),來實(shí)現(xiàn)對于CAN總線數(shù)據(jù)的發(fā)送和接收。上位機(jī)軟件提供相關(guān)命令的按鈕,下載過程中通過按動相應(yīng)按鈕來實(shí)現(xiàn)命令的發(fā)送。下載過程中如果接收到連接成功、編程完成或者編程失敗等信號以后,顯示相應(yīng)狀態(tài)。

1.1.3 PC端下載程序的運(yùn)行流程

PC端程序運(yùn)行以后,通過上位機(jī)界面上的“載入文件”按鈕,將要升級程序HEX文件載入,點(diǎn)“解析按鈕”,程序自動將HEX文件分成包含有效數(shù)據(jù)長度為128字節(jié)的頁,同時(shí)將頁首地址保存。根據(jù)已經(jīng)制定好的協(xié)議,上位機(jī)將這些命令封裝成CAN總線消息發(fā)送到下位機(jī)。編程過程中,上位機(jī)將所需要發(fā)送的程序頁總數(shù)發(fā)送給下位機(jī),然后從第一頁開始發(fā)送,每一頁發(fā)送完成以后,等待下位機(jī)發(fā)送頁編程完成信號,完成以后繼續(xù)發(fā)送下一頁,直到所有程序頁都發(fā)送完成,這時(shí)如果無錯(cuò)誤,接收下位機(jī)編程完成應(yīng)答消息,顯示編程完成;否則顯示編程失敗。程序流程圖如圖 1所示。

圖1 PC端下載程序流程圖

1.2 Bootloader設(shè)計(jì)

Flash編程的機(jī)制主要有兩種,分別是調(diào)用Flash擦寫函數(shù)法和Flash kernel法[4]。Flash kernel法需要在進(jìn)行軟件升級時(shí)將Bootloader程序中 Flash擦寫以及相關(guān)的初始化程序都下載到單片機(jī)RAM中,這對RAM資源的要求較高,對于單片機(jī)來說這是有困難的。采用Flash擦寫函數(shù)法,只需要在升級程序時(shí)調(diào)用Flash擦寫函數(shù)即可。對于某些單片機(jī),在對Flash進(jìn)行擦寫時(shí),加在Flash區(qū)的電壓高于普通電壓,會引起Flash區(qū)的操作不穩(wěn)定,因此也需要將Flash擦寫函數(shù)放在RAM中運(yùn)行,這樣采用Flash擦寫函數(shù)能夠有效的減少RAM區(qū)的占用。Infineon XC2000單片機(jī)支持同時(shí)對不同頁的讀/寫操作,不會出現(xiàn)Flash擦寫操作不穩(wěn)定的問題,因此本設(shè)計(jì)采用Flash擦寫函數(shù)法。

1.2.1 Flash空間代碼分布

本設(shè)計(jì)中ECU采用XC2785A單片機(jī),其片上集成32 KB的PSRAM和832 KB的Flash(0xC00000~0xCCFFFF)用于代碼存儲。Flash陣列由4個(gè)塊組成,分別是F0(256 KB,0xC00000~0xC3FFFF)、F1(256 KB,0xC40000~0xC7FFFF)、F2(256 KB,0xC80000~0xCBFFFF)、F3(64 KB,0xCC0000~0xCCFFFF)。每一個(gè)Flash塊由若干個(gè)大小為4 KB的扇區(qū)組成,而每一個(gè)扇區(qū)可分為32個(gè)頁(128字節(jié)),可對每個(gè)頁單獨(dú)進(jìn)行擦除和編程操作。Flash區(qū)段的最開始存放程序的中斷向量表,0xC01000~0xC0DFFF區(qū)段存放Bootloader代碼,0xC0E000~0xC0EFFF區(qū)段中的最開始那個(gè)頁存放升級標(biāo)志, 0xC0F000~0xC0FFFF區(qū)段為單片機(jī)保留區(qū)段,0xC10000~0xCCFFFF段存放應(yīng)用程序,代碼空間分布如圖2所示。

圖2 Flash空間代碼分布示意圖

1.2.2 Bootloader程序流程

復(fù)位中斷向量的出口地址是0xC01000,因此單片機(jī)上電啟動或者軟件重啟以后,首先跳轉(zhuǎn)到STARTUP.C,通過判斷升級標(biāo)志是否置位來進(jìn)行跳轉(zhuǎn)。若置位表示有升級請求,則進(jìn)行Bootloader的初始化,然后執(zhí)行主函數(shù),升級完成以后擦除標(biāo)志位;若無升級請求則跳轉(zhuǎn)到用戶程序區(qū)執(zhí)行用戶程序。用戶程序更新時(shí),需要同時(shí)更新中斷向量,這樣保證用戶程序能夠正常使用中斷功能。

[1]中采用的方法是在用戶程序運(yùn)行時(shí),接受到連接命令,則單片機(jī)跳轉(zhuǎn)到Bootloader程序執(zhí)行升級流程,但是如果升級過程中出現(xiàn)錯(cuò)誤,用戶程序升級未完成,則下一次上電系統(tǒng)將無法運(yùn)行。參考文獻(xiàn)[4]中,采用上電進(jìn)入Bootloader之前發(fā)送握手信號,等待上位機(jī)回復(fù),這樣每次上電都要先進(jìn)行Bootloader的初始化,并且等待這種方式不能很好地保證和上位機(jī)連接。本文采用增加升級狀態(tài)標(biāo)志位的方法,用戶程序在運(yùn)行時(shí),如有升級請求則置狀態(tài)標(biāo)志位,并軟件重啟。重啟以后,單片機(jī)先檢測狀態(tài)標(biāo)志位,有升級請求則進(jìn)入Bootloader進(jìn)行軟件升級,若升級過程中出現(xiàn)錯(cuò)誤導(dǎo)致升級未完成的話,升級狀態(tài)標(biāo)志位將不會清除,單片機(jī)重啟以后仍然進(jìn)去Bootloader,直接操作上位機(jī)上的編程按鈕即可進(jìn)行程序升級操作。這種方法能夠有效解決升級過程中出現(xiàn)失敗以及握手等待的問題,下位機(jī)軟件流程如圖 3所示。

圖3 下位機(jī)軟件流程圖

1.3 在線編程系統(tǒng)工作流程

圖4 系統(tǒng)工作過程

系統(tǒng)連接完成以后,通過上位機(jī)載入需要更新的應(yīng)用程序文件,點(diǎn)擊“CONNECT”按鈕,在線編程系統(tǒng)啟動,系統(tǒng)工作過程如圖 4所示。上位機(jī)界面中顯示連接成功,則可進(jìn)行下一步操作。點(diǎn)擊擦除按鈕,上位機(jī)發(fā)送擦除指令,下位機(jī)擦除相應(yīng)Flash區(qū)域以后發(fā)送給上位機(jī)應(yīng)答信號。上位機(jī)給下位機(jī)發(fā)送編程命令的同時(shí),發(fā)送給下位機(jī)需要編程的頁總數(shù)。下位機(jī)在接收到頁編程地址以后,連續(xù)接收上位機(jī)發(fā)送過來的16幀數(shù)據(jù)(一頁128字節(jié)),然后擦除相應(yīng)區(qū)域,并將這一頁數(shù)據(jù)寫入相應(yīng)的頁,頁編程完成以后向上位機(jī)發(fā)送頁編程完成應(yīng)答,接著接收上位機(jī)發(fā)送過來的下一頁數(shù)據(jù),當(dāng)所有頁編程完成以后向上位機(jī)發(fā)送編程完成應(yīng)答信號。此時(shí)斷開連接,ECU將會軟件重啟。若編程過程中有任一頁編程失敗,上位機(jī)則顯示編程失敗,斷開連接以后ECU重啟,仍然進(jìn)入Bootloader程序,然后直接點(diǎn)擊編程即可。

2 在線編程功能驗(yàn)證

圖5 目標(biāo)HEX文件

在線升級系統(tǒng)采用PC機(jī)(安裝有上位機(jī)軟件),連接廣州周立功單片機(jī)發(fā)展有限公司的USB-CAN采集卡,ECU的CPU采用Infineon XC2785A單片機(jī),系統(tǒng)連接完成以后進(jìn)行升級測試。本文設(shè)計(jì)的在線編程方案測試結(jié)果如下:圖 5為待更新程序的HEX文件(通過Tasking環(huán)境生成),其中有下劃線的位HEX文件記錄中的數(shù)據(jù)記錄,起始地址為0xC11000;圖6為程序下載到Flash以后的數(shù)據(jù),通過Tasking軟件的Debug狀態(tài),來查看Flash地址為0xC11000的數(shù)據(jù)。通過對比兩幅圖片,發(fā)現(xiàn)程序數(shù)據(jù)正確下載到了相應(yīng)的Flash區(qū)域。在下載過程中,通過錯(cuò)誤操作制造在線編程失敗現(xiàn)象,然后斷開連接,ECU重啟以后仍然進(jìn)入Bootloader程序,直接在上位機(jī)界面上點(diǎn)擊“Program”,能夠完成在線升級。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的基于CAN總線的在線升級系統(tǒng)能夠?qū)崿F(xiàn)代碼在線下載的功能,并且能夠有效改善升級過程中下載失敗的問題。

圖6 Flash中的數(shù)據(jù)

結(jié) 語

本文提出的基于CAN總線的ECU在線升級系統(tǒng)設(shè)計(jì)方案,切實(shí)可行,并已在Infineon XC2785A單片機(jī)上完成實(shí)際測試。Infineon XC2000單片機(jī)具有相同的內(nèi)核,因此此方案將對這一系列單片機(jī)的Bootloader設(shè)計(jì)具有指導(dǎo)意義。同時(shí)采用升級標(biāo)志位的方法,對于單片機(jī)IAP功能的實(shí)現(xiàn)提供一個(gè)有益的參考。

參考文獻(xiàn)

[1] 蔣建春,陳紅霞,鄭太雄.基于CCP的ECU在線編程技術(shù)的實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2011, 37(5):241-243.

[2] 江曉梅,李祥和.基于ARM的IAP在線及遠(yuǎn)程升級技術(shù) [J].計(jì)算機(jī)應(yīng)用,2008,28(2):519-521.

[3] 韓江洪,常安云.車身控制系統(tǒng)在線編程技術(shù)的研究與實(shí)現(xiàn)[C]//全國計(jì)算機(jī)技術(shù)與應(yīng)用學(xué)術(shù)會議論文集.寧波:[出版者不詳],2008.

[4] 張艷,鮑可進(jìn).整車控制器Bootloader的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程,2011,37(12):233-235.

[5] 劉矗,羅峰.基于飛思卡爾微控制器的CAN Bootloader的實(shí)現(xiàn)與應(yīng)用[J].蘇州大學(xué)學(xué)報(bào):工學(xué)版,2010,30(2):57-61.

[6] Infineon Technologies.XC2000 Derivatives User’s Manual,2008.

朱少輝(碩士研究生),主要研究領(lǐng)域?yàn)榧冸妱悠囌嚳刂破鏖_發(fā)、電機(jī)控制器開發(fā);夏超英(教授),主要研究領(lǐng)域?yàn)殡娏﹄娮蛹夹g(shù)與裝置、控制理論與應(yīng)用、純電動汽車和混合動力汽車、交流驅(qū)動控制系統(tǒng)與技術(shù)。

Zhu Shaohui, Xia Chaoying

( Electrical Engineering and Automation School, Tianjin University, Tianjin 300072, China)

Focusing on the problem of installed Body ECU program updating, a design of ECU program updating based on self-defined CAN protocol is realized on Infineon XC2000 series MCU. Then the hardware and software composition of program updating system, approach of MCU Bootloader, and working process of the system are introduce. The experimental results show that the system can achieve the function of program updating online and effectively solve some problems in the process of ECU online updating.

CAN bus; online programming; Bootloader; Infineon XC2000

TP23

A

2013-08-04)

猜你喜歡
單片機(jī)程序系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
“程序猿”的生活什么樣
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
主站蜘蛛池模板: 国语少妇高潮| 先锋资源久久| 国产丰满大乳无码免费播放| 国产免费看久久久| 伊在人亚洲香蕉精品播放| 一级全免费视频播放| 日韩精品无码免费专网站| 在线免费看片a| 欧美视频在线第一页| 高清无码不卡视频| 国产裸舞福利在线视频合集| 国产综合欧美| h网址在线观看| 国产欧美亚洲精品第3页在线| 久久免费精品琪琪| 国产在线视频福利资源站| AV色爱天堂网| 免费毛片网站在线观看| 啪啪国产视频| 亚洲 成人国产| 免费国产好深啊好涨好硬视频| 国产成本人片免费a∨短片| 国产精品一区二区国产主播| 精品剧情v国产在线观看| 免费看黄片一区二区三区| 亚洲无码高清视频在线观看| 无码中文字幕乱码免费2| 2020国产精品视频| 欧美午夜视频| 无码中文字幕精品推荐| 亚洲国产成人无码AV在线影院L| 2021精品国产自在现线看| 丰满少妇αⅴ无码区| 99视频精品全国免费品| 激情综合激情| 亚洲色图欧美一区| 亚洲日韩精品综合在线一区二区| 欧美日韩中文国产va另类| 91无码人妻精品一区二区蜜桃| 91高清在线视频| 成年免费在线观看| 女人18毛片一级毛片在线 | 欧美一区二区福利视频| 综合色婷婷| 亚洲无码在线午夜电影| 亚洲AV无码久久天堂| 欧美激情首页| 亚洲天堂啪啪| 99人妻碰碰碰久久久久禁片| 99激情网| 欧美成人第一页| 天堂在线www网亚洲| 伊在人亚洲香蕉精品播放| 日韩欧美国产综合| 国产成人精品一区二区不卡| 粉嫩国产白浆在线观看| 亚洲综合色吧| 欧美在线网| 久久这里只精品热免费99| www.狠狠| 亚洲精品色AV无码看| 欧美亚洲国产一区| jizz在线观看| 中文字幕一区二区人妻电影| 美女一级免费毛片| 久久这里只有精品66| 国产欧美精品一区aⅴ影院| 98精品全国免费观看视频| 中文字幕在线观看日本| 精品国产美女福到在线直播| 99免费在线观看视频| 亚洲成人在线免费| 亚洲精品成人片在线观看 | 亚洲精品在线影院| 国产成人综合亚洲欧美在| 99热最新网址| 国产aⅴ无码专区亚洲av综合网 | 欧美五月婷婷| 亚洲欧美另类日本| 国禁国产you女视频网站| 午夜国产在线观看| 波多野结衣中文字幕一区|