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

一種用于汽車電控單元CAN Bootloader的設計與實現(xiàn)

2016-11-10 07:38:29陳彤黃立梅
汽車實用技術 2016年9期
關鍵詞:程序汽車

陳彤,黃立梅

(陜西法士特汽車傳動工程研究院,陜西 西安 710119)

汽車電子

一種用于汽車電控單元CAN Bootloader的設計與實現(xiàn)

陳彤,黃立梅

(陜西法士特汽車傳動工程研究院,陜西 西安 710119)

∶傳統(tǒng)汽車電控單元對程序的燒寫一般采用BDM調試接口實現(xiàn),該方法不僅影響電控單元應用程序的開發(fā)效率,而且會給汽車電控單元后期的升級維護帶來不便。使用嵌入式啟動引導程序(即Bootloader),能夠較好的解決上述問題。本文設計并實現(xiàn)了一種應用于汽車電控單元的基于CAN通信的 Bootloader。通過實際應用和測試,結果表明該Bootloader能夠正確引導程序運行,準確、方便地為控制器下載應用程序。

∶汽車電控單元;Bootloader;CAN總線;Labview

10.16638/j.cnki.1671-7988.2016.09.055

CLC NO.: U463.61Document Code: AArticle ID: 1671-7988 (2016)09-156-05

1、技術背景

在汽車電控單元的開發(fā)過程中需要頻繁地進行程序燒寫工作,傳統(tǒng)的燒寫方式一般是利用芯片專用下載器通過BDM調試接口下載程序,該方式的下載速度較慢,而且在汽車電控單元的后期維護中,如果需要升級應用程序,就需要從整車上將電控單元拆卸下來,為電控單元的維護和調試帶來極大的不便。對于已經(jīng)投入使用的汽車電控單元來說,急需一種方便快捷的程序升級方法,從而提高維護人員的工作效率。Bootloader作為應用程序運行之前的一段程序,主要完成應用程序的啟動引導和更新,而CAN總線通信在汽車電子領域的廣泛應用,使得Bootloader可以直接通過CAN總線進行程序升級。本文設計并實現(xiàn)了一種基于CAN總線的Bootloader,通過自定義的數(shù)據(jù)傳輸協(xié)議與上位機進行通信并完成程序下載。

2、Bootloader簡介

Bootloader是微處理器芯片上電后最先運行的一段代碼,它會首先對硬件設備進行初始化,包括看門狗、時鐘、串口、CAN接口等,同時會為相關的寄存器賦值,設置內核啟動參數(shù)。初始化完成后,則進入循環(huán)等待上位機命令,并根據(jù)命令實現(xiàn)相應功能。

由于嵌入式系統(tǒng)的資源非常有限,特別是存儲空間,因此,用于汽車電控單元的Bootloader不需要集成太多其他的功能,而是實現(xiàn)兩個最基本的功能:啟動引導功能和程序下載功能。對于CAN Bootloader來說,當系統(tǒng)上電完成一系列初始化工作后,Bootloader進入CAN通信循環(huán)等待接收命令,當接收到啟動命令時,它直接將電控單元FLASH中的應用程序代碼加載到系統(tǒng)內存RAM中,并跳轉到應用程序入口開始運行;當Bootloader接收到下載命令時,它會通過CAN總線從上位機下載應用程序代碼并燒寫到FLASH中存儲起來。如果在CAN通信循環(huán)中等待命令超時,則直接進入啟動引導模式運行應用程序。不同的處理器芯片,其實現(xiàn)Bootloader的方式不同,但基本思路一致。

本文使用英飛凌系列芯片作為汽車電控單元的MCU,屬于典型的汽車級微控制器,滿足Bootloader通過CAN總線更新程序的要求。

3、CAN Bootloader總體設計

3.1Bootloader程序下載方案

通過CAN總線實現(xiàn)程序下載,是CAN Bootloader相對于汽車電控單元傳統(tǒng)程序下載方式的主要優(yōu)勢,本文所使用英飛凌系列芯片對FLASH存儲區(qū)的操作一般以頁為單位,基于這一特性,并結合CAN總線通信要求,確定了CAN Bootloader的程序下載方案如下:

