MSP430遠端公升級解決方案

2021-09-07 15:06:00 字數 1265 閱讀 4920

1. 如下圖所示, 如下圖所示, 如下圖所示, flash rom為 32k 位元組(flash大小要根據你用的具體型號做調整),分為 64 個段,每個段分為512位元組,512位元組又細分為 8個塊 ,每塊64位元組。

2. msp430f247每次最小可擦除1個段的空間,除操作是向該寫滿 0xff。

3. 32k位元組的 flash rom起始位址為 0x0ffff –0x080000,對應segment0 – segment63.

4. rst復位中斷向量位址為0x0fffe,其由編譯器自動寫入跳轉到main()函式的指令。

當有外部復位、軟體復位等,都會觸發名為reset的不可遮蔽中斷,此時mcu會自動將中斷向量0xfffe裝入pc指標,從而引導程式執行。

具體分割槽見下圖:

這裡系統分割槽佔了1.5kb的空間,其中包括了bootloader**分割槽和中斷向量分割槽。應用程式分割槽也包括**區和中斷向量區兩部分,但這裡的中斷向量卻是虛擬中斷向量,原因:中斷向量表不能重新對映。

程式更新步驟:1、裝置上電; 2、執行bootloader程式; 3、延時等待遠端公升級命令;4、收到更新命令進入公升級功能;5、將應用分割槽擦除;6、將接收的程式寫入應用分割槽;7、跳轉pc指標到應用程式的復位位址;8、執行新的應用程式。

程式執行的步驟: 1、裝置上電; 2、執行bootloader程式; 3、延時等待遠端公升級命令;4、接收命令超時;5、判斷應用分割槽是否有可執行的程式;6、跳轉pc指標到應用程式的復位位址;7、執行應用程式。(如果沒有可執行的程式、則一直停留在bootloader)

關鍵技術:

1、通過移動pc指標實現了bootloader到應用程式的切換、同時也實現了虛擬中斷向量表。

2、通過flash rom的讀寫操作實現應用程式的更新

順利實現msp430的遠端公升級,這裡我要感謝梁先生的網路資料。其實,只要微控制器有flash的讀寫介面,就能根據此原理實現bootloader,同時介面也不侷限與串列埠,只要有機制獲取新程式,就可以通過這種方式實現對mcu的公升級。

完成MSP430的IAP公升級程式(總結)

經過各種測試,修改終於找到了問題的原因,現在大致總結下我在寫iap程式的時候 遇到的問題和解決方案。首先要實現微控制器的iap公升級程式,我們要知道自己的ide如何能 將程式的函式或者變數的編譯位址固定,因為對於bootload程式,我們要固定它的位址,還有從bootload跳轉到的程式執行的位址。...

基於CCS工程MSP430串列埠公升級(一)

第一次接觸msp430的晶元,第一次使用ccs開發環境,花了將近乙個星期的時間,才把msp430串列埠公升級做出來。在lnk msp430fg479.cmd中修改boot flash的起始位址 0xf000 0xffe0 將近4k的flash memory timer a0 interrupt se...

Odoo公升級崩潰解決方案。

上線前備份資料庫 1 檢視並分析剖該原因。a,找不到模組或檢視不存在。解決方案 檢視是否將相應py檔案加入到 init 檔案中,或xml檔案加入到manifest data檔案中。b,找不到關聯模組。解決方案 這種一般要麼很簡單,要麼很複雜。先將關聯模組加入到manifest depends中,公升...