最近在研究微控制器遠端升級方法,看了網上許多資料後瞭解到,遠端升級就是用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
- 總結?
- this總結
- 總結
- 不能算是總結的年終總結薦
- 「比賽總結」AT ABC 358 總結
- 樹結構總結
- ISP 連結總結
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- 【總結】二叉樹概念大總結二叉樹
- 團隊總結 - Beta版總結會議
- Html總結HTML
- 自我總結
- 索引總結索引
- css 總結CSS
- Promise:總結Promise
- Vagrant 總結
- zookeeper總結
- jvm總結JVM
- Promise總結Promise
- jquery總結jQuery
- 面試總結面試
- Flutter 總結Flutter
- 9.4 總結
- 7.5 總結
- sourcemap總結
- React總結React
- 埠總結
- mysql總結MySql
- 自考總結
- 考前總結
- CSS總結CSS
- MySQL 總結MySql
- 本章總結
- 集合總結
- Maven 總結Maven
- 總結1
- 博弈總結