1)汽車電控單元上電啟動Bootloader并進入CAN通信循環(huán)等待上位機命令,若在等待延時期間收到來自上位機的程序下載命令,則開始與上位機進行握手操作,握手成功后,向上位機發(fā)送下載確認請求并開始等待上位機的數(shù)據(jù)幀。

2)上位機接收到下載確認請求后,開始解析應用程序代碼,并以128字節(jié)為單位將目標代碼分頁,每解析完一頁數(shù)據(jù),上位機進入CAN發(fā)送循環(huán),將頁首地址及頁數(shù)據(jù)循環(huán)發(fā)送至下位機。

3)下位機只有接收到一頁完整的數(shù)據(jù)并完成數(shù)據(jù)校驗后,才會將所接收數(shù)據(jù)以頁的形式燒寫進FLASH存儲區(qū),并向上位機發(fā)送下載確認請求提示其繼續(xù)發(fā)送下一頁數(shù)據(jù)。

4)上位機將應用程序代碼解析完畢,并收到下位機的確認請求后,向下位機發(fā)送出下載結束命令,通知其復位重啟。

3.2自定義CAN通信協(xié)議及數(shù)據(jù)校驗

本文在CAN通信過程中,全部使用擴展ID。為方便測試,自定義了上位機與下位機的通信ID,具體定義如表1所示。

表1 CAN通信ID定義

數(shù)據(jù)傳輸過程中的校驗則通過累加運算實現(xiàn),上位機解析代碼是,將每頁解析出的128字節(jié)的數(shù)據(jù)進行累加,并取運算結果的低四字節(jié)作為數(shù)據(jù)校驗碼發(fā)送給下位機,下位機在接收數(shù)據(jù)的過程中對接收到的數(shù)據(jù)按字節(jié)進行累加,并將計算結果的低四字節(jié)與接收到的數(shù)據(jù)校驗碼進行比較,從而判斷程序下載過程中的數(shù)據(jù)傳輸是否可靠。

4、CAN Bootloader的下位機實現(xiàn)

4.1Bootloader存儲區(qū)空間劃分

由于嵌入式芯片工作模式的限制,上電后,芯片一般都會在FLASH存儲區(qū)首地址處尋找程序代碼并執(zhí)行。因此,我們不得不將應用程序按照約定放在芯片F(xiàn)LASH的首位地址處,如果要在Flash中安排了兩個應用程序,則無法啟用第二個程序。

Bootloader啟動引導功能的目的就是為了在其完成自身本職工作后,將硬件的管理權釋放,并且將MCU的各種資源移交給應用程序,并為應用程序的運行提供必要的支持。

因此,使用Bootloader的嵌入式系統(tǒng),會在FLASH的起始段為Bootloader專門開辟一個較小的存儲空間,Bootloader代碼作為芯片上電后需要最先運行的程序,其中斷向量表首地址會與FLASH存儲區(qū)首地址一致,而應用程序作為被引導的代碼,需要配置在剩余空間內。本文所使用英飛凌系列芯片的FLASH存儲空間分配如表2所示。

表2 存儲空間分配表

4.2Bootloader存儲區(qū)讀寫、擦除功能實現(xiàn)

對存儲區(qū)的讀取、寫入、擦除功能,是實現(xiàn)Bootloader程序下載功能的基礎。本文所使用英飛凌系列芯片的內核中有一個特殊單元IMB,由該單元管理著MCU對Flash存儲區(qū)的擦除和讀寫工作。IMB在MCU中預先定義好了一些列的控制命令,如表3所示。

表3 IMB控制命令表

Bootloader程序想要實現(xiàn)對FLASH存儲區(qū)的讀寫、擦除等操作,必須嚴格按照IMB預先定義的控制命令和命令序列來進行。每條控制命令反映到代碼上,就是對特性地址的寄存器賦予特定的值,例如Reset to Read命令的實現(xiàn)就是對F0寄存器賦值AA。

