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

多節(jié)點軟件觸發(fā)式Bootloader設(shè)計與實現(xiàn)

2017-09-25 17:38:01郭帥李軍偉高松
現(xiàn)代電子技術(shù) 2017年18期

郭帥++李軍偉++高松

摘 要: 以8位微控制器MC9S08DZ60為例,搭建了電動汽車多節(jié)點燈光控制系統(tǒng)硬件平臺,開發(fā)了基于CAN總線技術(shù)的多節(jié)點軟件觸發(fā)式引導(dǎo)加載程序,設(shè)計了Bootloader上位機,開發(fā)了一套應(yīng)用于汽車燈光控制系統(tǒng)的Bootloader。通過對電動汽車燈光控制系統(tǒng)硬件平臺進行程序升級,對Bootloader系統(tǒng)進行了性能測試。試驗結(jié)果表明,所設(shè)計的Bootloader系統(tǒng)能夠快捷、準(zhǔn)確、方便地實現(xiàn)應(yīng)用程序的在線升級,為汽車燈光控制系統(tǒng)應(yīng)用程序的在線編程和數(shù)據(jù)更新提供了參考。

關(guān)鍵詞: 汽車燈光控制系統(tǒng); 軟件觸發(fā); CAN總線; 引導(dǎo)加載程序; 在線編程

中圖分類號: TN911?34; TP391 文獻標(biāo)識碼: A 文章編號: 1004?373X(2017)18?0035?05

Design and realization of multi?node software trigger Bootloader

GUO Shuai, LI Junwei, GAO Song

(School of Traffic & Vehicle Engineering, Shandong University of Technology, Zibo 255049, China)

Abstract: Taking the 8?bit microcontroller MC9S08DZ60 as an example, the hardware platform of a electromobile lighting control system was built, a special multi?node software trigger Bootloader based on CAN bus technology was developed, and upper machine system of the Bootloader was designed. Then a Bootloader system for the automotive lighting control system was designed. The Bootloader system was tested through the program upgrading of the hardware platform for the automotive lighting control system. The test result of the Bootloader system shows that the Bootloader system can realize the online upgrading of applied program expediently and accurately, and provide a reference for the online programming and data?upgrading of the application program for the automotive lighting control system.

Keywords: automotive lighting control system; software trigger; CAN bus; Bootloader; online programming

0 引 言

汽車作為一個多控制器集成系統(tǒng),往往需要對控制器進行程序設(shè)計和升級,因而應(yīng)該設(shè)計多節(jié)點引導(dǎo)加載程序(Bootloader)實現(xiàn)多控制器程序升級,為體現(xiàn)Bootloader在升級程序中的便捷性,應(yīng)采用軟件觸發(fā)的方式進行程序升級。長期以來,開發(fā)人員對Bootloader進行了大量研究,文獻[1]針對電動汽車整車控制器設(shè)計了基于MC9S12XEP100的Bootloader,通過VC++開發(fā)了上位機系統(tǒng),實現(xiàn)程序在線升級。文獻[2]設(shè)計了基于MC9S12G128的U盤啟動Bootloader,使用U盤攜帶目標(biāo)下載代碼,節(jié)省了單片機的內(nèi)存空間。文獻[3]根據(jù)CCP協(xié)議設(shè)計了基于飛思卡爾MC9S12DP512的 Bootloader,針對混合動力電動車控制器,實現(xiàn)了正確引導(dǎo)程序運行。雖然這些研究開發(fā)了各類芯片的Bootloader,給出了Bootloader設(shè)計的通用研究方法,但他們僅是針對單節(jié)點Bootloader,采用硬件觸發(fā)方式進行程序升級,在實際車用控制器中無法便捷地實現(xiàn)程序升級,不能體現(xiàn)Bootloader技術(shù)在整車控制系統(tǒng)開發(fā)中的優(yōu)勢。

