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

基于MC9S12XS128的車載控制器CAN Bootloader的設計與實現

2020-11-23 01:48:47田洪杰孔微
理論與創新 2020年18期

田洪杰 孔微

【摘 ?要】飛思卡爾MC9S12XS128控制器刷寫程序按照常規做法需要使用BDM下載器通過專用接口進行刷寫,在車載控制器的開發過程中需要頻繁的進行程序刷寫操作,傳統的刷寫方式操作十分不便。Bootloader技術能夠使用通用接口對單片機程序進行刷寫,本文基于MC9S12XS128對Bootloader技術進行了應用和驗證,并成功的實現了通過CAN接口對程序的刷寫操作。

【關鍵詞】Bootloader;單片機;CAN總線

1. 技術背景

車載控制器的開發周期長,程序控制邏輯復雜,在開發過程中會經常對控制器的程序進行升級、更改。傳統的程序下載接口需要使用專用下載器進行程序的刷寫、修改,當控制器裝車后,如果需要修改程序,就需要重新拆卸控制器,操作極為不便。bootloader技術是預先在單片機中刷入一個底層服務程序,實現通過通用接口(如串口或者CAN接口)對單片機中的程序進行刷寫,無需對控制器進行重復拆裝,極大的方便了控制器的開發過程。也為后續產品程序的更新升級提供了更便捷的途徑。

MC9S12XS128簡介:

MC9S12XS128單片機是Freescale的一款成熟的16位經型通用控制器,滿足車載環境要求,在汽車電子、工業控制等領域具有廣泛的應用。本文將使用MC9S12XS128單片機并通過其CAN接口實現bootloader功能。

2. CANBootloader 總體設計

Bootloader使用CAN接口進行數據通信,因此在單片機上電后需要對CAN接口進行必要的初始化設置,當初始化完成后,bootloader會監聽通信接口的指令,如果收到bootloader刷寫命令,bootloader程序會跳轉到程序刷寫模式。接收上位機發送的程序數據并寫入到單片機的P-Flash中,即完成用戶程序的刷寫。在控制器實際使用時,大多數情況下是為了執行控制功能,因此在沒有刷寫任務時應當自動跳轉到用戶程序執行。在Bootloader的監聽邏輯中,加入了一個延時判定條件,當端口上長時間(2s)沒有收到來自上位機的連接指令,Bootloader將會跳轉到用戶程序的起始地址,并執行用戶程序。

3. 自定義協議

Bootloader使用的是通用數據接口,在CAN總線上同時還會有其他數據的交互。因此需要給bootloader程序和上位機規定一套通信協議,來區分數據指令和bootloader刷寫指令。本次設計中,將上位機的ID設置為02即只有報文的ID為02時才判定為執行bootloader相關的指令,另外還規定了進行flash操作的口令以及進行flash擦除、flash寫入等指令操作的代碼等,協議規則如下。

4. 內存劃分

Boot loader程序與用戶程序需要分別存儲在不同的內存區域,這樣在程序執行時才能避免兩個程序的數據相互干擾。因為Boot loader程序在程序啟動時就需要執行,所以把bootloader劃分到存儲區域的起始區塊,剩余區域劃分為用戶區域,用于存儲用戶程序,用戶程序存儲區域的起始劃分為向量表地址。地址的劃分可以在程序工程的prm文件中進行,具體的地址劃分如下。

0x4000 TO ? 0x43FF ;//1kB ?用于 bootloader

0x4400 TO ? 0x47FF RELOCATE_TO 0x3C00;//映射到RAM

0xC000 TO ? 0xDEFF ;//用戶程序中斷向量表

0xE100 TO ? 0xFEFF ;//用戶程序

劃分完成后在編寫程序時將程序按照劃分的地址進行分配即可。

5. Bootloader 運行實現

在Bootloader執行flash刷寫操作時,因為刷寫的是程序存儲區域,需要將程序(bootloader程序)復制到單片機RAM中運行。在bootloader的通信程序中用到了CAN接收中斷,在RAM中運行程序時,需要將Bootloader 的中斷向量表映射到內存中的相應區域,程序復制到RAM和中斷向量偏移代碼如下。

MoveCodeIntoRam((byte *)0x4400, (byte *)0x3C00,0x400); //代碼復制到RAM

IVBR= 0x3F; ?//偏移中斷向量表

*(UINT16*)(0x3F00+0xB2)=(UINT16)CAN_receive; //中斷向量重定向

