基于iap的遠程升級設計

基于iap的遠程升級設計

ID:9410413

大?。?28.00 KB

頁數(shù):21頁

時間:2018-04-30

基于iap的遠程升級設計_第1頁
基于iap的遠程升級設計_第2頁
基于iap的遠程升級設計_第3頁
基于iap的遠程升級設計_第4頁
基于iap的遠程升級設計_第5頁
資源描述:

《基于iap的遠程升級設計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫

1、基于IAP的遠程升級設計寫在前面:三個周之前,我突然想寫一個遠程升級的程序。那個時候我只是大概知道IAP的意思是在應用編程,但怎么編,我還一無所知。我給自己定下一個個階段目標,從最基礎的代碼一點點寫起,解決一個又一個的問題。三個周之后,我用自己設計的方法實驗了50多次,無一例升級失敗。三個周來,遇到了很多的不解、困惑,甚至是想放棄,但我現(xiàn)在想說的是:很多未知的困難會擋在我們面前,我們會感覺毫無頭緒甚至覺得毫無出路忍不住要放棄,但多堅持一下,那些困難不但能煙消云散還能帶給我們進步。本設計是基于LPC

2、2114和KeilMDK(V4.10),但所有支持IAP的處理器都可借鑒本方案,重要的是思想,而不是用什么。0引言在應用編程(IAP)技術為系統(tǒng)在線升級和遠程升級提供了良好的解決方案,也為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來了極大的靈活性。通??衫眯酒拇锌诮拥接嬎銠C的RS232口、通過現(xiàn)有的Internet或、無線網(wǎng)絡或者其他通信方式很方便地實現(xiàn)在線以及遠程升級和維護。本文以NXP的LPC2114ARM微處理器為平臺,以KeilMDK為開發(fā)工具,闡述IAP的原理、Flash的劃分、分散加載機制、中

3、斷重映射以及在線升級的實現(xiàn)方案及其優(yōu)化。本方案使用多種校驗技術,最大限度的保障傳輸數(shù)據(jù)的正確性;使用bootloader機制,即使因意外事件(斷電,編程Flash失敗等)造成升級失敗后,程序也能返回到升級前的狀態(tài)。1LPC2114的Flash規(guī)劃1.1扇區(qū)描述LPC2114共有128KB片內(nèi)Flash,共分為16個扇區(qū),分別為0扇區(qū)~15扇區(qū),每個扇區(qū)為8KB存儲空間。其中第15扇區(qū)出廠時被固化為BootBlock區(qū),控制復位后的初始化操作,并提供實現(xiàn)Flash編程的方法。所以用戶可用的Flash

4、空間只有120KB。IAP程序固化于BootBlock中,IAP操作是以扇區(qū)為單位,并占用片內(nèi)RAM的高32字節(jié)。下表列出LPC2114器件所包含的扇區(qū)數(shù)和存儲器地址.表1.1LPC2114Flash器件中的扇區(qū)1.2Flash的扇區(qū)劃分本設計將Flash劃分為四個區(qū),扇區(qū)0存放跳轉程序和升級引導程序(Bootloader)。分站上電后執(zhí)行跳轉程序,跳轉到用戶程序處。用戶程序運行過程中,如果接收到升級指令,會從用戶程序跳轉到引導程序區(qū)(Bootloader),接收新程序數(shù)據(jù)包,完成Flash編程并

5、跳轉到新程序區(qū)執(zhí)行程序。扇區(qū)1~扇區(qū)7為程序存儲低區(qū);扇區(qū)8~扇區(qū)13為程序存儲高區(qū);扇區(qū)14存放當前程序運行區(qū)域標志,如果當前程序運行在高區(qū),該標志區(qū)的最低四個字節(jié)為0x00010000,如果當前程序運行在低區(qū),該標志區(qū)的最低四個字節(jié)為0x00008000。2IAP的原理與軟件設計2.1IAP的原理IAP函數(shù)是固化在微處理器內(nèi)部flash上的一些函數(shù)代碼,最終的用戶程序可以直接通過調(diào)用這些函數(shù)來對內(nèi)部flash進行擦除和編程操作。LPC2114微處理器的內(nèi)部flash有一個塊稱為BootBloc

6、k,位于flash的頂端,可供調(diào)用的IAP函數(shù)就位于該塊中。上電后BootBlock被映射到內(nèi)部地址空間的頂端,同樣IAP函數(shù)人口地址也被映射到地址0x7ffffff0處。用戶可通過跳轉到該地址來調(diào)用相應的lAP函數(shù)。2.2IAP命令對于在應用編程來說,應當通過寄存器r0中的字指針指向存儲器(RAM)包含的命令代碼和參數(shù)來調(diào)用IAP程序。IAP命令的結果返回到寄存器r1所指向的返回表。用戶可通過傳遞寄存器r0和r1中的相同指針重用命令表來得到結果。參數(shù)表應當大到足夠保存所有的結果以防結果的數(shù)目大于

7、參數(shù)的數(shù)目。參數(shù)傳遞見圖2-1。參數(shù)和結果的數(shù)目根據(jù)IAP命令而有所不同。參數(shù)的最大數(shù)目為5,由“將RAM內(nèi)容復制到Flash”命令傳遞。結果的最大數(shù)目為2,由“扇區(qū)查空”命令返回。命令處理程序在接收到一個未定義的命令時發(fā)送狀態(tài)代碼INVALID_COMMAND。IAP程序是thumb代碼,位于地址0x7FFFFFF0。圖2-1IAP的參數(shù)傳遞表2-1描述了IAP的命令。表2-1IAP命令匯總IAP命令2.3IAP編程函數(shù)接口IAP功能可用下面的C代碼來調(diào)用。定義IAP程序的入口地址。由于IAP地

8、址的第0位是1,因此,當程序計數(shù)器轉移到該地址時會引起Thumb指令集的變化。#defineIAP_LOCATION0x7ffffff1定義數(shù)據(jù)結構或指針,將IAP命令表和結果表傳遞給IAP函數(shù)unsignedlongcommand[5];unsignedlongresult[2];定義函數(shù)類型指針,函數(shù)包含2個參數(shù),無返回值。注意:IAP將函數(shù)結果和R1中的表格基址一同返回。typedefvoid(*IAP)(unsignedint[],unsignedint[]);IAPiap

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。