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

多節點軟件觸發式Bootloader設計與實現

2017-09-25 17:38:01郭帥李軍偉高松
現代電子技術 2017年18期

郭帥++李軍偉++高松

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

關鍵詞: 汽車燈光控制系統; 軟件觸發; 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 引 言

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

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

1 Bootloader設計

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

2 控制器端Bootloader實現

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

2.1 配置MSCAN通信模塊

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

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

2.2 FLASH擦寫模塊設計

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

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

2.3 中斷向量表映射

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

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

2.4 S19文件解析

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

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

2.5 Bootloader初始化

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

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

3 Bootloader上位機實現

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

3.1 Bootloader上位機通信協議

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

表2 Bootloader上位機協議

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

3.2 Bootloader上位機

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

圖4 汽車燈光系統上位機

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

4 Bootloader性能測試

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

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

5 結 語

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

參考文獻

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

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

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

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

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

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

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

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

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

[12] 王宜懷,曹金華.嵌入式系統設計實戰[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].天津工業大學學報,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.

主站蜘蛛池模板: 精品国产福利在线| 日韩在线视频网站| 欧美狠狠干| 婷婷中文在线| 欧美日韩一区二区在线播放| 韩国v欧美v亚洲v日本v| 国产精品冒白浆免费视频| 欧美日韩在线第一页| 欧美精品啪啪一区二区三区| 欧美高清三区| 久久精品国产精品青草app| 国产人前露出系列视频| 国产成人无码Av在线播放无广告| 国产00高中生在线播放| 国产在线视频欧美亚综合| 97se综合| 欧美.成人.综合在线| 欧美三级不卡在线观看视频| 亚洲成a人片在线观看88| 99视频在线免费观看| 欧美国产日韩在线| 国产成人亚洲日韩欧美电影| 日韩欧美一区在线观看| 国产亚洲视频中文字幕视频| 国产精品人成在线播放| 成人国产免费| 999精品在线视频| 2022精品国偷自产免费观看| 91精品专区| 好吊妞欧美视频免费| 最新亚洲人成无码网站欣赏网| 老司机久久精品视频| 无遮挡国产高潮视频免费观看 | 激情综合网激情综合| 亚洲天堂.com| 4虎影视国产在线观看精品| 国产一区二区丝袜高跟鞋| 一级香蕉人体视频| 伊人91在线| 欧美精品在线观看视频| 国产午夜无码专区喷水| 久久国产热| 日韩色图在线观看| 欧美日韩在线成人| 国产精品无码AⅤ在线观看播放| 国产理论最新国产精品视频| 亚洲女人在线| 欧美a在线| 久996视频精品免费观看| 亚洲国产无码有码| 在线毛片网站| 91精品国产丝袜| 99久久精品国产麻豆婷婷| 欧美在线中文字幕| 欧美视频免费一区二区三区| 91青青视频| 99热精品久久| 黄色网址免费在线| 国产高潮流白浆视频| 青青久久91| 国产精品极品美女自在线网站| 丁香五月亚洲综合在线| 日本www色视频| 香蕉国产精品视频| 日韩欧美国产三级| 国产色婷婷| 91视频区| 一级毛片无毒不卡直接观看| 欧美有码在线| 99在线观看免费视频| 日韩精品成人在线| 亚洲人成在线精品| 欧美色伊人| 麻豆AV网站免费进入| 日韩毛片基地| 超碰精品无码一区二区| AV不卡无码免费一区二区三区| 成人久久精品一区二区三区| 在线欧美一区| 在线观看国产精品第一区免费| 日a本亚洲中文在线观看| 久久国产高清视频|