飛思卡爾系列單片機Bootloader的初步開發經驗
BootLoader一般用於后期嵌入式產品的升級使用。由於產品中缺乏jtag硬件調試接口。BootLoader可以實現沒有物理破壞性的軟件升級。
開發重點:
1、芯片本身的Flash驅動。一般都由官方提供。比如mpc5744P芯片采用的文檔是Standard software driver for C55 Flash。我們可以采用vle指令的,c-array形式的驅動。該驅動的表現形式是數組。其實里面應該就是一個完整的獨立的,可以接受參數並可以返回的函數。注意,函數接口的參數可能需要理解和試錯。
2、芯片本身的CAN通信。CAN通信要實現基本的報文的收發。CAN的初始化工作需要做好。報文的接收通過中斷實現。
3、S19文件的格式。由於S19文件的格式比較靈活。而由於單片機的Flash的特殊性(具體參見Flash編程文檔),對編程的步驟的各個部分都有嚴格的要求。不能隨意操作。否則在對Flash的操作中,單片機很容易進入Exception。我們幾乎沒有對Exception這種底層問題的處理能力,這需要匯編級別的理解。所以,要防止這種情況出現。
4、上位機軟件。上位機軟件其實不是設計的重點。根據界面和業務邏輯分離的設計原則,可以盡量簡化上位機的設計。上位機的一個根本任務就是讀取S19文件中的每一行,然后將每一行通過報文(多幀)發送出去。關於上位機和下位機的交互。這個暫時沒有太好的思路。這一部分比較靈活。一個基本的原則是單片機上電在等待一段時間T后,如果沒有接受到任何表示要對其進行操作的信息的報文,那么就進入正常執行應用程序的流程。
5、鏈接文件。鏈接文件需要根據芯片手冊中的memory map和硬件啟動流程仔細斟酌設計。如果配合一個好的調試器使用,那么問題可能還是比較好發現和解決的。
