最近在研究微控制器遠端升級方法,看了網上許多資料後瞭解到,遠端升級就是用IAP方法去燒寫flash區,而IAP方法在EEPROM中有用到,也就是所說的掉電記憶,掉電不丟失的情況,而相較於51微控制器,網上的資料大多是有關STM32微控制器的,且使用作業系統,適合於晶片記憶體較大的晶片,分割槽成3-4塊,首先是BOOT引導區,在此判斷是否需要升級程翠,不需要則跳轉到正常程式入口處執行,需要則跳轉到升級程式處執行(正常程式和升級程式分別儲存,需要兩塊FLASH區域,防止升級過程中失敗變磚),其次就是這兩個程式區,最後是掉電記憶區(EEPROM),也可以記錄些程式區的狀態,如校驗和值,長度等。
查閱晶片手冊後發現SC系列51微控制器晶片可以用IAP方法燒寫整個FLASH區,而某些晶片沒有開放,只能用IAP去燒寫EEPROM區,且與FLASH獨立出來,所以考慮用SC晶片實現BootLoad方法,用WIFI模組串列埠傳送資料,去升級主控晶片程式。
由於我使用的晶片記憶體較小,不適合雙分割槽去儲存程式,故只將flash分成boot引導區和程式區,BootLoad實現方法大致如下
其中最主要的步驟是分配FLASH空間和設定中斷重對映,分配空間在keil設定裡
在啟動檔案STARTUP.A51插入跳轉指令(中斷重對映),keil配置裡配置相關地址
設定跳轉地址時注意加上重對映後的中斷地址,600H+100H=700H才是最後的boot載入程式跳轉到的使用者程式的執行地址。
7.4日BootlLoad總結
相關文章
- javaSE總結(轉+總結)Java
- 「比賽總結」AT ABC 358 總結
- this總結
- 總結?
- 總結
- 樹結構總結
- ISP 連結總結
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- 團隊總結 - Beta版總結會議
- stylelint總結
- eslint總結EsLint
- 2019總結
- 索引總結索引
- css 總結CSS
- 9.4 總結
- 7.5 總結
- flex總結Flex
- React總結React
- sourcemap總結
- HTTP總結HTTP
- 4.18總結
- linux總結Linux
- 工作總結
- 3.6總結
- 5.9總結
- 5.10總結
- 4.23總結
- 3.28總結
- 5.22總結
- CTF總結
- 3.7總結
- 4.1總結
- 近期總結
- 3.25總結
- 每日總結
- 4.16總結
- 4.15總結
- 3.14總結