之前想用STC單片機的EEPROM儲存FMD單片機的Bin文件,然后通過串口去更新程序,現在終于把BootLoader程序調通了。有了BootLoader程序再也不怕板子帶電燒錄了。因為FMD單片機需要用下載器的電源燒錄,如果板子本身是內置電池,燒錄前需要斷開電池才能燒錄,十分麻煩,更頭疼的是如果你的單片機電源端并聯了大電容,你用燒錄器還不一定可以燒錄成功。我的目標是把BootLoader程序控制在1K的大小,多留點空間給APP程序。本來想自己做上位機,為了能快點先實現功能,我先用現有的串口助手先做實驗,這里我選的是XMode協議。XMode協議效驗的是每一幀數據,跳轉APP程序前沒對整個APP程序進行效驗,如果每一幀數據都是對的,似乎也不用對整個APP程序效驗。下次換YMode協議試試,YMode協議第一幀發送的是文件信息,這樣就可以通過文件名字把一些關鍵信息發送出去,例如我的Bin文件名字可以命名為:FT64F0A5-B1A1.Bin,前面是單片機型號,后面是整個APP效驗和。
硬件說明:串口使用的是UART1_TX = PB6 , UART1_RX = PA2 ,波特率是115200 ,這2個腳也是單片機的下載腳,也可以通過程序映射到其它腳,如下圖:
使用步驟:
第一步是通過FMD的脫機燒錄工具把BootLoader程序燒錄進去,如下圖:
第二步是打開通信調試助手,選擇115200的波特率,勾選從文件發送數據,傳輸協議選擇XMode,點擊瀏覽選擇APP程序,這里使用的是Bin文件,這個Bin文件在APP程序編譯時候回自動生成,選擇好后點擊發送,這時上位機會一直等待單片機發送傳輸開始命令,你需要做的就是把單片機復位,或者重新上電,如下圖:
由于FMD單片機是14Bit長度的,10k 程序存儲器由 160 頁組成,每頁 64 個 word(1word= 14bits),這樣10K的FLASH,發送的數據量就是20K起步了,程序更新會有點慢,還有一個原因就是,這個上位機是現成的,沒有設置地址偏移量的選擇,這就導致加載APP程序時,會把BOOT程序的地址也算進去,這樣前面發送的1K的數據會被BootLoader程序丟棄,白白浪費了時間。后期自己制作上位機的時候可以避免這個問題。 特別注意APP程序要勾選IAP設置,設置其實地址和結束地址,BootLoader程序設置為1K,那么起始地址就是0x400,這個型號的單片機FLASH大小是10K,結束地址就是0x2800,如下圖:
BootLoader程序暫時只分享Hex文件,整個程序只用了777字節,288個變量,還有優化空間,讓程序更健壯。
APP.zip
(432.45 KB, 下載次數: 7)
2024-3-28 10:11 上傳
點擊文件名下載附件
BootLaoder.zip
(2.3 KB, 下載次數: 6)
2024-3-28 10:11 上傳
點擊文件名下載附件
|