亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        電動汽車整車控制器BootLoader功能開發(fā)①

        2014-06-14 03:37:00樂志國金啟前
        關(guān)鍵詞:功能

        樂志國, 金啟前

        (1.同濟(jì)大學(xué),上海 201804;2.吉利汽車研究院,浙江 杭州 311228)

        0 引言

        在整車控制器(簡稱VCU)開發(fā)過程中需要多次將應(yīng)用程序燒寫到芯片中.傳統(tǒng)的燒寫方法一般是利用芯片專用下載器通過BDM調(diào)試接口下載程序,該方法不僅下載速度慢,而且給后期整車控制器的調(diào)試和維護(hù)都帶來極大不便.因?yàn)闊o論前期開發(fā)多么完善,寫出來的程序都不可避免會存在一定的bug.對于電動汽車來說,當(dāng)車輛已投入使用,如何方便快捷的升級主程序,對已知的問題進(jìn)行改善是急需解決的一個問題.車載CAN總線能很好滿足ECU節(jié)點(diǎn)升級的需求,可通過CAN網(wǎng)絡(luò)作為通信介質(zhì)開發(fā)BootLoader解決這一問題[1].BootLoaer為主程序運(yùn)行之前運(yùn)行的一段程序,主要完成應(yīng)用程序的升級更新.基于CAN總線的BootLoader需要在CAN協(xié)議的基礎(chǔ)上實(shí)現(xiàn)一個數(shù)據(jù)傳輸和命令執(zhí)行的協(xié)議.本文采用自定義數(shù)據(jù)傳輸和命令執(zhí)行的協(xié)議,設(shè)計(jì)實(shí)現(xiàn)了整車控制器BootLoader功能.

        1 BootLoader簡介

        設(shè)備上電復(fù)位后,立即執(zhí)行BootLoader代碼.Bootloader開始運(yùn)行后,初始化CPU硬件設(shè)備,設(shè)置系統(tǒng)所需要的環(huán)境變量,并且最后進(jìn)入C代碼的main函數(shù)入口,啟動內(nèi)核.一般BootLoader會跳轉(zhuǎn)到主程序運(yùn)行,當(dāng)檢測到需要燒寫程序時,Boot-Loader才會繼續(xù)運(yùn)行.在技術(shù)層面上說,Bootloader的啟動過程可以是單階段,也可以是多階段.通常地,多階段有助于實(shí)現(xiàn)更好的可移植特性以及更多復(fù)雜函數(shù)[2].而在芯片CPU啟動的BootLoader大多數(shù)分兩個階段完成.首先是外圍硬件設(shè)備的初始化,如對CPU功能模塊、串口、看門狗、時鐘 等;其次是內(nèi)部硬件設(shè)備的初始化,即相關(guān)寄存器的初始化,設(shè)置內(nèi)核的啟動參數(shù).初始化完成后進(jìn)入通信任務(wù)循環(huán),等待接收命令.如循環(huán)等待超時,則自動跳轉(zhuǎn)的主程序運(yùn)行[3].不同的芯片MCU實(shí)現(xiàn)Boot-Loader方法各不相同,但是實(shí)現(xiàn)思路上基本一致.

        2 BootLoader上位機(jī)實(shí)現(xiàn)

        上位機(jī)端的BootLoader主要用于為整車控制器讀取并下載升級程序代碼,即S19文件.整車控制器采用的主芯片為飛思卡爾16位芯片MC9S12XDP512,通過該芯片的集成開發(fā)環(huán)境CodeWarrior對應(yīng)用程序編譯后,即可生成芯片的下載文件S19文件.S19文件為飛思卡爾推薦使用的標(biāo)準(zhǔn)文件傳送格式,是一段直接燒寫進(jìn)芯片的ASCII碼.文件中每行最多包含78個字節(jié),包括類型、計(jì)數(shù)、地址、數(shù)據(jù)及校驗(yàn)和[4].

        2.1 BootLoader上位機(jī)功能

        BootLoader上位機(jī)界面是基于Visual C++6開發(fā),采取多線程機(jī)制實(shí)現(xiàn).提供人機(jī)交互功能、CAN通信功能、S19文件讀取功能以及數(shù)據(jù)處理功能.相應(yīng)的模塊構(gòu)成如下:

        (1)人機(jī)交互模塊:人機(jī)交互主要包括人機(jī)界面和中央控制.通過人機(jī)界面,操作人員可以更便捷地了解BootLoader功能實(shí)時運(yùn)行情況;中央控制負(fù)責(zé)通信功能的開啟關(guān)閉、文件的讀取解析以及程序下載過程中系統(tǒng)狀態(tài)的監(jiān)控.

        (2)CAN通信模塊:通過使用整車控制器現(xiàn)有的CAN接口,上位機(jī)把CAN總線作為數(shù)據(jù)傳輸?shù)慕橘|(zhì),按照既定的CAN協(xié)議實(shí)現(xiàn)上位機(jī)端與整車控制器端的握手、應(yīng)答、數(shù)據(jù)傳輸、校驗(yàn)以及模式控制等功能.

        (3)S19文件解析模塊:S19文件具有體積小、攜帶方便、格式易于分析的有點(diǎn).上位機(jī)S19文件解析模塊主要包括S19文件的讀取程序、解釋程序、發(fā)送報文生成程序和通信程序.

        (4)數(shù)據(jù)處理模塊:為保證CAN通信的正常,數(shù)據(jù)傳輸?shù)挠行?,上位機(jī)會針對讀取的S19文件數(shù)據(jù)、生成的報文數(shù)據(jù)以及接收到的整車控制器端發(fā)送的數(shù)據(jù)進(jìn)行監(jiān)控校驗(yàn)處理,并將處理結(jié)果實(shí)時顯示在人機(jī)界面,方便操作人員采取有效的動作.

        上位機(jī)圖形界面如圖1所示.

        圖1 上位機(jī)圖形界面

        2.2 BootLoader上位機(jī)發(fā)送流程

        由于PC機(jī)上沒有CAN控制器,上位機(jī)CAN通信選用周立功CAN卡實(shí)現(xiàn),周立功CAN接口卡提供了CAN驅(qū)動所需的動態(tài)鏈接庫.上位機(jī)啟動CAN,打開CAN口后,即自動激活S19文件讀取功能,操作人員手動選取被讀取文件的路徑.上位機(jī)將S19文件的所有數(shù)據(jù)讀進(jìn)來,存放的預(yù)先分配的內(nèi)存中,按照記錄地址及記錄長度將其分成連續(xù)的字節(jié)塊,每塊再分為512 Byte的連續(xù)段.根據(jù)自定義CAN協(xié)議將S19文件的一行記錄(地址:連續(xù)段的首地址,數(shù)據(jù),校驗(yàn)和等)拆分為若干個小的數(shù)據(jù)包,然后使用單個CAN的數(shù)據(jù)幀對其逐一傳送.

        當(dāng)S19文件內(nèi)容按照既定格式生成報文,即可向整車控制器發(fā)送握手信號請求升級應(yīng)用程序,若整車控制器工作正常則發(fā)送相應(yīng)的應(yīng)答信號允許下載程序.數(shù)據(jù)的傳送由CAN通信命令序列處理機(jī)制實(shí)現(xiàn).根據(jù)不同的處理序列,發(fā)送數(shù)據(jù)封裝在CAN消息的數(shù)據(jù)幀中,通過周立功控制器驅(qū)動接口程序,將升級后的應(yīng)用程序由上位機(jī)經(jīng)CAN接口卡發(fā)送給整車控制器.上位機(jī)端發(fā)送流程如圖2所示.數(shù)據(jù)傳輸時,整車控制器反饋信息并顯示數(shù)據(jù)校驗(yàn)結(jié)果、寫入情況等功能.

        圖2 上位機(jī)BootLoader發(fā)送流程

        2.3 通信協(xié)議制定

        為防止其他人員通過非正常途徑下載、修改整車控制器應(yīng)用程序,本文開發(fā)一套自定義的數(shù)據(jù)通信下載協(xié)議.具體規(guī)定了上位機(jī)與整車控制器之間如何握手、應(yīng)答、數(shù)據(jù)的發(fā)送與接收,以及CAN報文校驗(yàn)的機(jī)制.同時,在數(shù)據(jù)下載之前,要求驗(yàn)證操作人員的身份.本文簡單實(shí)現(xiàn)了驗(yàn)證碼解析功能,將整車控制器返回的編碼值作為偽碼.當(dāng)連接時,上位機(jī)端通過發(fā)送編碼獲取命令得到整車控制器反饋的偽碼,經(jīng)內(nèi)部解析計(jì)算出正確的驗(yàn)證碼后把它傳送給整車控制器.如果驗(yàn)證碼正確,則授權(quán)升級應(yīng)用程序.

        圖3 主程序流程框圖

        3 整車控制器BootLoader設(shè)計(jì)

        通常,基于嵌入式的BootLoader開發(fā)需要依賴具體的硬件實(shí)現(xiàn),但是針對某一架構(gòu)的系列芯片,可以實(shí)現(xiàn)一定程度上的通用.飛思卡爾16位基于HCS12內(nèi)核的系列芯片在CPU上電后總是從地址0xFFFE處取第一條指令,可以將BootLoader放在此處使其成為CPU上電后執(zhí)行的第一條指令.本文所使用的飛思卡爾芯片自帶CAN通信模塊.整車控制器端BootLoader功能主要分為3個模塊:主程序模塊,CAN通信模塊和Flash數(shù)據(jù)擦寫模塊.

        3.1 主程序模塊設(shè)計(jì)

        整車控制器上電復(fù)位后,進(jìn)入BootLoader程序入口地址,在完成上電初始化后,即等待上位機(jī)發(fā)送的握手信號.在等待500ms后若沒收到上位機(jī)信號,系統(tǒng)判別不進(jìn)行應(yīng)用程序加載,退出Boot-Loader功能,跳轉(zhuǎn)到應(yīng)用程序入口地址處,執(zhí)行應(yīng)用程序.若系統(tǒng)收到上位機(jī)握手信號,則有可加載的應(yīng)用程序代碼,BootLoader向上位機(jī)發(fā)送應(yīng)答信號,同時擦除芯片用于存儲應(yīng)用程序代碼部分的Flash,等待上位機(jī)數(shù)據(jù)報文的到來.整車控制器接收到上位機(jī)發(fā)送來得數(shù)據(jù)后,按照既定的協(xié)議對每個數(shù)據(jù)包解析,每完成一行數(shù)據(jù)的接收,即進(jìn)行一次數(shù)據(jù)的校驗(yàn),當(dāng)確認(rèn)校驗(yàn)正確,調(diào)用Flash編程函數(shù)將通過校驗(yàn)的數(shù)據(jù)按照給定的地址寫入到Flash中,并將校驗(yàn)和擦寫的結(jié)果反饋給上位機(jī).數(shù)據(jù)寫入完成,重新執(zhí)行上電過程,芯片復(fù)位,系統(tǒng)跳轉(zhuǎn)到整車控制器應(yīng)用程序執(zhí)行.主程序流程如圖3所示.

        圖4 MSCAN初始化流程

        圖5 MSCAN發(fā)送流程

        3.2 CAN通信模塊設(shè)計(jì)

        通信模塊負(fù)責(zé)與BootLoader上位機(jī)的通信,分為CAN控制器初始化、CAN接收和CAN發(fā)送3部分.用于實(shí)現(xiàn)數(shù)據(jù)的收發(fā)和CAN報文的解包.

        3.2.1 MSCAN 初始化

        初始化CAN控制器模塊,需要對MSCAN模塊寄存器進(jìn)行配置.寄存器的配置在MSCAN休眠模式下完成,寄存器配置完后,通過MSCAN的寄存器使能位使能CAN,并喚醒CAN通信.要求如下:

        根據(jù)CAN通信協(xié)議,選取合適的時鐘源.本文根據(jù)協(xié)議中規(guī)定的波特率和整車控制器的硬件設(shè)計(jì),選取振蕩器作為CAN通信時鐘源.整車控制器所使用的晶振為16MHz,經(jīng)過預(yù)分頻處理后得到CAN通信的波特率為500Kbps.

        設(shè)定CAN通信的濾波參數(shù).BootLoader數(shù)據(jù)的下載通過特定的幀來完成.根據(jù)協(xié)議,選取標(biāo)準(zhǔn)幀格式,并設(shè)置相應(yīng)的濾波器,使得MSCAN僅接收特定段的CAN報文.MSCAN初始化流程如圖4所示.

        3.2.2 MSCAN 發(fā)送程序設(shè)計(jì)

        要發(fā)送的數(shù)據(jù)打包后,首先選擇MSCAN中空閑發(fā)送緩沖區(qū),并將報文放置于發(fā)送緩沖區(qū).MSCAN具有多個發(fā)送緩沖區(qū),可以同時寫入多個報文,寫入報文后,通過設(shè)置相應(yīng)緩沖區(qū)的指針,通知MSCAN模塊有需要發(fā)送的報文.當(dāng)總線空閑時,MSCAN會根據(jù)存儲報文的優(yōu)先級依次發(fā)送寫入發(fā)送緩沖區(qū)的報文.MSCAN發(fā)送流程如圖5所示[5].

        圖6 MSCAN接收流程

        3.2.3 MSCAN 接收程序設(shè)計(jì)

        MSCAN具有多個數(shù)據(jù)接收緩沖區(qū),可同時接收多個數(shù)據(jù)報文.數(shù)據(jù)報文的讀取可采取中斷和查詢的方式,本文選取采用查詢的方式接收報文,每隔一定的時間周期,程序通過讀取接收標(biāo)志寄存器確認(rèn)接收緩沖區(qū)中是否有報文要讀取.數(shù)據(jù)讀取后,清零接收標(biāo)志寄存器釋放接收緩沖區(qū).MSCAN接收流程如圖6所示.

        3.3 Flash擦寫模塊設(shè)計(jì)

        飛思卡爾微控制器內(nèi)部集成Flash,可以存儲運(yùn)行所需的代碼和數(shù)據(jù).芯片的Flash區(qū)域被分塊處理,內(nèi)部配有Flash保護(hù)配置寄存器,用以確定被保護(hù)的區(qū)域的大小.系統(tǒng)復(fù)位時,首先從此區(qū)域加載數(shù)據(jù).為了保證整個順利擦除和寫入Flash,必須保證總線時鐘和Flash工作時鐘在合理范圍內(nèi).本文所選用的16MHz外部時鐘參考,可以保證總線時鐘大于2MHz,滿足Flash編程的要求.初始化Flash模塊時,可通過設(shè)置合理的Flash時鐘分頻寄存器的值,使Flash工作時鐘保證在150~200kHz內(nèi),否則有可能導(dǎo)致Flash擦除和寫入失敗[6].

        具體來說,對Flash的擦除既可整體擦除,也可以僅擦除一個扇區(qū),但擦除的內(nèi)容不能小于一個扇區(qū).而針對Flash的寫入操作要以字為基礎(chǔ).Flash的擦除和寫入操作主要包括以下4個步驟:

        (1)設(shè)置Flash預(yù)分頻寄存器,保證Flash工作頻率在150~200kHz內(nèi);

        (2)設(shè)置Flash控制寄存器的值,使能擦除或?qū)懭朊?

        (3)讀取狀態(tài)寄存器值,確認(rèn)擦除或?qū)懭氩僮魍瓿?

        (4)判斷命令執(zhí)行過程有無錯誤產(chǎn)生.

        圖7 應(yīng)用程序S19文件

        圖8 芯片內(nèi)存中的數(shù)據(jù)

        4 測試結(jié)果

        整車控制器端代碼完成后,編譯源代碼生成BootLoader程序的S19文件并下載到整車控制器上運(yùn)行,并進(jìn)行測試.芯片復(fù)位后對當(dāng)前狀態(tài)做出判斷,將S19文件中數(shù)據(jù)按照實(shí)際地址寫入Flash.測試及結(jié)果如下.

        如圖7為生成的應(yīng)用程序S19文件,應(yīng)用程序中集成了CAN通信功能,跑馬燈功能,可以用來直觀地測試應(yīng)用程序下載后的結(jié)果.圖8是通過BootLoader程序下載到Flash中后顯示的芯片內(nèi)存中的數(shù)據(jù).通過對比,應(yīng)用程序可以按照實(shí)際的地址下載到指定的芯片內(nèi)存中,實(shí)現(xiàn)了整車控制器的BootLoader功能.

        利用CAN測試工具CANoe可以快速實(shí)現(xiàn)對整車控制器CAN通信功能的診斷.在線測試如圖9所示,測試環(huán)境由CANoe、整車控制器、系統(tǒng)電源等組成.系統(tǒng)電源用于整車控制器供電,將CANoe與整車控制器的CAN通信接口相連,啟動CANoe軟件監(jiān)控測試界面,系統(tǒng)上電后,即可監(jiān)控測試結(jié)果.

        圖9 BootLoader功能在線測試

        整車控制器在供電后開始運(yùn)行.通過在線測試可以看到,跑馬燈有規(guī)律地按固定周期閃爍.利用CANoe工具,隨機(jī)對整車控制器CAN故障診斷功能進(jìn)行了測試,測試結(jié)果如圖10所示,包含了故障代碼、故障狀態(tài)等的描述,CAN通信功能正常.

        圖10 測試結(jié)果

        5 結(jié)論

        一個設(shè)計(jì)良好的BootLoader既能夠加快應(yīng)用程序的開發(fā),又方便后期使用階段應(yīng)用程序的升級、修改.本文實(shí)現(xiàn)了基于整車控制器的BootLoader功能的開發(fā),通過自定義的協(xié)議,基于CAN通信實(shí)現(xiàn)了應(yīng)用程序S19文件的解析和下載.測試表明,所開發(fā)的BootLoader能正確下載應(yīng)用程序,可穩(wěn)定擦寫芯片F(xiàn)lash,未出現(xiàn)數(shù)據(jù)丟失,能快速、準(zhǔn)確地實(shí)現(xiàn)整車控制器升級功能,并可進(jìn)一步擴(kuò)展,提高應(yīng)用程序的開發(fā)效率.

        [1]王薇.基于嵌入式linux的BootLoader的設(shè)計(jì)與應(yīng)用[D].成都:西南交通大學(xué),2006.

        [2]孫天澤,袁文菊,張海峰.嵌入式設(shè)計(jì)與Linux驅(qū)動開發(fā)指南[M].北京:電子工業(yè)出版社,2005.

        [3]游侃民.嵌入式系統(tǒng)網(wǎng)絡(luò)化BOOTLOADER的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2010.

        [4]王宜懷,劉曉升.嵌入式系統(tǒng):使用HCS12微控制器的設(shè)計(jì)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

        [5]鄒東升,佘龍華.一種基于CAN總線的程序調(diào)試技術(shù)研究[J].計(jì)算機(jī)技術(shù)與應(yīng)用,2008,26(5):116-117.

        [6]羅勝耘,路安江.串行Flash啟動BootLoader的設(shè)計(jì)與實(shí)現(xiàn)[J].化工自動化及儀表,2010,37(8):90-93.

        猜你喜歡
        功能
        拆解復(fù)雜功能
        鐘表(2023年5期)2023-10-27 04:20:44
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        基層弄虛作假的“新功能取向”
        深刻理解功能關(guān)系
        鉗把功能創(chuàng)新實(shí)踐應(yīng)用
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        基于PMC窗口功能實(shí)現(xiàn)設(shè)備同步刷刀功能
        懷孕了,凝血功能怎么變?
        媽媽寶寶(2017年2期)2017-02-21 01:21:24
        “簡直”和“幾乎”的表達(dá)功能
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        免费无码又爽又刺激高潮的视频网站| 亚洲亚洲人成综合丝袜图片| a级毛片免费完整视频| 日韩AV不卡一区二区三区无码| 大陆啪啪福利视频| 久久久人妻一区二区三区蜜桃d| 免费国产在线精品一区| 欧美日韩一区二区三区自拍| 国产成人免费一区二区三区| 亚洲一级天堂作爱av| 无码爽视频| 中文人妻无码一区二区三区在线| 久久九九青青国产精品| 国产一区二区三区再现| 亚洲av综合色区无码一区| 久久不见久久见免费影院www| 国产成人美女AV| 国产偷国产偷亚洲高清| 国产免费观看黄av片| 精品无码国产自产野外拍在线| 欧美日韩一区二区三区视频在线观看| 免费观看日本一区二区三区| 男人女人做爽爽18禁网站| 国产亚洲日韩欧美一区二区三区| 免费在线观看亚洲视频| 91精品人妻一区二区三区久久久| 帮老师解开蕾丝奶罩吸乳视频 | 久久精品国产亚洲av久按摩| 人人妻一区二区三区| 手机在线精品视频| 亚洲av男人免费久久| 欲香欲色天天天综合和网| a级毛片在线观看| 亚洲色AV天天天天天天| 日韩中文字幕不卡在线| 日日噜噜夜夜狠狠va视频| 一级片麻豆| 国成成人av一区二区三区| 天堂中文а√在线| 亚洲男同志gay 片可播放| 亚洲精品国产一区av|