56F8013程序Flash的在線(xiàn)可編程特性及應用
摘要: 本文在介紹56F8013的Flash編程方法的基礎之上,描述一種它的自舉程序(Bootloader)實(shí)現方法。該方法應用在智能汽車(chē)競賽直立車(chē)??刂葡到y開(kāi)發(fā)過(guò)程中,加快了車(chē)?,F場(chǎng)調試的過(guò)程。該方法原理同樣適應于飛思卡爾公司數字信號控制器系列其它單片機開(kāi)發(fā)。
本文引用地址:http://dyxdggzs.com/article/135966.htm智能汽車(chē)競賽要求必須采用飛思卡爾公司的微控制器作為控制單元的核心芯片,數字信號控制器(DSC)系列具有運算速度快、功耗低、外圍設備豐富等特點(diǎn),非常適合智能汽車(chē)競賽車(chē)??刂?。在競賽秘書(shū)處提供的直立車(chē)??刂茀⒖挤桨钢芯筒捎昧薉SC56F8013芯片組成控制核心電路[1]。該芯片不僅內部硬件資源可以滿(mǎn)足車(chē)??刂埔?,而且它的軟件開(kāi)發(fā)環(huán)境Codewarrior中的PE(Processor Expert)可以自動(dòng)生成芯片中各硬件模塊的接口代碼,使得開(kāi)發(fā)者只需關(guān)注應用軟件的開(kāi)發(fā),這樣便可以提高軟件的開(kāi)發(fā)效率和準確性。
在DSC56F8013的程序開(kāi)發(fā)和調試中,可以使用專(zhuān)用的JTEG調試工具,這種方式在車(chē)??刂葡到y開(kāi)發(fā)中具有一定缺點(diǎn)。車(chē)?,F場(chǎng)調試中,單片機的代碼和參數需要頻繁的進(jìn)行更新,使用JTEG調試工具,調試接頭的引線(xiàn)很多,插拔接頭不便。特別是無(wú)法在車(chē)模運行時(shí)實(shí)時(shí)監測內部程序控制參數。
自舉程序(Bootloader)設計
實(shí)現IAP過(guò)程中,一般將更新程序功能的代碼設計成獨立的自舉程序(Bootloader)模塊。將它燒寫(xiě)在單片機內部特定的位置。
通過(guò)自舉程序下載單片機程序的系統硬件連接如圖1所示?! ?/p>

56F8013電路板通過(guò)串口電平轉換器與上位計算機相連。這個(gè)串口既可以下載單片機應用程序,同時(shí)也可以對單片機程序運行進(jìn)行監控。實(shí)現Bootloader功能包括單片機程序和上位計算機的下載程序兩部分,下面分別進(jìn)行介紹。
Bootloader程序的功能描述和開(kāi)發(fā)
根據上述代碼空間劃定,單片機在復位之后,首先執行Bootloader程序,在Bootloader程序中,先檢查在一定時(shí)間內(一般設置為100ms左右)是否接受到用戶(hù)通過(guò)串口發(fā)送的0x55數據。如果受到了0x55數據,并在最后由0xaa數據結束,便進(jìn)入Bootloader命令狀態(tài),接受相應的程序下載指令,進(jìn)行程序的更新。否則便從0x1AFF讀取用戶(hù)程序的起始地址,開(kāi)始執行用戶(hù)程序。具體的啟動(dòng)過(guò)程如圖3所示?! ?/p>

也可以通過(guò)設定一定的觸發(fā)條件從用戶(hù)程序直接跳轉至Bootloader程序。在Bootloader命令狀態(tài)下,可以接收上位計算機發(fā)送一組處理命令,如表1所示。上位機程序通過(guò)上述三個(gè)基本命令便可以完成對56F8013內部Flash的編程?! ?/p>

開(kāi)發(fā)Bootloader程序可以在CodeWarrior提供創(chuàng )建新工程文件serial_bootloader模板基礎上進(jìn)行改寫(xiě)完成。模板serial_bootloader提供了Bootloader程序所必需的串口通訊、Flash讀寫(xiě)子程序[3]。特別是Flash訪(fǎng)問(wèn)程序比起PE生成的子程序更加簡(jiǎn)捷。雖然在serial_bootloader模板中已經(jīng)可以直接接收通過(guò)超級終端發(fā)送的S-記錄格式的單片機程序完成程序的下載功能,但效率低,而且用戶(hù)程序開(kāi)發(fā)不方便。通過(guò)重新改寫(xiě)之后,可以直接下載程序的二進(jìn)制代碼,可以提高下載速度,方便用戶(hù)程序開(kāi)發(fā)。
評論