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

來源:互聯網
上載者:User

  這幾天測試寫好的IAP升級程式,真是一個糟,能將程式下載進去,但無法運行。

  經過各種測試,修改終於找到了問題的原因,現在大致總結下我在寫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程式不升級。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.