基于自編程功能的MCU Bootloader設(shè)計(jì)
自編程操作流程如圖3所示,當(dāng)單片機(jī)收到自編程執(zhí)行信號(hào)時(shí),開始進(jìn)入自編程模式。將FLMDO引腳設(shè)置成高電平,初始化入口RAM,為自編程庫(kù)函數(shù)開辟空間。當(dāng)確認(rèn)FLMD0為自編程狀態(tài)時(shí),開始檢查需要編程區(qū)域是否為空白區(qū)域。當(dāng)被編程區(qū)域不是空白區(qū)域時(shí),先將其擦除,然后在此區(qū)域進(jìn)行編程。編程結(jié)束后進(jìn)行校驗(yàn)。若校驗(yàn)無誤,則將FLMDO引腳設(shè)置成低電平,退出自編程模式。
3 引導(dǎo)交換(boot swap)
產(chǎn)品程序的升級(jí)包括應(yīng)用程序的升級(jí)和引導(dǎo)程序(Bootloader自身)的升級(jí)。為了防止引導(dǎo)程序在升級(jí)的過程中發(fā)生錯(cuò)誤,從而導(dǎo)致MCU無法啟動(dòng),設(shè)計(jì)了引導(dǎo)交換功能。以圖4說明引導(dǎo)交換的實(shí)現(xiàn)過程。
評(píng)論