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

2022-07-15 03:03:10 字數 632 閱讀 3514

經過各種測試,修改終於找到了問題的原因,現在大致總結下我在寫iap程式的時候

遇到的問題和解決方案。首先要實現微控制器的iap公升級程式,我們要知道自己的ide如何能

將程式的函式或者變數的編譯位址固定,因為對於bootload程式,我們要固定它的位址,

還有從bootload跳轉到的程式執行的位址。

對於msp430,在測試中我程式復位時跳轉到rts430x.lib:boot.obj (.text:_isr:

_c_int00_noexit)這樣乙個啟動函式,之後執行_syatem_pre_int->_auto_init->main,

在_auto_init過程中,程式會執行memcpy函式(將.cinit段賦值到ram裡),就是初始化ram

中的全域性變數了。我的程式主要錯在這個過程裡,導致更新後問題不斷,還有對於.cinit段和

.const段,我們也要固定位址,因為memcpy函式初始化ram的位址被固定了,且bootload

是不能更新的,所以固定.cinit段後,我們memcopy操作位址就固定,不然當程式變化重新編譯

後可能就會事.cinit段的位址發生變化,導致ram初始化錯誤。

這樣修改後,程式大致就能自公升級了,程式只公升級執行部分的程式,對bootload程式不公升級。

MSP430遠端公升級解決方案

1.如下圖所示,如下圖所示,如下圖所示,flash rom為 32k 位元組 flash大小要根據你用的具體型號做調整 分為 64 個段,每個段分為512位元組,512位元組又細分為 8個塊 每塊64位元組。2.msp430f247每次最小可擦除1個段的空間,除操作是向該寫滿 0xff。3.32k位...

MSP430的比較器A

比較器a是乙個實現模擬電壓比較的外圍模組 比較器a的主要功能是指出兩個輸入電壓ca0和ca1的大小關係,然後設定輸出訊號caout的值。如果ca0 ca1 則 caout 1,否則caout 0。參與比較的兩個電壓ca0和ca1可以是外部或者內部基準電壓。任何組合都是可能的。比較器結構 比較器a一共...

使用MSP430注意的問題

i nclude 指要在編輯器設定目錄下,i nclude 指的是在當前工程目錄下。2.要呼叫另乙個檔案中的函式,要把這個函式檔案放到當前工程目錄下,並且在工程中新增此檔案。3.命名中不能有 比如 byq ee會認為是錯誤的,要用下劃線。4.用iar軟體 時,可以加入變數,如果是檢視i o資訊只需加...