標(biāo)題: FMD單片機(jī)基于串口更新程序的BootLoader程序 [打印本頁(yè)]

作者: 濤qq623942603    時(shí)間: 2024-3-28 10:02
標(biāo)題: FMD單片機(jī)基于串口更新程序的BootLoader程序
       之前想用STC單片機(jī)的EEPROM儲(chǔ)存FMD單片機(jī)的Bin文件,然后通過(guò)串口去更新程序,現(xiàn)在終于把BootLoader程序調(diào)通了。有了BootLoader程序再也不怕板子帶電燒錄了。因?yàn)镕MD單片機(jī)需要用下載器的電源燒錄,如果板子本身是內(nèi)置電池,燒錄前需要斷開(kāi)電池才能燒錄,十分麻煩,更頭疼的是如果你的單片機(jī)電源端并聯(lián)了大電容,你用燒錄器還不一定可以燒錄成功。我的目標(biāo)是把BootLoader程序控制在1K的大小,多留點(diǎn)空間給APP程序。本來(lái)想自己做上位機(jī),為了能快點(diǎn)先實(shí)現(xiàn)功能,我先用現(xiàn)有的串口助手先做實(shí)驗(yàn),這里我選的是XMode協(xié)議。XMode協(xié)議效驗(yàn)的是每一幀數(shù)據(jù),跳轉(zhuǎn)APP程序前沒(méi)對(duì)整個(gè)APP程序進(jìn)行效驗(yàn),如果每一幀數(shù)據(jù)都是對(duì)的,似乎也不用對(duì)整個(gè)APP程序效驗(yàn)。下次換YMode協(xié)議試試,YMode協(xié)議第一幀發(fā)送的是文件信息,這樣就可以通過(guò)文件名字把一些關(guān)鍵信息發(fā)送出去,例如我的Bin文件名字可以命名為:FT64F0A5-B1A1.Bin,前面是單片機(jī)型號(hào),后面是整個(gè)APP效驗(yàn)和。
       硬件說(shuō)明:串口使用的是UART1_TX = PB6 , UART1_RX = PA2 ,波特率是115200 ,這2個(gè)腳也是單片機(jī)的下載腳,也可以通過(guò)程序映射到其它腳,如下圖:


使用步驟:
第一步是通過(guò)FMD的脫機(jī)燒錄工具把BootLoader程序燒錄進(jìn)去,如下圖:


第二步是打開(kāi)通信調(diào)試助手,選擇115200的波特率,勾選從文件發(fā)送數(shù)據(jù),傳輸協(xié)議選擇XMode,點(diǎn)擊瀏覽選擇APP程序,這里使用的是Bin文件,這個(gè)Bin文件在APP程序編譯時(shí)候回自動(dòng)生成,選擇好后點(diǎn)擊發(fā)送,這時(shí)上位機(jī)會(huì)一直等待單片機(jī)發(fā)送傳輸開(kāi)始命令,你需要做的就是把單片機(jī)復(fù)位,或者重新上電,如下圖:

    由于FMD單片機(jī)是14Bit長(zhǎng)度的,10k 程序存儲(chǔ)器由 160 頁(yè)組成,每頁(yè) 64 個(gè) word(1word= 14bits),這樣10K的FLASH,發(fā)送的數(shù)據(jù)量就是20K起步了,程序更新會(huì)有點(diǎn)慢,還有一個(gè)原因就是,這個(gè)上位機(jī)是現(xiàn)成的,沒(méi)有設(shè)置地址偏移量的選擇,這就導(dǎo)致加載APP程序時(shí),會(huì)把BOOT程序的地址也算進(jìn)去,這樣前面發(fā)送的1K的數(shù)據(jù)會(huì)被BootLoader程序丟棄,白白浪費(fèi)了時(shí)間。后期自己制作上位機(jī)的時(shí)候可以避免這個(gè)問(wèn)題。            特別注意APP程序要勾選IAP設(shè)置,設(shè)置其實(shí)地址和結(jié)束地址,BootLoader程序設(shè)置為1K,那么起始地址就是0x400,這個(gè)型號(hào)的單片機(jī)FLASH大小是10K,結(jié)束地址就是0x2800,如下圖:

         BootLoader程序暫時(shí)只分享Hex文件,整個(gè)程序只用了777字節(jié),288個(gè)變量,還有優(yōu)化空間,讓程序更健壯。


APP.zip (432.45 KB, 下載次數(shù): 7)

BootLaoder.zip (2.3 KB, 下載次數(shù): 6)

[attach]326074[/attach]










歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1