4.3下位機Bootloader流程

下位機CAN Bootloader程序的整體流程圖如圖1所示。

圖1 下位機Bootloader整體流程圖

下位機Bootloader對CAN消息的收發(fā)全部都在CAN中斷中完成,當程序運行至CAN消息接收循環(huán)后,一旦從總線上收到CAN消息,就立即觸發(fā)CAN中斷并進入中斷服務程序。中斷服務程序判斷接收ID是否為0x18FF1111,并判斷內容是否為程序下載命令,若是,則開始與上位機握手并準備下載應用程序。

握手成功后,中斷服務程序會判斷接收ID是否為0x18FF5555,并對接收到的幀進行數(shù)據(jù)校驗。當一頁的數(shù)據(jù)幀全部接收完成后,則擦除FLASH中相應的頁空間并寫入一頁數(shù)據(jù)。通過CAN總線將全部目標文件下載到芯片F(xiàn)LASH后,Bootloader會讓芯片上電復位,以加載運行新的應用程序。

5、Bootloader上位機通信界面設計與實現(xiàn)

5.1設計要求

上位機通信界面主要用于配合下位機Bootloader讀取并下載升級程序代碼,對于本文所使用英飛凌系列芯片來說,就是HEX文件。通過英飛凌的集成開發(fā)環(huán)境對應用程序進行編譯鏈接后,就能夠生成下載所需的HEX文件。由于Labview在圖形化界面編程方面較為簡便,且在CAN通信上有相應的庫函數(shù)作支持,所以本文使用Labview軟件設計Bootloader的上位機通信界面。

上位機通信界面具體要求如下:

1)可以根據(jù)實際需要設置波特率、發(fā)送幀類型、發(fā)送ID號等。

2)可以打開并初始化所選的CAN通道;能夠通過文件路徑打開應用程序HEX代碼文件,并將HEX文件解析并轉換為Bootloader可識別的數(shù)據(jù)格式,循環(huán)發(fā)送給下位機。

3)接收和發(fā)送的CAN數(shù)據(jù)幀及相關信息能夠顯示在通信界面上,下位機與上位機之間的通信狀態(tài)也能夠以指示燈的形式體現(xiàn)出來。

5.2HEX文件解析模塊設計

HEX文件可以通過集成開發(fā)環(huán)境直接生成,它以行為單位,每一行具有固定的格式,如表4所示。

表4 HEX格式定義

數(shù)據(jù)記錄類型的具體定義如表5所示。

表5 HEX文件數(shù)據(jù)記錄類型定義

因此,HEX文件解析模塊需要以行為單位對文件進行讀取,并將讀取到的字符串轉換為16進制數(shù)據(jù),根據(jù)不同的數(shù)據(jù)記錄類型進行相應的處理,最終將每頁數(shù)據(jù)及其頁首地址解析出來,具體流程如圖2所示。

圖2 HEX文件解析流程圖

其中,對于實際數(shù)據(jù)類型的數(shù)據(jù)記錄行的處理較為繁瑣,主要是因為生成的HEX文件其每行的地址偏移量并不一定與128字節(jié)的頁地址匹配,頁首地址有可能出現(xiàn)在兩行地址偏移量之間,因此當判斷出某行數(shù)據(jù)記錄中包含頁首地址是,需要根據(jù)相鄰兩行數(shù)據(jù)記錄的地址偏移量計算出頁首地址,并對該行數(shù)據(jù)進行分割,將其添加到不同的頁數(shù)組中。

5.3CAN通信收發(fā)模塊設計

利用Labview庫函數(shù),可以較便捷地實現(xiàn)上位機通信界面與下位機間的CAN通信。當上位機通信界面根據(jù)所設置的通道參數(shù)與下位機建立CAN通信連接后,軟件會進入兩個并列的循環(huán):CAN接收循環(huán)和CAN發(fā)送循環(huán),兩個循環(huán)并發(fā)運行,從而實現(xiàn)上位機與下位機之間的實時通信。CAN接收循環(huán)流程圖如圖3所示。