本文在CAN協(xié)議的基礎(chǔ)上,采用自定義的數(shù)據(jù)傳輸協(xié)議,設(shè)計一套基于MC9S08DZ60的多節(jié)點軟件觸發(fā)式Bootloader,同時搭建一個汽車燈光控制系統(tǒng)的硬件平臺,并通過該燈光控制系統(tǒng)硬件平臺對所設(shè)計Bootloader系統(tǒng)進行性能測試。

1 Bootloader設(shè)計

Bootloader是系統(tǒng)加電后運行的固化在其中的一段程序,主要功能是為了完成軟硬件所需要的初始化工作。其能實現(xiàn)用戶程序的引導(dǎo)啟動和固件自更新兩個功能[3?5]。Bootloader的編程機制一般分為兩種:FLASH kernel法和FLASH擦寫函數(shù)法[6]。FLASH kernel法需要在進行程序升級時,要將Bootloader中與FLASH擦除和寫入相關(guān)的程序都下載到單片機的RAM中,這樣程序運行效率高,但是這對單片機的RAM資源要求也是非常高。FLASH擦寫函數(shù)法是Bootloader比較常見的方式,它是將可執(zhí)行代碼下載到其內(nèi)置的FLASH中,因為寫入FLASH中的內(nèi)容能永久保存,它適合固件程序的在線升級或數(shù)據(jù)更新[7?10]。由于MC9S08DZ60內(nèi)部RAM資源有限,并且燈光控制系統(tǒng)對運行速度要求不高,所以本文所設(shè)計的Bootloader采用第二種FLASH擦寫函數(shù)法。endprint

2 控制器端Bootloader實現(xiàn)

對于嵌入式系統(tǒng)而言,不同硬件平臺Bootloader的實現(xiàn)方法也各不相同。本文設(shè)計的整車控制器端Bootloader主要包含5部分:配置MSCAN通信模塊、FLASH擦寫模塊設(shè)計、中斷向量表映射、S19文件解析和Bootloader初始化。

2.1 配置MSCAN通信模塊

CAN總線是一種應(yīng)用十分廣泛的通信協(xié)議之一,主要應(yīng)用于對數(shù)據(jù)完整性要求非常高的汽車電子和工業(yè)控制領(lǐng)域[11?13]。Bootloader通過CAN通信進行程序升級,通過配置MSCAN通信模塊,使單片機準(zhǔn)確接收并處理數(shù)據(jù)。

飛思卡爾8位微控制器MC9S08DZ60的MSCAN模塊有64 B的配置寄存器[14?15],為了能正常進行數(shù)據(jù)通信,需要對這些寄存器進行配置。MSCAN模塊初始化流程如圖1所示。本文設(shè)計的Bootloader選取2 MHz的固定系統(tǒng)時鐘作為時鐘源,使用250 Kb/s的波特率,設(shè)置CAN濾波參數(shù),使燈光控制系統(tǒng)Bootloader程序只接收上位機的報文。

2.2 FLASH擦寫模塊設(shè)計

更新主程序的過程實際上就是對存儲程序的 FLASH進行擦除和重新編程的過程。大部分的 FLASH當(dāng)程序在其中運行時,不允許對其自身進行擦寫操作,如果強行FLASH對FLASH進行操作,會因為編程電壓較高使讀取的數(shù)據(jù)不穩(wěn)定,造成讀取數(shù)據(jù)錯誤。所以本文設(shè)計的Bootloader把代碼拷貝到RAM中執(zhí)行,避免了FLASH直接對FLASH的操作。

FLASH擦寫過程中,對時鐘和晶振有嚴(yán)格要求。節(jié)點使用的晶振必須大于2 MHz,若外部參考時鐘小于2 MHz,則無法完成編程和擦除功能。FLASH擦寫時鐘由配置FLASH時鐘分配寄存器FCDIV的值實現(xiàn),設(shè)置后的FLASH工作時鐘必須為150~200 kHz。否則,若FLASH時鐘頻率小于150 kHz,F(xiàn)LASH會由于編程時間過長而損壞;若FLASH時鐘頻率大于200 kHz,又會導(dǎo)致不完全的編程和擦除。本文設(shè)計的Bootloader配置200 kHz的FLASH時鐘頻率,選取8 MHz外部晶振。

