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

基于dsPIC30F的BootLoader設計

2019-06-05 01:42:16雒拓程威陳博凱杜浪東
汽車實用技術 2019年10期
關鍵詞:程序

雒拓,程威,陳博凱,杜浪東

?

基于dsPIC30F的BootLoader設計

雒拓,程威,陳博凱,杜浪東

(陜西重型汽車有限公司,陜西 西安 710200)

控制單元采用專用調試接口更新程序時,過程繁瑣且一般需要拆開殼體從而破壞產品的可靠性。文章介紹了一種基于dsPIC30F的BootLoader設計方法,可通過車輛預留的OBD接口,利用CAN總線實現控制單元軟件的更新。該設計方法主要包含啟動管理、通信管理和底層驅動管理等模塊。通過試驗驗證,該BootLoader能夠實現控制單元程序的更新,且具有占用存儲空間小、下載速度快和工作可靠的特點。

CAN總線;BootLoader;dsPIC30F

引言

隨著汽車電子技術的飛速發展,車載控制器已經在商用車上廣泛應用,而在控制器調試時,經常需在車輛的使用現場對控制器程序進行升級和維護。采用基于CAN總線的BootLoader技術是實現程序更新的有效的解決方案,它避免了拆除硬件設備時造成的破壞,僅通過車輛預留的OBD接口,利用車輛自身的CAN總線網絡即可實現對車輛控制單元的程序更新,并支持對多個控制單元進行程序更新。本文所設計的BootLoader基于dsPIC30F5011芯片,采用模塊化結構設計,根據器件手冊適當調整即可適用于dsPIC30F系列其它規格的芯片。

1 BootLoader結構

BootLoader是獨立于用戶程序的功能代碼,通過CAN總線與上位機進行通訊,實現控制單元程序的下載和運行控制。主要包含啟動管理模塊、通信協議處理模塊和硬件驅動模塊[1],系統組成圖如圖1所示。

進入BootLoader一般有三種方式:1、復位后設置一段延遲時間,需在延遲時間內確認;2、通過讀取某個引腳的電平進行判斷;3、通過設置啟動標志進行判斷。方法1的延時存在不確定性,不易控制。方法2需要引出單獨的引腳,并手動控制高低電平,不便于操作。方法3可通過CAN總線和上位機配合即可完成,在控制單元程序運行中可隨時進入BootLoader。本文采用第三種方式。

圖1 BootLoader結構圖

1.1 啟動管理模塊

控制器上電后首先進入啟動管理模塊,可通過修改鏈接器描述文件使控制器上電后跳轉至啟動管理模塊的處理函數。該模塊通過“應用程序有效標志”(AppValid)和“BootLoader請求標志”(BootReq)引導程序進入用戶程序或是BootLoader程序。其中,AppValid存儲于flash中,而BootReq存儲于RAM中,變量的定義如下所示。

int __attribute__((address(0x880))) BootReq;

char __attribute__((space(prog),aligned(64))) BootInfo[64] = {0};

考慮到Flash的擦寫限制,定義了BootInfo[]變量,AppValid相當于BootInfo[0]。當Appvalid=0時,應用程序無效,此時始終進入BootLoader;當Appvalid=1時,應用程序有效,此時若BootReq=1,表示接收到上位機的BootLoader請求,則進入BootLoader程序,否則進入用戶程序。為了能夠在應用程序運行時隨時進入BootLoader,可設置當收到上位機的BootLoader請求信號后,將BootReq置為1然后通過軟件復位,復位后RAM中的數據保持不變??刂破魃想姀臀粫r,無需等待,直接進入應用程序。程序引導流程圖如圖2所示。

圖2 啟動管理流程

1.2 通信協議處理模塊

通信協議處理模塊通過預定義的服務實現上、下位機之間的數據通信,包括BootLoader請求等服務[2],具體見表1。

表1 通信協議處理模塊

