基於飛思卡爾DZ60芯片CANBootloader的一種簡單折中實現思路及使用20190926
跳過說明:這僅是一個嘗試,有這方面需求的請直接聯繫自己的芯片廠家索取官網實現包。謝謝!
0、工具及系統:
- 任一含CAN的DZ60開發板1套。
- FreeTech USBDM芯片燒寫工具1套。
- ZLG USBCAN-I-mini通訊工具1套。
- CodeWarrior for Microcontrollers V6.3開發環境。
- Win7 64位操作系統。
- 各種網絡參考例程。
1、Bootloader端
是在網上下載的一個DZ60的CANBootloader的主機程序上改的,程序原名是Host。
保護了0xF400~0xFFFF的3K地址空間:
內部含一個簡單的指示燈閃爍客戶程序:
由於需要跳過向量重定義時S1問題,所以最後一個768字節不直接擦寫(而是在後期的Bootloader的S19文件中手動修改、固化)。
因此,該區域也不能進行編程動作:
2、客戶程序端
客戶程序使用PE模式,僅修改中斷向量表地址和重置地址:
有警告,但是不影響整體使用。
3、CAN通訊PC端
自己編寫的一個小界面。
4、使用步驟
a、boot.s19與user.s19合併爲all.s19。
- 將boot.s19拷貝一份命名爲all.s19。
- 將all.s19中的0x1900~0xF400地址的內容替換爲user.s19中的內容。
- 將all.s19中的0xF3C0~0xF400地址的S1內容換算後替換爲S3內容。
- 燒錄all.s19。
b、通過USBDM將all.s19燒錄進開發板。
c、後期CAN更新user1.s19。
- 點擊“...”按鈕選擇客戶新文件的文件路徑。
- 點擊“OpenFile”按鈕打開文件內容。
- 點擊“CheckData”按鈕檢測文件內容。
- 用USBCAN-I-mini將電腦和開發板連接起來。
- 重置開發板電源。
- 重置5秒內點擊“UploadData”按鈕上傳文件進行更新。
- 進度條進度完畢則表示更新成功。
- 重置開發板電源。(目前不會自動跳轉)
簡單效果:本來boot.s19是中間的兩個燈閃,用user2.s19更新後是下面的兩個燈閃。
5、問題及總結
知之爲知之,不知爲不知。鑑於對自己定義爲半道出家的泥腿子,所以潛意識認爲自己單片機方面是弱項,導致整體水平遲遲沒有大的飛躍(進展)。
芯片一直是由廠家在後臺隱式固化的,就好像操作系統的電路接口一樣,好多東西廠家並不直面公開、或者是一般非VIP的根本接觸不到。整體感覺仍然是在荊棘陣地上匍匐勇進,在黑色汪洋底部艱難泅渡。繼續加油!
a、Bootloader中的32箇中斷向量重定向時,S1不正常。
但是改爲S3就可以,仍然不知道爲什麼,目前只是將這個問題繞過去了。
b、Bootloader程序的S19文件在前期就需要固化客戶程序可能用到的所有中斷向量表
因爲Bootloader的S19文件中的客戶中斷向量表是手工更改的,所以這就導致在前期合併燒寫時必須將客戶可能用到的所有中斷向量都預留出來,否則後期不能增刪變動任一中斷、不能重定義任一中斷及管腳。
這真是一個不小的欠缺和遺憾。
c、BurstProgram的0x20區塊編程功能不正常。
目前只能全部使用ByteProgram功能代替,因此編程速度上相對會慢許多。
d、其他問題(備份恢復、自適應波特率、一體化)。
這算是初始原型,繼續調試中。有這方面需求的請直接聯繫自己的DZ60芯片廠家索取官網實現包。謝謝!