2.3 中斷向量表映射

由于Bootloader和用戶程序是相互獨立,因此就需要解決兩個程序中斷向量不一致的問題,并且如何讓兩個程序能正確使用自己的中斷向量,需要正確分配單片機的內(nèi)存空間,MC9S08DZ60微控制器內(nèi)存分配如圖2所示。

通常MC9S08DZ60微控制器的中斷向量表默認(rèn)安排在0xFFC0~0xFFFF。其中復(fù)位向量在地址0xFFFE處,其余的向量包括用戶向量依次往低字節(jié)的內(nèi)存方向安排[16?17]。由于Bootloader和用戶程序的中斷向量表各自獨立使用,所以Bootloader和用戶程序的中斷向量表分別在不同的內(nèi)存區(qū)間。Bootloader接管了復(fù)位向量,使它指向了確定的地址處,而用戶程序的復(fù)位向量指向的地址是未知的,為了能順利引導(dǎo)用戶程序啟動,在下載過程中需要檢測用戶的復(fù)位向量,并把它安排在FLASH中的另一個確定的位置,留給Bootloader引導(dǎo)時自動調(diào)用。Bootloader運行時會使用到一些中斷向量,所以Bootloader的中斷向量表仍然處于0xFFC0~0xFFFF區(qū)間。因而,用戶程序就不能使用與Bootloader相同內(nèi)存區(qū)間來定義中斷向量表,并且Bootloader是一段引導(dǎo)加載程序,不能隨便被修改,所以就將用戶程序的中斷向量表搬移到另外一段內(nèi)存區(qū)間內(nèi),以免影響B(tài)ootloader的中斷向量。

2.4 S19文件解析

在程序更新的過程中,需要把S19程序文件下載到燈光控制器內(nèi)。S19 文件為飛思卡爾推薦使用的標(biāo)準(zhǔn)文件傳送格式——S?record目標(biāo)文件格式。S?record目標(biāo)文件格式是將目標(biāo)代碼及目標(biāo)數(shù)據(jù)以十六進制ASCII的方式表示,使得目標(biāo)文件在計算機系統(tǒng)和開發(fā)工具之間易于轉(zhuǎn)換[18?19]。

S?record格式如表1所示。S19文件中的每一行被稱為一條記錄,記錄總是以字母“S”開頭,后面跟一位數(shù)字表示此記錄的類型,數(shù)字是“0”表示S19文件的起始說明字符串;數(shù)字若是“1”,“2”或“3”代表此記錄包含了程序數(shù)據(jù),其中“1”為16位地址,“2”為24位地址,“3”為32位地址,MC9S08DZ60用的是16位地址,若是“9”則表明此記錄為整個文件的最末一條記錄。接下來一個字節(jié)表示了此記錄所包含的字節(jié)數(shù),它由起始地址、數(shù)據(jù)字節(jié)和位于末端的校驗字節(jié)組成,其中的校驗字節(jié)算法為:將長度、起始地址、數(shù)據(jù)相加,取三者之和的低8位,然后按位取。

2.5 Bootloader初始化

一般情況下,程序上電或復(fù)位后直接跳轉(zhuǎn)到復(fù)位向量所指向的地址,直接運行main函數(shù),但是Bootloader程序上電后,首先要判斷是進入用戶程序或是進入Bootloader下載程序。Bootloader初始化流程如圖3所示。