下載程序時,上位機首先定時發送BootLoader請求指令,下位機收到BootLoader請求后進入BootLoader,當下位機進入BootLoader后,上位機根據hex文件的地址信息向下位機發送擦除指令,擦除待編程的Flash和EEPROM區域;然后,上位機通過數據包傳輸服務將待下載的數據傳送給下位機,上位機每次發送的字節數可根據上、下位機的內存、hex文件大小、編程的字節數等確定;最后,上位機利用編程指令對下位機進行編程,并在編程結束后對編程區域進行數據校驗,并依此循環下載,直至所有數據下載完成。上下位機的通信流程圖如圖3所示。

1.3 驅動模塊

1.3.1存儲地址分配

dsPIC30F5011單片機的存儲空間分配如下圖所示,包含22K指令字的Flash存儲空間和1KB的EEPROM存儲空間[3]。一般將用戶程序存儲于緊隨中斷向量表的存儲空間,而將BootLoader放在程序存儲器區域的最高地址區域,存儲空間分配見圖4。

圖4 存儲空間分配

1.3.2 CAN驅動模塊

dsPIC30F5011 的CAN模塊擁有3個發送緩沖區、2個接收緩沖區,每個接收緩沖區有硬件過濾器。為了降低CPU負載,在進入BootLoader后使用硬件過濾器過濾掉與BootLoader功能無關的CAN報文。同時,為了防止緩沖區溢出而導致的丟幀,在接收中斷中將報文放于軟件緩沖區,在處理報文時從軟件緩沖區依次取出。緩沖區被設計成循環隊列,通過隊列長度、當前位置索引、尾部索引等變量控制隊列。緩沖機制如圖5所示。

圖5 CAN緩沖機制

1.3.3 NVM驅動模塊

NVM即非易失性存儲器,下位機包含的NVM包括Flash和EEPROM,可通過TBLRD(讀表)、TBLWT(寫表)和NVM控制寄存器實現運行時自編程。驅動模塊提供統一的接口函數 NVM_ Read、NVM_ Write和NVM_ Erase??紤]不同類型存儲單元的可編程數據大小不同,在接口函數中根據編程地址判斷編程區域,調用不同的接口函數實現不同類型存儲區域的編程。

以Flash編程為例,驅動模塊提供Flash_CoreRead、Flash_CoreErase和Flash_CoreWrite函數,由于讀寫操作應遵循嚴格的時序要求,因此使用匯編語言編寫,部分代碼如下所示。

_Flash_CoreRead:

sub w3,#0,[w15]

bra z,2f

mov w1,_TBLPAG

1:

tblrdl [w0],[w2++]

tblrdh [w0++],[w2++]

dec w3,w3

bra nz,1b

2:

return

_Flash_CoreErase:

mov w1,_TBLPAG

tblwtl w1,[w0]

…,此處代碼為標準序列,可參考器件的數據手冊

return

_Flash_CoreWrite:

mov w1,_TBLPAG

mov #32,w3

tblwtl [w2++],[w0]

tblwth [w2++],[w0++]

dec w3,w3

bra nz,1b

…,此處代碼為標準序列,可參考器件的數據手冊

return

2 上位機程序

上位機程序使用MFC開發,主要包含文件加載模塊、數據解析模塊、通信模塊和CAN驅動模塊。文件加載模塊用于解析hex文件,將字符信息轉換為二進制代碼信息;數據解析模塊按hex文件的格式解析程序信息,并將程序按地址存儲于緩沖區中;通信模塊用于實現上位機和下位機的之間的預定服務, CAN驅動模塊實現CAN報文的收發。上位機刷寫界面如圖6所示。

圖6 上位機軟件

3 結語

本文介紹了dsPIC30F芯片基于CAN總線的BootLoader設計方法,該方法采用模塊化設計,具有較好的移植性,理論上可適用于dsPIC30F系列的各型號產品。該BootLoader功能全面,既包含了啟動管理、底層驅動、通信服務等基本的功能模塊,實現了穩定、可靠的程序下載功能;同時,又通過自定義的通信服務,簡化了上、下位機的信息交互,適用于單片機資源緊張和要求快速移植的場合。本文設計的BootLoader占用空間小,代碼量約5KB,且已經在某型號重型車輛的車身控制器中使用,通過實驗驗證,證明該BootLoader能夠可靠,正確的下載更新控制單元程序。