圖3 上位機CAN接收循環(huán)流程圖

CAN接收循環(huán)在收到下位機的下載確認信息后會通過局部變量的方式通知CAN發(fā)送循環(huán)開始發(fā)送下一頁數(shù)據(jù)。CAN發(fā)送循環(huán)流程圖如圖4所示。

CAN發(fā)送循環(huán)一開始會直接向下位機發(fā)送程序下載命令,在和下位機成功握手后,進入真正的數(shù)據(jù)發(fā)送循環(huán),以頁為單位不斷向下位機發(fā)送數(shù)據(jù)幀,直到目標HEX文件全部解析并被下位機下載完成。

圖4 上位機CAN發(fā)送循環(huán)流程圖

5.4運行界面

通過Labview軟件開發(fā)出來的上位機通信界面如圖5所示。

圖5 上位機運行界面

設置好CAN通道號、波特率、ID類型、發(fā)送ID號等參數(shù),并在文件路徑下選擇目標HEX文件,點擊get on bus讓上位機與下位機建立通信連接,通過CAN總線不斷向下位機發(fā)送程序下載命令,并等待來自下位機的消息,同時可以在顯示框中觀察到上位機接收到的CAN數(shù)據(jù)。如果上位機與下位機握手成功,則逐頁發(fā)送解析好的數(shù)據(jù),發(fā)完后自動停止,也可以手動通過get on bus強制通信中斷。如果通信過程中出現(xiàn)錯誤,則會在錯誤對話框中顯示出錯誤信息。

6、測試方法

通過上位機通信界面程序可以對下位機內的Bootloader進行功能測試,具體測試方法如下:

1)準備安裝有上位機通信界面的電腦一臺,已刷寫號Bootloader的汽車電控單元一塊,兩者通過CAN總線建立通信,并在上位機監(jiān)測CAN通信內容。

2)下位機電控單元上電的同時,上位機啟動通信界面并登上CAN總線向下位機發(fā)送握手請求。

3)上位機與下位機建立連接后,將預先編寫好的能夠發(fā)出特定報文的簡單例程添加的通信界面上。

4)開始向下位機下載例程,下載成功后,下位機重新上電并等待延時,啟動引導例程運行。

5)在上位機監(jiān)測CAN總線報文,判斷下載到下位機的例程是否正確。

6)重啟下位機電控單元,并下載一個與之前不同的例程。

7)例程下載完成后,下位機重新上電,在上位機監(jiān)測CAN總線報文,判斷下載到下位機的例程是否已被更換。

8)若上述工作全部成功,則證明Bootloader功能正常。

7、結論

將本文所設計的CAN Bootloader編譯鏈接生成HEX文件并下載至汽車電控單元中,打開上位機通信界面選擇應用程序HEX文件進行測試。經(jīng)測試,目標文件能夠順利地下載到下位機FLASH中,重新上電后也能夠通過Bootloader自動加載運行。

一個設計良好的Bootloader能夠加快汽車電控單元應用程序的開發(fā),更能夠為后期的維護和升級工作提供便捷。本文設計并實現(xiàn)了一種用于汽車電控單元的CAN Bootloader,根據(jù)自定義的通信協(xié)議,通過CAN總線實現(xiàn)應用程序從上位機到汽車電控單元的下載。經(jīng)過測試,該Bootloader能夠正確、可靠地幫助芯片下載應用程序,穩(wěn)定地擦寫FLASH存儲區(qū),快速、準確地實現(xiàn)對汽車電控單元的軟件更新。

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

[2] 游侃民.嵌入式系統(tǒng)網(wǎng)絡化BOOTLOADER的設計與實現(xiàn)[D].廣州:華南理工大學,2010.

[3] 羅峰,孫澤昌.汽車CAN總線原理.設計與應用 [M].北京:電子工業(yè)出版社.2010: 242-265.