通過判斷0x1400內(nèi)存是否寫入1,選擇進入Bootloader下載程序。當(dāng)系統(tǒng)復(fù)位后檢測0x1400內(nèi)存沒寫入1,并且判斷用戶的復(fù)位向量所在地址0xF9FE已被寫入,則使用JMP跳轉(zhuǎn)語句直接跳向地址0xF9FE所保存的首地址運行用戶程序;當(dāng)節(jié)點復(fù)位后檢測0x1400內(nèi)存沒寫入1,但是判斷用戶的復(fù)位向量所在地址0xF9FE沒有被寫入,則使用JMP跳轉(zhuǎn)語句直接跳向main函數(shù),進入Bootloader的下載程序。

3 Bootloader上位機實現(xiàn)

Bootloader上位機程序主要是為了將S19文件以CAN通信的方式發(fā)送給燈光控制系統(tǒng),實現(xiàn)控制器讀取并升級程序代碼。

3.1 Bootloader上位機通信協(xié)議

為了防止他人隨意修改下載控制器應(yīng)用程序,本文開發(fā)了一套自定義的數(shù)據(jù)通信協(xié)議。協(xié)議具體規(guī)定了電動汽車燈光控制器與上位機之間數(shù)據(jù)發(fā)送與接收、應(yīng)答、報文校驗、以及查詢機制。Bootloader上位機協(xié)議如表2所示,電動汽車燈光控制器的ID設(shè)置為0xCF00402,上位機的報文ID分別為0xCF00400,0xCF00401,0xCF00403,0xCF00404,0xCF00405,0xCF00406,0xCF00408,電動汽車燈光控制器和上位機通信的幀類型為數(shù)據(jù)幀,數(shù)據(jù)段長度為8 B。endprint

表2 Bootloader上位機協(xié)議

ID為0xCF00404,0xCF00405和0xCF00406是選擇升級節(jié)點的命令報文,可以選擇對主控節(jié)點、前燈節(jié)點或是后燈節(jié)點進行程序升級。ID為0xCF00400的報文是上位機發(fā)送給燈光控制器的操作指令,電動汽車燈光控制器接收到指令后,會對FLASH里的內(nèi)容進行擦除或是編程。ID為0xCF00401的報文是上位機發(fā)送給電動汽車燈光控制器的S19文件的數(shù)據(jù),上位機逐條發(fā)送S19文件,電動汽車燈光控制器查詢接收S0,S1,S9的數(shù)據(jù)記錄,對相應(yīng)內(nèi)存空間進行數(shù)據(jù)編程,并且會對接收的每一條S記錄進行校驗和計算,然后與接收到的校驗和進行比較,確保數(shù)據(jù)接收的準(zhǔn)確性。ID為0xCF00403的報文是上位機發(fā)送給燈光控制器的操作指令,可以通過返回值查詢控制器軟件和硬件版本信息。ID為0xCF00402的報文是控制器發(fā)送給上位機應(yīng)答數(shù)據(jù),分別返回擦除結(jié)束標(biāo)志位和編程結(jié)束標(biāo)志位。ID為0xCF00408的報文是上位機發(fā)送給控制器升級程序的標(biāo)志位,通過修改用戶程序內(nèi)0x1400內(nèi)存處的數(shù)據(jù),實現(xiàn)升級程序的軟件觸發(fā)方式。

3.2 Bootloader上位機

基于VB 6.0開發(fā)了Bootloader上位機,采用USBCAN自帶的二次開發(fā)函數(shù),用于實現(xiàn)燈光控制系統(tǒng)的故障檢測、故障清除、遠(yuǎn)程控制、CAN報文查看和軟件在線升級等功能。汽車燈光系統(tǒng)上位機遠(yuǎn)程控制硬件平臺如圖4所示。通過上位機端界面,可以檢測硬件平臺的故障并進行故障清除,并且可以進行軟件的在線升級等操作。

圖4 汽車燈光系統(tǒng)上位機