Bootloader程序復制到RAM中運行后,就可以進行P-Flash的刷寫操作。通過CAN接口接收上位機發送的數據并將數據寫入到對應的地址。需要注意的是MC9S12XS128單片機在執行Flash擦除操作時最小擦除單位是1扇區,寫入時是一次寫入8個字節。當bootloader完成Flash刷寫后,需要將程序的運行位置跳轉到用戶程序,程序代碼如下。

asm LDX ?startaddr;

asm JMP ? 0,X ;

上位機發送的跳轉指令和啟動后的超時跳轉判斷條件都能激活上述的跳轉語句。

6. S19文件解析及上位機通信實現

控制程序在CodeWarrior軟件中編譯完成后會自動生成S19格式的文件,文件記錄了刷寫到MCU中的數據和對應的地址。S19文件中的數據由很多行(又稱為記錄)組成,根據每行的起始標注了記錄的類型、數據長度、存儲區的起始地址、數據以及數據校驗。根據S19文件的規則,上位機可以解析出程序要刷寫的地址和要寫入的數據。上位機解析完數據后按照通信協議將刷寫指令和刷寫數據通過CAN接口傳送給單片機,bootloader對相應的存儲區域進行刷寫操作,上位機的編寫過程本文不再贅述。

7. 結束語(功能、不足等)

本次設計通過實際驗證,可以進行控制器程序的刷寫,用戶程序正確運行,并在某型控制器的開發過程中進行了成功應用。較傳統的程序刷寫方式節省了大量的時間。當然,本次設計的bootloader通信指令較為簡單,僅對flash的基本讀寫操作做了規定,并沒有對接收到的S19文件數據進行校驗,后續會繼續完善這部分的功能。

參考文獻

[1] 發動機控制器在線升級系統的設計與實現[J]. 稅靜,吳長水. ?農業裝備與車輛工程. 2020(06).

[2] 混合動力汽車電機控制器硬件設計與CAN通信[J]. 彭朝亮,馮國勝,袁新華. ?農業裝備與車輛工程. 2017(03).

[3]王宜懷,曹金華. 嵌入式系統設計實戰——基于飛思卡爾S12微控制器 [M]. 北京:北京航空航天大學出版社,2011:289-313.

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

主站蜘蛛池模板: 一级香蕉视频在线观看| 最新国语自产精品视频在| 婷婷成人综合| 婷婷综合在线观看丁香| 亚洲Av激情网五月天| 成人精品视频一区二区在线| 国产爽妇精品| 四虎在线高清无码| 亚洲天堂精品在线观看| 无码一区18禁| 国产免费怡红院视频| 久久毛片网| 国产成人精品一区二区三区| 午夜小视频在线| 亚洲一级毛片在线播放| 国产永久免费视频m3u8| 成人综合久久综合| 久久人搡人人玩人妻精品一| 97视频在线精品国自产拍| 99久久这里只精品麻豆| 欧美无遮挡国产欧美另类| 欧美天天干| 欧美激情福利| 久久青草精品一区二区三区| 精品国产乱码久久久久久一区二区| 中国一级特黄视频| 女同久久精品国产99国| 国产乱人伦精品一区二区| 精品视频福利| 综合网天天| 亚洲视频影院| 国产免费人成视频网| 91麻豆国产在线| 精品国产aⅴ一区二区三区| 久久精品国产免费观看频道| 亚洲伊人电影| 久久精品视频亚洲| 97se亚洲综合| 日韩在线欧美在线| 老汉色老汉首页a亚洲| 超碰91免费人妻| 国产区免费| 天天综合亚洲| 欧美97欧美综合色伦图| 波多野结衣一区二区三视频| 亚洲色欲色欲www网| 国产成人精品亚洲日本对白优播| 日韩国产高清无码| 国产又粗又猛又爽| 日韩123欧美字幕| 亚卅精品无码久久毛片乌克兰| 成人亚洲国产| 欧美在线导航| 91偷拍一区| 好久久免费视频高清| 女同久久精品国产99国| 欧美高清三区| 国产美女免费| 亚洲毛片一级带毛片基地| 中文字幕调教一区二区视频| 思思99思思久久最新精品| 久久国产精品娇妻素人| AV老司机AV天堂| 77777亚洲午夜久久多人| 5555国产在线观看| 成人永久免费A∨一级在线播放| 制服丝袜在线视频香蕉| 九九热这里只有国产精品| 国产一区二区三区夜色| 国产精品中文免费福利| 国内丰满少妇猛烈精品播| 又污又黄又无遮挡网站| 精品国产成人av免费| 欧美日本二区| 91精品啪在线观看国产| 97视频免费看| 在线看免费无码av天堂的| 精品一区二区三区中文字幕| 一区二区影院| 欧美无专区| 国产91精品调教在线播放| 国产欧美日韩va另类在线播放|