基于IAP和Keil MDK的遠(yuǎn)程升級(jí)設(shè)計(jì)
CC 是效驗(yàn)和域,表示記錄的效驗(yàn)和,計(jì)算方法是將本條記錄冒號(hào)開(kāi)始的所有字母(包括校驗(yàn)字節(jié))相加之后等于0x00。
本文引用地址:http://cafeforensic.com/article/201612/341760.htm一個(gè)Intel HEX文件必須有一個(gè)文件結(jié)束記錄,這個(gè)記錄的類(lèi)型域必須是01,
一個(gè)EOF記錄總是這樣:
:00000001FF
00是記錄中數(shù)據(jù)字節(jié)的數(shù)目
0000這個(gè)地址對(duì)于EOF記錄來(lái)說(shuō)無(wú)任何意義
01記錄類(lèi)型是01(文件結(jié)束記錄標(biāo)示)
4.2 對(duì)上位機(jī)軟件的要求
? 上位機(jī)具備解析重組Intel HEX文件的能力.
? 上位機(jī)軟件應(yīng)能識(shí)別分站發(fā)來(lái)的應(yīng)答信號(hào)并做出正確的響應(yīng)。
? 上位機(jī)應(yīng)能夠檢驗(yàn)代碼的完整性。
? 上位機(jī)能根據(jù)分站發(fā)出的程序所在高區(qū)或低區(qū)標(biāo)志,自動(dòng)判別當(dāng)前升級(jí)程序是否和升級(jí)區(qū)域相對(duì)應(yīng)。
5 實(shí)驗(yàn)數(shù)據(jù)
為驗(yàn)證升級(jí)程序的穩(wěn)定性,對(duì)分站進(jìn)行重上電、復(fù)位、遠(yuǎn)程升級(jí)等一些列實(shí)驗(yàn),實(shí)驗(yàn)記錄及如下。
1. 測(cè)試程序跳轉(zhuǎn)功能.程序在上電或復(fù)位之后,應(yīng)順利跳轉(zhuǎn)到用戶(hù)程序。
2. 測(cè)試Bootloader(一)。上位機(jī)發(fā)送升級(jí)命令但不發(fā)送升級(jí)數(shù)據(jù)包,程序應(yīng)能進(jìn)入Bootloader并發(fā)送當(dāng)前程序所在的區(qū)域(高區(qū)或者低區(qū)代號(hào)),10S后程序應(yīng)跳轉(zhuǎn)到用戶(hù)程序。
3.測(cè)試Bootloader(二)。上位機(jī)發(fā)送升級(jí)命令,發(fā)送升級(jí)數(shù)據(jù)包,但發(fā)送到一半時(shí)停止發(fā)送。程序在10S后應(yīng)能跳轉(zhuǎn)到用戶(hù)程序區(qū)。
4.測(cè)試Bootloader(三)。上位機(jī)發(fā)送升級(jí)命令,發(fā)送升級(jí)數(shù)據(jù)包,但發(fā)送中途給分站斷電,重新上電后,應(yīng)還能執(zhí)行原來(lái)的程序。
5.測(cè)試Bootloader(四)。上位機(jī)發(fā)送升級(jí)命令,發(fā)送完成升級(jí)數(shù)據(jù)包。程序應(yīng)能接收升級(jí)數(shù)據(jù)包并編程Flash,完成用戶(hù)程序的更新,更新用戶(hù)程序后,跳轉(zhuǎn)到新的用戶(hù)程序。
6.總結(jié)
本次升級(jí)方案雖然是以L(fǎng)PC2114為基礎(chǔ)的,但任何具有IAP功能的單片機(jī)、ARM都可使用本設(shè)計(jì)方案。
設(shè)計(jì)的重點(diǎn)在于如何保證升級(jí)的安全性,分站采取了一些列校驗(yàn)、超時(shí)處理以及看門(mén)狗等措施,一是保障升級(jí)數(shù)據(jù)包的正確傳送,二是即使升級(jí)失敗也能退回原升級(jí)程序。上位機(jī)的校驗(yàn)措施需相關(guān)部門(mén)配合。從實(shí)驗(yàn)數(shù)據(jù)來(lái)看,進(jìn)行了幾十次的遠(yuǎn)程升級(jí),未有一例失敗,安全性能可以得到保證。
7.參考文獻(xiàn):
1. 周立功等 ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)(第二版) 北京航空航天大學(xué)出版社 2005
2. LPC2114/2124/2212/2214 使用指南.Pdf 廣州周立功單片機(jī)發(fā)展有限公司
3. 韋文祥 朱志杰 車(chē)琳娜 郭寶泉 基于LPC21 24的一個(gè)遠(yuǎn)程系統(tǒng)軟件升級(jí)方案 單片機(jī)與嵌入式系統(tǒng)應(yīng)用 2006第三期
4. 許文杰 丁志岡 張 泉基于ARM 處理器的IAP設(shè)計(jì)及應(yīng)用 計(jì)算機(jī)應(yīng)用與軟件 2009第3期
5. 姜曉梅 李祥和 任朝榮 姚明基于ARM的IAP在線(xiàn)及遠(yuǎn)程升級(jí)技術(shù) 計(jì)算機(jī)應(yīng)用 2008第二期
6. RealView 編譯工具-編譯器參考指南.pdf ARM Limited 2009.3
7. RealView Compilation Tools(連接器用戶(hù)指南).pdf ARM Limited 2009.3
8. RealView 編譯工具-編譯器用戶(hù)指南.pdf ARM Limited 2009.1
9. RealView 編譯工具-鏈接器參考指南.pdf ARM Limited 2008.9
10. Intel HEX文件格式
11. LPC2000 secondary bootloader for code update using IAP NXP Semiconductors 2009.5.26
后記:分散加載文件,軟中斷,中斷向量表重映射,變量對(duì)齊,精確定位變量等等這些東西的詳細(xì)講解在我的參考資料上都能找的到,發(fā)現(xiàn)問(wèn)題并能解決它,是件很美妙的事情,所以我沒(méi)打算也沒(méi)時(shí)間詳細(xì)寫(xiě)這些東西的用法。
需要說(shuō)的是,我在設(shè)計(jì)的時(shí)候走了一個(gè)彎路,現(xiàn)在想想還覺(jué)得挺可笑。我以為上面講的東西要在一個(gè)工程里面實(shí)現(xiàn)才好,這樣才能生成一個(gè).hex可燒錄文件,可以一次性的將用戶(hù)程序、Bootloader程序燒寫(xiě)進(jìn)處理器,我想彎了。正確的做法是建四個(gè)工程:跳轉(zhuǎn)程序、Bootloader、用戶(hù)低區(qū)程序、用戶(hù)高區(qū)程序。如果你懂了.hex文件的格式,就完全可以將跳轉(zhuǎn)程序、Bootloader和用戶(hù)低區(qū)程序(或者跳轉(zhuǎn)程序、Bootloader和用戶(hù)高區(qū)程序)這三個(gè)工程生成的.hex文件合成一個(gè)。靈活多變的處理問(wèn)題,這是我最大的收獲。
后記的后記: 很多同學(xué)看完后都希望得到源碼,這種心情我是理解的,最初的時(shí)候我也希望有一套別人的源碼的,畢竟這樣可以進(jìn)行的快點(diǎn).所以我將一個(gè)遠(yuǎn)程升級(jí)的例子放在下面的鏈接里,大家想看看的就去下載吧,這個(gè)不是我產(chǎn)品中用到的,因?yàn)槲业拇a畢竟是含有公司的一些信息.如果我最近有時(shí)間,會(huì)把其中的英文文檔翻譯一下的。
評(píng)論