上位機成功升級主節(jié)點程序界面如圖5所示,通過人機界面的進度條,可以方便地了解程序的升級情況,實現(xiàn)操作人員對程序升級過程進行控制;通過USBCAN接口卡,按照制定的通信協(xié)議,完成整車控制器與上位機之間數(shù)據(jù)傳輸,實現(xiàn)二者之間的CAN通信;通過人機界面的數(shù)據(jù)顯示窗口,讀取S19文件,解釋程序,發(fā)送程序,實現(xiàn)S19文件的數(shù)據(jù)解析;通過人機界面的發(fā)送狀態(tài)窗口,接收到控制器發(fā)送的應(yīng)答信號,將處理結(jié)果實時顯示在人機交互界面上,方便采取有效的操作。

4 Bootloader性能測試

為了驗證設(shè)計的Bootloader的在線升級程序的功能,將用戶程序通過Bootloader下載到單片機內(nèi),用戶程序的S19文件如圖6所示。用戶程序集成了CAN通信功能、定時器功能、汽車燈光系統(tǒng)控制功能,可以用來直觀地顯示用戶程序的升級結(jié)果。Bootloader程序下載到芯片內(nèi)存中的數(shù)據(jù)如圖7所示。通過將內(nèi)存區(qū)間數(shù)據(jù)與S19文件內(nèi)數(shù)據(jù)進行對比,發(fā)現(xiàn)用戶程序可以準(zhǔn)確地下載到控制器指定的內(nèi)存中,實現(xiàn)了燈光控制器升級和更新用戶程序的功能。

為了驗證設(shè)計的Bootloader的可靠性,搭建電動汽車燈光控制系統(tǒng)硬件平臺如圖8所示。升級程序之后的電動汽車燈光控制系統(tǒng)可以正常運行,將組合開關(guān)撥至示近光燈,根據(jù)控制策略,近光燈、示寬燈和牌照燈同時亮起,符合用戶程序的運行邏輯,證明用戶程序運行正常。

5 結(jié) 語

本文基于MC9S08DZ60微控制器設(shè)計了多節(jié)點軟件觸發(fā)式Bootloader,并搭建了電動汽車燈光控制系統(tǒng)硬件平臺。通過實測試驗進行了燈光控制系統(tǒng)性能測試,結(jié)果表明所設(shè)計的Bootloader能夠快速、準(zhǔn)確、方便地實現(xiàn)電動汽車燈光控制系統(tǒng)多節(jié)點應(yīng)用程序的在線升級,為汽車燈光控制系統(tǒng)應(yīng)用程序的設(shè)計和數(shù)據(jù)更新提供有效參考。

參考文獻

[1] 楊競喆,王志福,劉杰.基于MC9S12XEP100的整車控制器CAN Bootloader設(shè)計與實現(xiàn)[J].車輛與動力技術(shù),2014(1):25?29.

[2] 戚長城,楊延相.總線式ECU兩級Bootloader的設(shè)計與實現(xiàn)[J].計算機工程,2015,41(7):95?99.

[3] 張艷,鮑可進.整車控制器Bootloader的設(shè)計與[實現(xiàn)J].計算機工程,2011,37(12):233?236.

[4] 劉林,張曉丹,張作峰.Bootloader程序在MCF51AC系列單片機上的實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2011,20(11):118?122.

[5] DU Haixing. Analysis and porting of embedded Bootloader based on ARM [J]. Microcomputer information, 2010, 29(2): 57?59.

[6] 朱少輝,夏超英.基于CAN總線的ECU在線編程技術(shù)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2014,14(1):24?27.

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

[8] 馬學(xué)文,朱名日,程小輝.嵌入式系統(tǒng)中Bootloader的設(shè)計與實現(xiàn)[J].計算機工程,2005,31(7):96?97.

[9] 黎君.基于ARM9嵌入式系統(tǒng)的Bootloader移植[J].科學(xué)技術(shù)與工程,2011,11(32):8061?8064.

[10] 王景存,高峰.基于ARM9的Bootloader的分析及設(shè)計[J].現(xiàn)代電子技術(shù),2010,33(2):44?46.

[11] 田會峰.基于S3C2440的Bootloader設(shè)計與實現(xiàn)[J].自動化技術(shù)與應(yīng)用,2010,29(7):29?32.