[3] 鄒東升,佘龍華. 一種基于CAN總線的程序調試技術研究 [J].計算機技術與應用, 2008,26(5):116-117.

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

The Design and Implementation of a CAN Bootloader in Automotive ECU

Chen Tong, Huang Limei
(Shaanxi Fast Gear Co., Ltd, Shaanxi Xi'an 710119)

The traditional automotive ECU usually uses BDM debug interface for programming, This method influences the efficiency of developing the ECU, and also makes it difficult for update and maintenance. Using the bootloader for ECU will solve these problems. This paper, presents the design and implementation of a bootloader for automotive ECU, which based on CAN communication. This bootloader is proved that it can boot correctly and program the ECU quickly, through the test and practical application.

ECU; Bootloader; CAN; Labview

∶U463.61

∶A

∶1671-7988 (2016)09-156-05

陳彤(1988-),男,工程師,就職于陜西法士特汽車傳動工程研究院,從事汽車電器。

猜你喜歡
程序汽車
2019年8月汽車產(chǎn)銷環(huán)比增長 同比仍呈下降
汽車與安全(2019年9期)2019-11-22 09:48:03
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
汽車的“出賣”
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
汽車們的喜怒哀樂
創(chuàng)衛(wèi)暗訪程序有待改進
3D 打印汽車等
決策探索(2014年21期)2014-11-25 12:29:50
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 欧美一区日韩一区中文字幕页| 亚洲第一精品福利| 欧美成a人片在线观看| 香蕉在线视频网站| 国产午夜无码专区喷水| 欧美一级片在线| 亚洲综合色婷婷中文字幕| 一本大道香蕉高清久久| 99久久精彩视频| 91久久精品日日躁夜夜躁欧美| www.狠狠| 欧美成人综合视频| 国产真实乱了在线播放| 国产自在线拍| 天堂亚洲网| 亚洲第一视频网| 国产成人久久777777| 超清无码一区二区三区| 免费在线观看av| 精品少妇人妻av无码久久| 92精品国产自产在线观看| 亚洲欧洲日韩综合色天使| 十八禁美女裸体网站| 亚洲精品视频免费| 亚洲最大综合网| 成人毛片在线播放| 日韩欧美国产三级| 97久久免费视频| 99热亚洲精品6码| 国产性爱网站| 国产日韩久久久久无码精品| 国产区人妖精品人妖精品视频| 一级毛片网| 亚洲欧美另类色图| 少妇极品熟妇人妻专区视频| 四虎国产精品永久在线网址| 九色在线观看视频| 亚洲区第一页| 在线国产毛片| 欧美日韩在线国产| 国产无码精品在线| 欧美成人日韩| 日韩视频精品在线| 亚洲中文字幕日产无码2021| 91精品在线视频观看| 欧美翘臀一区二区三区| 国产一级视频久久| 亚洲精品777| 久久狠狠色噜噜狠狠狠狠97视色| 亚洲天堂免费在线视频| 人妻中文字幕无码久久一区| 日本尹人综合香蕉在线观看| 亚洲免费福利视频| 国产精品嫩草影院av| 露脸真实国语乱在线观看| 欧美亚洲激情| 久久免费观看视频| 欧美日本在线观看| 亚洲精品无码av中文字幕| 真实国产乱子伦视频| 99国产在线视频| 免费无码AV片在线观看国产| 美女无遮挡免费网站| 无码久看视频| 在线观看国产精品日本不卡网| 一级毛片免费高清视频| 国产色偷丝袜婷婷无码麻豆制服| 日本午夜在线视频| 色偷偷av男人的天堂不卡| 三级毛片在线播放| 亚洲AⅤ无码日韩AV无码网站| 97视频免费在线观看| 欧美一级99在线观看国产| 欧美福利在线播放| 亚洲二区视频| 国产国模一区二区三区四区| 午夜视频日本| 精品国产成人国产在线| 国产国模一区二区三区四区| 国产高清在线精品一区二区三区| 亚洲人成网站在线观看播放不卡| 色婷婷啪啪|