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中的數據保持不變。控制器上電復位時,無需等待,直接進入應用程序。程序引導流程圖如圖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
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 久久综合结合久久狠狠狠97色| 熟女成人国产精品视频| 国产无套粉嫩白浆| 亚洲成aⅴ人片在线影院八| 精品久久国产综合精麻豆| 亚洲三级a| 午夜毛片免费观看视频 | 免费无码又爽又黄又刺激网站 | 国产成人区在线观看视频| 亚洲天堂网在线播放| 亚洲日本www| 国产精品网址在线观看你懂的| 国产精品密蕾丝视频| 亚洲日本一本dvd高清| 丰满人妻被猛烈进入无码| 国产h视频免费观看| 亚洲丝袜第一页| 国产美女自慰在线观看| 91色综合综合热五月激情| 日韩小视频网站hq| 国产精品亚洲专区一区| 1级黄色毛片| 这里只有精品国产| 日韩无码白| 最新午夜男女福利片视频| 熟妇丰满人妻| 99激情网| 久久永久免费人妻精品| 亚洲视频二| www.精品视频| 全部毛片免费看| 亚洲成人黄色在线观看| 精品综合久久久久久97超人该| 看av免费毛片手机播放| 无码日韩视频| 波多野结衣久久高清免费| 国产精品冒白浆免费视频| 91香蕉视频下载网站| 青草视频网站在线观看| 精品国产99久久| 亚洲高清日韩heyzo| 久久国产精品娇妻素人| 国产国语一级毛片| 国产成人精品在线| 国产噜噜在线视频观看| 日韩毛片视频| 成年人久久黄色网站| 成人伊人色一区二区三区| 日韩无码真实干出血视频| 亚洲一欧洲中文字幕在线 | 国产乱人免费视频| 国产成人免费| 永久免费AⅤ无码网站在线观看| 精品国产成人av免费| 国产精品视频第一专区| 亚洲精品手机在线| 欧美在线免费| www.精品国产| 免费无遮挡AV| 理论片一区| 青青草国产免费国产| 福利姬国产精品一区在线| 国产成人免费视频精品一区二区| 97久久免费视频| 免费一看一级毛片| 亚洲乱码精品久久久久..| 亚洲欧美日韩久久精品| 日本午夜在线视频| 色偷偷av男人的天堂不卡| 国产精品九九视频| 无码'专区第一页| 国产偷国产偷在线高清| 国产在线自揄拍揄视频网站| 久久综合婷婷| 美女被狂躁www在线观看| 国产欧美一区二区三区视频在线观看| 男人天堂伊人网| 在线观看视频一区二区| 99性视频| 色噜噜狠狠色综合网图区| 国产Av无码精品色午夜| 91精品国产丝袜|