[12] 王宜懷,曹金華.嵌入式系統(tǒng)設(shè)計實戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2012.

[13] 王宜懷,吳瑾,張書奎,等.嵌入式技術(shù)基礎(chǔ)與實踐[M].北京:清華大學(xué)出版社,2012.

[14] SAE. CAN vehicle application layer: SAE J1939/71?2016 [S]. USA: SAE, 2016.

[15] Anon. Road vehicles?diagnostics on controller area networks (CAN), part 2: Network layer services: ISO 15765?2 [S]. [S.l.]: ISO, 2004.

[16] Anon. Freescale′s HC08 and HCS08 apps gets full certification via LDRA software [J]. Health and beauty close?up, 2011, 234: 111?120.

[17] 林志貴,鐘晴晴.HCS08系列FLASH在線編程方法的比較與分析[J].天津工業(yè)大學(xué)學(xué)報,2011(5):71?75.

[18] Anon. Motorola S?records文件格式 [EB/OL]. (2011?09?07) [2015?11?26]. http://blog.csdn.net/zyboy2000/article/details/6757604.

[19] Anon. MC9S08DZ60 Datasheet [EB/OL]. [2015?11?26]. http://www.alldatasheet.com/datasheet?pdf/pdf/153370/FREESCALE/MC9S08DZ60.html.

主站蜘蛛池模板: 国产高清在线观看91精品| 女人爽到高潮免费视频大全| 亚洲成a人片7777| 114级毛片免费观看| 国产麻豆91网在线看| 在线色综合| 欧美在线中文字幕| 亚洲成人在线网| 茄子视频毛片免费观看| 国产精品自拍合集| 亚洲高清无码精品| h网站在线播放| 精品午夜国产福利观看| 亚洲人成色77777在线观看| Jizz国产色系免费| 国产成人1024精品| 亚洲一区黄色| 五月六月伊人狠狠丁香网| 国产亚洲精品自在久久不卡| 欧美中文字幕一区| 亚洲天堂在线免费| 日本国产精品| 国内精品自在自线视频香蕉| 黄色在线不卡| 久久综合干| 亚洲天堂网在线观看视频| 在线中文字幕网| 亚洲AⅤ波多系列中文字幕| 国产精品天干天干在线观看 | 国产女人18水真多毛片18精品| 国产国语一级毛片在线视频| 欧美天堂在线| 97国产在线观看| 高清免费毛片| 秋霞一区二区三区| 日本精品视频一区二区| 久久伊伊香蕉综合精品| 国产综合在线观看视频| 国产成人综合日韩精品无码首页| 九色视频最新网址 | 中文字幕第4页| 麻豆精品在线| 久久无码av一区二区三区| 国产精品专区第1页| 亚洲欧美日韩精品专区| 久草青青在线视频| 国产尹人香蕉综合在线电影| 国产新AV天堂| 在线不卡免费视频| 亚洲综合二区| 国产精品三级专区| 亚洲一区二区成人| 国产欧美在线| 亚洲欧美人成电影在线观看| 亚洲欧美人成人让影院| 亚洲天堂视频在线观看| 国产1区2区在线观看| 欧日韩在线不卡视频| 日本一区二区三区精品国产| 亚洲天堂日韩av电影| 日本一区二区三区精品国产| 超碰色了色| 日本一区二区三区精品国产| 欧美在线天堂| 色综合热无码热国产| 99性视频| 麻豆精品在线视频| 高清国产va日韩亚洲免费午夜电影| 免费AV在线播放观看18禁强制| 亚洲日本一本dvd高清| 青青操视频在线| 久久精品人人做人人爽电影蜜月 | 天堂成人在线| 久久黄色毛片| 一级毛片免费不卡在线视频| 亚洲高清资源| 激情影院内射美女| 白浆视频在线观看| 伊人狠狠丁香婷婷综合色| 国语少妇高潮| 97一区二区在线播放| 91蜜芽尤物福利在线观看|