[1] 王志強.基于MC9S12XEP100的BootLoader設計與實現,汽車實用技術,2018,(17).

[2] 張成雨,楊朝陽,單志文.基于CAN總線的車載應用Bootloader設計,湖北汽車工業學院學報,2017,(12).

[3] dsPIC30F5011/5013數據手冊.文檔號:DS70116G_CN.

Design of BootLoader base on dsPIC30F

Luo Tuo, Cheng Wei, Chen Bokai, Du Langdong

( Shaanxi Heavy Automobile Co., Ltd., Shaanxi Xi’an 710200 )

Updating software in electronic controller by dedicated debug port is complicated,and always need to disassemble electronic controller which lower the stability.This paper introduce a design of BootLoader base on dsPIC30F,which uses the OBD connector to update software in electronic controller by CAN bus.The BootLoader mainly includes boot module design,communication module design and driver module design. Experimental results show that the BootLoader can update software successfully,occupys little flash rom,downloads quickly and works stably.

CAN BUS; BootLoader; dsPIC30F

10.16638/j.cnki.1671-7988.2019.10.027

U462

A

1671-7988(2019)10-76-03

U462

A

1671-7988(2019)10-76-03

雒拓 (1983),男,就職于陜西重型汽車有限公司 汽車工程研究院,從事汽車電子電器研究工作。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产精品久久自在自线观看| 亚洲中文字幕在线精品一区| 国内老司机精品视频在线播出| 免费一级大毛片a一观看不卡| 国产av剧情无码精品色午夜| 在线观看热码亚洲av每日更新| 亚洲男人天堂2018| 久草网视频在线| 麻豆精品视频在线原创| 日韩a在线观看免费观看| 亚洲首页在线观看| 国产成人亚洲无吗淙合青草| 国产91精品调教在线播放| 亚洲 成人国产| 国产区人妖精品人妖精品视频| 国产va欧美va在线观看| 精品久久久久久久久久久| 永久免费无码成人网站| 亚洲天堂.com| 亚洲色欲色欲www在线观看| 久久夜色撩人精品国产| 亚洲美女一级毛片| 高清免费毛片| 欧美19综合中文字幕| 无码人中文字幕| 国产精品成人久久| 97在线观看视频免费| 日本人又色又爽的视频| 久久久久人妻一区精品色奶水| 无码福利日韩神码福利片| 久久亚洲国产一区二区| 精品在线免费播放| 国产杨幂丝袜av在线播放| 无码AV日韩一二三区| 国产91特黄特色A级毛片| 狠狠亚洲婷婷综合色香| 欧美一区国产| 国产99在线| 国产福利影院在线观看| 久久99国产综合精品女同| 伊人丁香五月天久久综合| 亚洲毛片在线看| 亚洲AV成人一区国产精品| 女同久久精品国产99国| 亚洲第一在线播放| 一级毛片免费不卡在线| 爱色欧美亚洲综合图区| 久久一级电影| 天堂在线www网亚洲| 成人福利在线视频免费观看| 91小视频在线播放| 国产无码制服丝袜| 老司机精品99在线播放| 国产精品99一区不卡| 国产精品久久久久久影院| 2021国产精品自拍| 91精品国产无线乱码在线| 亚洲欧美激情小说另类| 精品人妻一区二区三区蜜桃AⅤ| 国产在线视频二区| 九九热这里只有国产精品| 国产美女精品在线| 欧美啪啪精品| 亚洲人成高清| 欧美成人免费一区在线播放| 凹凸精品免费精品视频| 欧美激情视频一区二区三区免费| 欧美精品高清| 欧美有码在线观看| 久久中文无码精品| 色噜噜中文网| 国产成人精品无码一区二 | 国产成本人片免费a∨短片| 精品久久香蕉国产线看观看gif| 久久青草免费91线频观看不卡| 九月婷婷亚洲综合在线| 日韩亚洲综合在线| a亚洲视频| 丁香六月综合网| 男人的天堂久久精品激情| 久久精品午夜视频| 日本91在线|