7.9日工作總結

小智001發表於2024-07-09

今天繼續研究BOOTLOAD內容,前兩天已經把單區BOOTLOAD研究完了,今天開始研究雙區下載,雙區優點在於下載程式時不怕因為斷電下載失敗而導致程式當機,可以繼續執行上一次的APP程式,但是會消耗更多的FLASH空間,正常雙區構想是將FLASH空間分為三部分,依次為BOOT、APP1、APP2,下載時先把程式下載到APP2區進行備份,下載完畢後對程式大小進行校驗,校驗透過後,再將APP2區的程式碼複製到APP1區執行,至此升級過程完成。
還看到了另一種的雙區做法,就是主控晶片FLASH空間不夠備份時,可以把程式下載到模組中,如wifi模組,在模組中快取下來,下載完成後再複製到APP區。
今天研究SC92系列雙區做法,把主控晶片空間壓縮,分為兩個APP區,每個5k大小,嘗試雙區升級。做法為上電執行BOOOT自檢,檢查EEPROM空間內容,00H存APP1資訊,01H存APP2資訊;若檢查結果為APP2為更新完成標誌,此時將APP1狀態更新為更新中標誌,再執行復製程式,將APP2程式區間內容複製到APP1區間內,複製完成後,再將APP1狀態更新為更新完成標誌,APP2狀態更新為更新中標誌,復位重新自檢,此時跳轉到APP1程式內,同時一直接收指令資訊,接收到BOOT指令時,復位進入到BOOT程式內(不改變APP1和2狀態資訊,若接收過程出現故障再次復位則進入APP1程式正常執行),接收到資料下載指令後,將APP2狀態更新為更新中標誌,直至接收完成後再將APP2狀態更新為更新完成標誌,復位自檢重複上述過程。
但是程式配置好後,將BOOT和APP1程式下載到板子上時正常執行,透過IAP指令下載程式到APP2區,再將APP2區程式複製到APP1區復位後進入到APP1程式內,無法正常執行,BOOT區完好。不知道哪裡出現了問題,無法檢視晶片的FLASH資料,估計是再複製過程中出現了問題,因為直接下載到APP區是可以正常執行的。明天再看看到底是哪裡的問題。