国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2017-09-25 17:38郭帥李軍偉高松
現(xiàn)代電子技術 2017年18期
關鍵詞:CAN總線

郭帥++李軍偉++高松

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

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

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

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

1 Bootloader設計

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

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

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

2.1 配置MSCAN通信模塊

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

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

2.2 FLASH擦寫模塊設計

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

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

2.3 中斷向量表映射

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

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

2.4 S19文件解析

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

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

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

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

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

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

為了防止他人隨意修改下載控制器應用程序,本文開發(fā)了一套自定義的數(shù)據(jù)通信協(xié)議。協(xié)議具體規(guī)定了電動汽車燈光控制器與上位機之間數(shù)據(jù)發(fā)送與接收、應答、報文校驗、以及查詢機制。Bootloader上位機協(xié)議如表2所示,電動汽車燈光控制器的ID設置為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ù)記錄,對相應內(nèi)存空間進行數(shù)據(jù)編程,并且會對接收的每一條S記錄進行校驗和計算,然后與接收到的校驗和進行比較,確保數(shù)據(jù)接收的準確性。ID為0xCF00403的報文是上位機發(fā)送給燈光控制器的操作指令,可以通過返回值查詢控制器軟件和硬件版本信息。ID為0xCF00402的報文是控制器發(fā)送給上位機應答數(shù)據(jù),分別返回擦除結束標志位和編程結束標志位。ID為0xCF00408的報文是上位機發(fā)送給控制器升級程序的標志位,通過修改用戶程序內(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)的故障檢測、故障清除、遠程控制、CAN報文查看和軟件在線升級等功能。汽車燈光系統(tǒng)上位機遠程控制硬件平臺如圖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ā)送的應答信號,將處理結果實時顯示在人機交互界面上,方便采取有效的操作。

4 Bootloader性能測試

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

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

5 結 語

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

參考文獻

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

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

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

[4] 劉林,張曉丹,張作峰.Bootloader程序在MCF51AC系列單片機上的實現(xiàn)[J].計算機系統(tǒ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在線編程技術[J].單片機與嵌入式系統(tǒng)應用,2014,14(1):24?27.

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

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

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

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

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

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

[13] 王宜懷,吳瑾,張書奎,等.嵌入式技術基礎與實踐[M].北京:清華大學出版社,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è)大學學報,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.

猜你喜歡
CAN總線
論網(wǎng)絡通信技術
CAN總線通信技術在電梯監(jiān)控系統(tǒng)中的應用
基于CANoe的J1939協(xié)議在ECU通信中的應用
利用MC9S12(X)單片機構建CAN總線網(wǎng)絡的研究
基于CAN總線的智能微噴灌監(jiān)控系統(tǒng)中下位機的硬件電路組成與設計
基于CAN總線的變電站通訊網(wǎng)絡設計
一種航空交換機中CAN總線的自動化測試方法
静乐县| 墨脱县| 吉林市| 曲松县| 衡阳县| 达拉特旗| 岱山县| 阜新市| 白水县| 怀宁县| 越西县| 民乐县| 宁津县| 班玛县| 贵南县| 竹北市| 府谷县| 五家渠市| 仪征市| 广宗县| 汉沽区| 治多县| 那曲县| 珠海市| 宣城市| 关岭| 柳江县| 淄博市| 容城县| 古田县| 栾川县| 成都市| 阳曲县| 日照市| 南川市| 额敏县| 博客| 辉南县| 无极县| 甘泉县| 汝城县|