• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MC9S12XEP100的BootLoader設(shè)計與實現(xiàn)

      2018-10-21 11:28:49王志強
      汽車實用技術(shù) 2018年17期
      關(guān)鍵詞:安全機制CAN總線

      王志強

      摘 要:程序的引導(dǎo)加載功能已是汽車電控單元中必不可少的部分,基于飛思卡爾16位處理器MC9S12XEP100,采用CAN總線技術(shù),設(shè)計了一種BootLoader。介紹了BootLoader的實現(xiàn)方法,包括底層驅(qū)動構(gòu)成、引導(dǎo)機制設(shè)計、診斷模塊設(shè)計、存儲模塊設(shè)計以及FLASH安全機制設(shè)計等。實驗結(jié)果表明,BootLoader能夠正確引導(dǎo)程序運行,方便準確的進行控制器軟件升級。

      關(guān)鍵詞:CAN總線;Flash模塊;BootLoader;電控單元;安全機制

      中圖分類號:U462.2 文獻標識碼:B 文章編號:1671-7988(2018)17-190-04

      Abstract: Bootloader function is one of the essential function of embedded system. A BootLoader is designed based on the 16-bit Freescale MCU MC9S12XEP100 and CAN bus. And the application of Bootloader is introduced, which includes driver module design, diagnostic module design, BOOT method design, memory module design, and Flash protected design. Experimental results show that Bootloader could boot the application accurately, downloads and upgrades correctly.

      Keywords: CAN bus; BootLoader; FLASH Module; ECU; Safety

      CLC NO.: U462.2 Document Code: B Article ID: 1671-7988(2018)17-190-04

      1 引言

      汽車電子電控單元ECU的開發(fā)周期較長,并且汽車電子產(chǎn)品開發(fā)對安全性、可靠性的指標要求很高。為了方便軟件更新,同時避免對電控單元硬件產(chǎn)品造成破壞,汽車行業(yè)按照各種標準采用專門的診斷測試設(shè)備,通過標準的通信接口對電控單元控制程序或者數(shù)據(jù)進行更新。Bootloader是為了完成上述功能,固化在電控單元內(nèi)部Flash 特定位置的程序,通過特定的通信協(xié)議接收上位機客戶端發(fā)送的程序數(shù)據(jù),并且把程序數(shù)據(jù)燒寫到電控單元中Flash 特定地址區(qū)域,以完成應(yīng)用程序及數(shù)據(jù)的更新[1]。Bootloader刷寫方式的結(jié)構(gòu)布局圖如圖1所示。

      本文所設(shè)計Bootloader基于CAN總線,采用飛思卡爾16位處理器MC9S12XEP100作為控制核心。MC9S12XEP100具備5路CAN總線通道,片內(nèi)非易失存儲器Flash達到1MB,支持在線編程,能夠滿足應(yīng)用程序通過CAN總線下載、更新的要求,是應(yīng)用廣泛的汽車級處理器[2]。

      2 BootLoader軟件構(gòu)成

      BootLoader是獨立于電控單元主程序的功能模塊。BootLoader程序可以通過CAN總線通訊,使用上位機軟件更新主程序,而不需要使用BDM接口重新加載程序,便于現(xiàn)場產(chǎn)品升級和維護[3]。本文設(shè)計的Bootloader軟件程序中使用到的處理器功能有時鐘、中斷、FLASH和EEPROM存儲器、CAN等,從軟件功能上分為診斷模塊、底層驅(qū)動模塊、存儲模塊以及安全訪問模塊四個部分,軟件的功能模塊結(jié)構(gòu)如圖2所示。

      電控單元上電后進入Bootloader程序,首先確認主程序的有效性和兼容性,包括主程序以及MAP數(shù)據(jù)是否完整,軟件版本信息是否正確等,如果信息完整正確,檢測通過后,將跳轉(zhuǎn)到主程序入口地址。否則,退回Bootloader程序入口地址。Bootloader程序與主程序具有不同的入口地址以及存儲區(qū)域[4]。Bootloader引導(dǎo)機制流程圖如圖3所示。

      為防止程序發(fā)生諸如跑飛等小概率異常,在Bootloader程序中斷使能后,預(yù)留一定等待時間(約50ms)以確保新的主程序可以正常更新下載到芯片中[5]。部分代碼如圖4所示。

      3 底層驅(qū)動模塊

      底層驅(qū)動模塊包括CAN、Flash 以及EEPROM、WatchDog、時鐘、中斷等。CAN總線驅(qū)動用于配置CAN總線波特率、ID等參數(shù),實現(xiàn)電控單元與上位機之間的數(shù)據(jù)接收與發(fā)送,完成主程序及MAP圖的傳輸;Flash以及 EEPROM驅(qū)動實現(xiàn)內(nèi)部存儲數(shù)據(jù)讀寫、擦除以及安全保護功能;WatchDog 驅(qū)動監(jiān)測軟件運行狀態(tài);時鐘驅(qū)動用于傳輸層幀間隔控制和診斷層時間控制[6]。中斷向量對應(yīng)的跳轉(zhuǎn)指令和回調(diào)函數(shù)被存儲在RAM區(qū)域中的中斷向量映射表中,一旦中斷產(chǎn)生將跳轉(zhuǎn)到指定的回調(diào)函數(shù)。Bootloader程序中只響應(yīng)CAN接收中斷以及Clock monitor復(fù)位、COP看門狗復(fù)位[7]。CAN接收中斷跳轉(zhuǎn)到CAN接收函數(shù)CAN_Receive(),Clock monitor復(fù)位和COP看門狗復(fù)位異常跳轉(zhuǎn)到Bootloader程序入口地址。中斷向量表初始化程序如圖5所示。

      4 存儲模塊

      Flash中的P_Flash區(qū)域以及EEPROM中的D_Flash區(qū)域是非易失性存儲介質(zhì),在寫入數(shù)據(jù)之前要進行擦除。在Bootloader 進入編程模式之后,Bootloader等待接收一系列的服務(wù)命令,根據(jù)這些命令可以完成對Flash 的擦除和在線刷新。刷寫的軟件塊包括主程序以及標定數(shù)據(jù)等。出于對程序代碼安全性考慮,Bootloader以及主程序分別存儲在不同的區(qū)域[8][9]。系統(tǒng)對D_Flash和Buffer_Ram進行了分段(Sector)處理,分別存儲不同的數(shù)據(jù),包括用戶程序區(qū)、系統(tǒng)常量以及MAP數(shù)據(jù)區(qū)等。刷寫FLASH時流程如圖6示。存儲區(qū)域數(shù)據(jù)劃分如表1所示。

      刷寫程序時,上位機具有不同等級的權(quán)限,在其通過權(quán)限驗證后發(fā)送請求下載命令,電控單元接收到下載請求,根據(jù)相應(yīng)權(quán)限以及下載請求命令中的扇區(qū)信息,擦除相應(yīng)的存儲區(qū)域,同時向上位機進行應(yīng)答。上位機接收到正確應(yīng)答之后,按照格式向電控單元依次發(fā)送需要刷寫的數(shù)據(jù)[10]。命令格式如圖7所示。

      5 診斷模塊

      診斷模塊為電控單元代碼更新時提供必要的診斷服務(wù),模塊主要用來實現(xiàn)控制、下載程序和Map圖數(shù)據(jù)以及故障診斷等三個功能[11]。協(xié)議使用CAN2.0B擴展幀格式,波特率為500kbps,采用的服務(wù)功能如表2所示。

      來自CAN總線的診斷服務(wù)數(shù)據(jù)通過CAN驅(qū)動程序反饋給診斷服務(wù)層,通過對上位機的不同請求的識別,診斷模塊對不同的請求進行回應(yīng),調(diào)用相應(yīng)的服務(wù)函數(shù),進而完成命令所要求的動作,實現(xiàn)診斷服務(wù)功能。例如,下位機電控單元接收到讀取EEPROM /Flash命令,則調(diào)用功能EEPROM /Flash讀取函數(shù),按照命令中的長度、地址讀取數(shù)據(jù),并將數(shù)據(jù)返回給上位機。在一條命令處理完后診斷模塊再次進入等待狀態(tài),等待新的命令。電控單元接收到上位機發(fā)送的狀態(tài)切換命令,判斷跳轉(zhuǎn)條件允許后,置位跳轉(zhuǎn)標志,然后跳轉(zhuǎn)到主程序入口地址。讀取數(shù)據(jù)功能程序如圖9所示[12]。

      6 安全保護模塊

      通過Flash模塊本身的讀寫保護功能和Seed&Key算法共同實現(xiàn)軟件的安全保護[6]。FLASH模塊本身的讀寫保護功能可以避免對程序代碼的未經(jīng)授權(quán)的讀取以及擦寫操作。為防止Flash中的程序在未授權(quán)狀態(tài)下被讀出,需要將芯片設(shè)置為保密狀態(tài)。涉及的寄存器是安全寄存器FSEC。在處理器復(fù)位時,F(xiàn)SEC寄存器從0x7FFF0F地址自動載入值。將KEYEN1/ KEYEN0位的值設(shè)為1,表示允許通過后門密鑰解密。向Flash中地址為0x7FFF00-0x7FFF07區(qū)域依次寫入8字節(jié)的后門密鑰。將FCCOB寄存器值設(shè)為0x0C,并寫入解鎖密碼,若密碼與Flash中存放的相同,即可將芯片解密[13][14]。

      Seed&Key算法通過驗證操作者的身份,區(qū)別訪問權(quán)限,不同等級權(quán)限對應(yīng)不同范圍的修改區(qū)域。操作者在某一權(quán)限下申請操作時,上位機向電控單元發(fā)送Get_Seed命令獲取Seed之后,通過Seed&Key算法計算得到Key并發(fā)送到電控單元進行比較,如果相同則可對Flash相應(yīng)區(qū)域的代碼進行讀寫操作[15]。不同登錄權(quán)限對應(yīng)不同的Seed&Key算法以實現(xiàn)對不同區(qū)域操作權(quán)限的劃分。

      7 結(jié)束語

      BootLoader 是應(yīng)用程序和硬件的樞紐,負責(zé)初始化硬件和引導(dǎo)加載程序運行。一個功能完備的BootLoader 能夠加快程序的開發(fā)。本文設(shè)計的BootLoader軟件經(jīng)實驗驗證,能夠正確引導(dǎo)應(yīng)用程序跳轉(zhuǎn)運行,準確方便的實現(xiàn)代碼數(shù)據(jù)下載以及應(yīng)用程序的現(xiàn)場更新升級。

      參考文獻

      [1] 周文華,管建華,劉巨江,何正胤,徐劍飛.柴油機電控高壓共軌噴油系統(tǒng)EOL解決方案.汽車工程,2007,(9).

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

      [3] Deckardt S. Flash Kernel Programming on a HC12 MicroController [Z].Vector Informatik GmbH,2003.

      [4] 孫立寧,穆春陽,杜志江,陳燕春,李駿.電控柴油機ECU 編程設(shè)備研究與開發(fā)[J].內(nèi)燃機工程, 2008, 29(1).

      [5] 王亞剛.嵌入式Bootloader 機制的分析與移植[J].計算機工程. 2010,36(6).

      [6] Infineon Technologies.XC2000/XE166 Family Flash Programming via CAN BSL(Bootstrap Loader)[G].Infineon Manual V1.0,2009,10.

      [7] 韓鳴,滕勤,唐永琪,王文平.插電式混合動力汽車發(fā)動機ECU標定系統(tǒng)設(shè)計,北京汽車,2011,(04).

      [8] 李睿,張小明.英飛凌車用XC2000系列微控制器Bootloader設(shè)計, 汽車實用技術(shù),2016,(7).

      [9] 李會,王宜懷,王磊.基于CAN的數(shù)據(jù)無損代碼更新方法設(shè)計與應(yīng)用,電子技術(shù)應(yīng)用,2016,(01).

      [10] 孫紅磊,蔡雨琦,施鎮(zhèn)峰.TMS320C6678 DSP的加載引導(dǎo)研究,微型機與應(yīng)用,2015,(24).

      [11] 吳成加,基于CAN Bootloader的電動汽車遠程數(shù)據(jù)更新系統(tǒng)設(shè)計,客車技術(shù)與研究,2014,(06).

      [12] 張夕杰,李清政,王喬,孟奇,劉曉光.MPC5534單片機在線程序更新系統(tǒng)研制,國外電子測量技術(shù) ,2013,(12).

      [13] 于廣,孫漢青,王志平,張宏嶺.C2000系列DSP在線程序更新研究,單片機與嵌入式系統(tǒng)應(yīng)用, 2013,(03).

      [14] 龔文,張輝,陳超.基于CAN總線的電動汽車車載監(jiān)控終端,計算機與現(xiàn)代化,2013,(11).

      [15] 陳曉聰,游林儒,黃招彬.基于CAN通訊便攜式DSP程序下載器的設(shè)計,自動化與儀表,2013,(09).

      猜你喜歡
      安全機制CAN總線
      港口安全生產(chǎn)管理問題及對策研究
      中國水運(2016年11期)2017-01-04 12:23:33
      論網(wǎng)絡(luò)通信技術(shù)
      基于嵌入式的汽車輔助制動系統(tǒng)研究
      CAN總線通信技術(shù)在電梯監(jiān)控系統(tǒng)中的應(yīng)用
      關(guān)于稅收應(yīng)用中的數(shù)據(jù)庫安全機制淺析
      Domino安全策略研究
      基于CANoe的J1939協(xié)議在ECU通信中的應(yīng)用
      科技視界(2016年18期)2016-11-03 22:53:48
      商用車基于CAN總線的組合儀表開發(fā)與應(yīng)用
      鐵路信號設(shè)備維護與安全機制分析
      論10kV配電線路接地故障分析及預(yù)防
      南宫市| 澄城县| 聂拉木县| 盱眙县| 武清区| 玉山县| 宜丰县| 乌苏市| 泗阳县| 大足县| 绍兴市| 胶南市| 会泽县| 沧州市| 盘山县| 沙河市| 綦江县| 开远市| 宜兰县| 佛冈县| 新泰市| 浠水县| 内乡县| 宝清县| 虹口区| 伊通| 丰宁| 靖安县| 城市| 洞口县| 夏津县| 襄汾县| 永靖县| 英吉沙县| 游戏| 昌邑市| 灵台县| 高台县| 宁蒗| 云林县| 政和县|