国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于IAP的ARM處理器固件升級(jí)設(shè)計(jì)

2018-10-21 10:52:55方彬浩
現(xiàn)代信息科技 2018年8期

摘 要:本文以ARM處理器為平臺(tái),以恩智浦公司的LPC2136為例,在In-Application Progamming(IAP)技術(shù)原理基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了嵌入式微處理器在線及遠(yuǎn)程升級(jí)技術(shù)。該技術(shù)摒棄了傳統(tǒng)升級(jí)前需要打開(kāi)設(shè)備跳線等繁瑣過(guò)程,并解決了升級(jí)過(guò)程意外中斷、傳輸誤碼等關(guān)鍵難點(diǎn)問(wèn)題。

關(guān)鍵詞:應(yīng)用編程;ARM;啟動(dòng)裝載程序

中圖分類(lèi)號(hào):TP368.11;TN06 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2018)08-0050-02

Abstract:This paper takes ARM processor as the platform,takes LPC2136 of NXP Company as an example,and designs and implements the online and remote upgrade technology of embedded microprocessor on the basis of the principle of In-Application Progamming(IAP)technology. The technology eliminates the tedious process of opening device jumpers before upgrading,and solves the key problems such as unexpected interruption during the upgrade process,transmission error code and so on.

Keywords:application programming;ARM;boot loader

0 引 言

目前嵌入式系統(tǒng)應(yīng)用相關(guān)技術(shù)取得了突飛猛進(jìn)的發(fā)展,嵌入式應(yīng)用已經(jīng)深入到工業(yè)控制、通信、消費(fèi)類(lèi)電子、信息家電等不同領(lǐng)域,同時(shí)ARM處理器芯片由于其突出的低功耗、高性能、應(yīng)用范圍廣泛等特點(diǎn)在嵌入式系統(tǒng)中得到廣泛的應(yīng)用。為了能夠滿足客戶(hù)需求的變化,為現(xiàn)有產(chǎn)品提供新的功能或修正原有系統(tǒng)存在的缺陷,從而延長(zhǎng)原有產(chǎn)品的生命周期,降低維護(hù)保養(yǎng)費(fèi)用,產(chǎn)品所設(shè)計(jì)的嵌入式系統(tǒng)支持固件升級(jí)是必不可少的。在很多嵌入式應(yīng)用場(chǎng)合,由于所使用的設(shè)備正在承擔(dān)關(guān)鍵的職能,不能因?yàn)楣碳?jí)過(guò)程而中斷該設(shè)備的使用。

目前的固件升級(jí)方法,往往需要打開(kāi)設(shè)備跳線等繁瑣過(guò)程,升級(jí)過(guò)程可能出現(xiàn)意外中斷、傳輸無(wú)碼等問(wèn)題,固件升級(jí)完畢,需要對(duì)固件系統(tǒng)進(jìn)行復(fù)位后,才能繼續(xù)工作,不能提供連續(xù)的服務(wù)。本文以恩智浦(NXP)公司的ARM7芯片LPC2136為例,提出基于ARM的固件升級(jí)方法,可以在系統(tǒng)運(yùn)行過(guò)程中完成固件升級(jí)、提供連續(xù)的服務(wù),具備良好的可靠性和擴(kuò)展性。

1 IAP基本原理

應(yīng)用編程(IAP)函數(shù)是固化在微處理器內(nèi)部Flash上的功能函數(shù)代碼,用戶(hù)程序可以直接通過(guò)調(diào)用這些代碼來(lái)對(duì)內(nèi)部Flash進(jìn)行擦除和編程操作。IAP技術(shù)主要應(yīng)用于嵌入式系統(tǒng)的數(shù)據(jù)存儲(chǔ)和在線升級(jí)過(guò)程,通??衫眯酒拇锌诮拥接?jì)算機(jī)的RS232口、通過(guò)現(xiàn)有的Internet、無(wú)線網(wǎng)絡(luò)或者其他通信方式很方便地實(shí)現(xiàn)在線以及遠(yuǎn)程升級(jí)和維護(hù)。LPC2136的IAP程序位于芯片的Boot Block中,芯片出廠時(shí)由廠家寫(xiě)入,不可修改。IAP程序是Thumb代碼,位于地址0x7FFFFFFO[1](重映射后地址)處。用戶(hù)可通過(guò)跳轉(zhuǎn)到該地址來(lái)調(diào)用相應(yīng)的IAP函數(shù),具體的調(diào)用方法可見(jiàn)文獻(xiàn)[2]中的相關(guān)章節(jié)。由于IAP代碼是Thumb代碼,要設(shè)置編譯器以支持從ARM指令集到Thumb指令集的轉(zhuǎn)換[3]。對(duì)于LPC2136的應(yīng)用編程來(lái)說(shuō),應(yīng)當(dāng)通過(guò)寄存器r0中的字指針指向存儲(chǔ)器(RAM)包含的命令代碼和參數(shù)來(lái)調(diào)用IAP程序。IAP命令的結(jié)果返回到寄存器r1所指向的返回表。用戶(hù)可通過(guò)傳遞寄存器r0和r1中的相同指針重用命令表來(lái)得到結(jié)果。參數(shù)表應(yīng)當(dāng)大到足夠保存所有的結(jié)果,以防結(jié)果的數(shù)目大于參數(shù)的數(shù)目。IAP參數(shù)傳遞如圖1所示,參數(shù)和結(jié)果的數(shù)目根據(jù)IAP命令有所不同。參數(shù)的最大數(shù)目為5,由“將RAM內(nèi)容復(fù)制到Flash”命令傳遞。結(jié)果的最大數(shù)目為2,“扇區(qū)查空”命令返回。命令處理程序在接收到一個(gè)未定義的命令時(shí)發(fā)送狀態(tài)代碼INVALID_COMMAND。

2 基于IAP的ARM片內(nèi)Flash的固件升級(jí)軟件設(shè)計(jì)

本文基于IAP的ARM片內(nèi)Flash的固件升級(jí)設(shè)計(jì),將ARM片內(nèi)Flash劃分為2個(gè)區(qū)域,其中一個(gè)區(qū)域用來(lái)正常運(yùn)行固件,另一個(gè)區(qū)域用來(lái)升級(jí)固件;獲取新版本的固件,存儲(chǔ)在外部存儲(chǔ)器存儲(chǔ)中,以及設(shè)置各用戶(hù)固件備份區(qū)的升級(jí)標(biāo)志;當(dāng)需要升級(jí)時(shí),將需升級(jí)的固件更新到用戶(hù)代碼分區(qū)2中;同時(shí)系統(tǒng)在升級(jí)過(guò)程中,執(zhí)行用戶(hù)代碼分區(qū)1中的固件,并不需要系統(tǒng)暫停去實(shí)現(xiàn)固件升級(jí),可以在系統(tǒng)運(yùn)行過(guò)程中完成固件升級(jí),可以提供連續(xù)的服務(wù),保證升級(jí)完成后系統(tǒng)中至少有一套可執(zhí)行的固件,對(duì)于升級(jí)后的固件的可執(zhí)行性和執(zhí)行結(jié)果能夠進(jìn)行可靠識(shí)別。

將ARM片內(nèi)Flash劃分為用戶(hù)代碼分區(qū)1和用戶(hù)代碼分區(qū)2,其中,用戶(hù)代碼分區(qū)1為低地址區(qū)域,用戶(hù)代碼分區(qū)2為高地址區(qū)域,例如,對(duì)于地址為1000的ARM片內(nèi)Flash,將地址從0至500劃分為戶(hù)代碼分區(qū)1,將地址從500至1000劃分為戶(hù)代碼分區(qū)2。為了進(jìn)一步確保固件升級(jí)數(shù)據(jù)的安全性,防止升級(jí)過(guò)程出現(xiàn)的意外中斷、傳輸數(shù)據(jù)錯(cuò)誤等情況,進(jìn)行固件升級(jí)信息完整性的判斷?;贏RM的固件升級(jí)流程,如圖2所示。具體的執(zhí)行操作步驟:(1)系統(tǒng)將ARM片內(nèi)Flash劃分為用戶(hù)代碼分區(qū)1和用戶(hù)代碼分區(qū)2。(2)將初始固件導(dǎo)入到用戶(hù)代碼分區(qū)1,系統(tǒng)執(zhí)行用戶(hù)代碼分區(qū)1中的固件。(3)當(dāng)升級(jí)ARM固件時(shí),系統(tǒng)獲取新版本的固件,并導(dǎo)入外部存儲(chǔ)器。在外部存儲(chǔ)器中,初始化外部存儲(chǔ)器時(shí),設(shè)置每個(gè)用戶(hù)固件備份區(qū)的升級(jí)標(biāo)志為不需升級(jí);當(dāng)有新版本的固件時(shí),將新版本的固件存儲(chǔ)在其中一個(gè)用戶(hù)固件備份區(qū),并設(shè)置該用戶(hù)固件備份區(qū)的升級(jí)標(biāo)志為需要升級(jí)。(4)系統(tǒng)檢測(cè)外部存儲(chǔ)器中的升級(jí)標(biāo)志,當(dāng)需要升級(jí)時(shí),獲取所需升級(jí)固件的長(zhǎng)度信息。(5)獲取所需升級(jí)固件的校驗(yàn)信息,判斷固件升級(jí)信息是否完整,若是,則進(jìn)行步驟(6);若否,則進(jìn)行步驟(7)。(6)將需升級(jí)的固件, 從用戶(hù)固件備份區(qū)更新到用戶(hù)代碼分區(qū)2。(7)繼續(xù)執(zhí)行用戶(hù)代碼分區(qū)1的固件。

為了提高系統(tǒng)固件運(yùn)行的安全性,如圖3所示固件升級(jí)后系統(tǒng)進(jìn)行重啟動(dòng),裝載程序(Boot Loader)并判斷固件的升級(jí)執(zhí)行情況,具體的操作步驟:(1)系統(tǒng)重啟動(dòng)。(2)系統(tǒng)判斷是否需要升級(jí)固件;若是,則進(jìn)入步驟(3);若否,則進(jìn)行步驟(4)。(3)按圖1所示的方法進(jìn)行固件升級(jí)。(4)判斷用戶(hù)代碼分區(qū)2的執(zhí)行成功標(biāo)志是否為真;若否,則進(jìn)行步驟(6);若是,則進(jìn)行步驟(5)。(5)試執(zhí)行用戶(hù)代碼分區(qū)2的固件,設(shè)置用戶(hù)代碼分區(qū)2的執(zhí)行成功標(biāo)志為假(即清除用戶(hù)代碼分區(qū)2執(zhí)行成功標(biāo)識(shí));判斷用戶(hù)代碼分區(qū)2的固件執(zhí)行是否成功,若是,則進(jìn)行步驟(7);若否,則進(jìn)行步驟(6)。(6)執(zhí)行用戶(hù)代碼分區(qū)1的固件。(7)正式執(zhí)行用戶(hù)代碼分區(qū)2的固件,并設(shè)置用戶(hù)代碼分區(qū)2的執(zhí)行成功標(biāo)志為真。正式執(zhí)行用戶(hù)代碼分區(qū)2的固件,由用戶(hù)代碼分區(qū)2的固件負(fù)責(zé)設(shè)置用戶(hù)代碼分區(qū)2的執(zhí)行成功標(biāo)志為真。

3 結(jié) 論

根據(jù)上述方法編寫(xiě)的固件升級(jí)程序,能夠穩(wěn)定地接收外部發(fā)來(lái)的新程序,并成功燒寫(xiě)進(jìn)片內(nèi)Flash區(qū),實(shí)現(xiàn)程序的更新;該設(shè)計(jì)可有效處理升級(jí)過(guò)程意外中斷、數(shù)據(jù)傳輸錯(cuò)誤等異常情況,確保軟件正常運(yùn)行。本文的設(shè)計(jì)以LPC2136為例實(shí)現(xiàn),對(duì)于具有IAP功能的其他公司的ARM7芯片的固件程序更新也有借鑒意義。

參考文獻(xiàn):

[1] 恩智浦半導(dǎo)體公司.LPC2131/2/4/6/8用戶(hù)手冊(cè)RV4.0 [Z].荷蘭:恩智浦半導(dǎo)體公司,2012.

[2] 周立功,張華.深入淺出ARM7—LPC213x/214x(上) [M].北京:北京航空航天大學(xué)出版社,2005.

作者簡(jiǎn)介:方彬浩(1978.10-),男,漢族,廣東人,碩士。研究方向:電子設(shè)備嵌入式技術(shù)研究。

蒙阴县| 兰考县| 永胜县| 兰坪| 镇原县| 横山县| 乌鲁木齐市| 剑川县| 滕州市| 清徐县| 新化县| 健康| 民县| 阆中市| 航空| 乐清市| 德格县| 浙江省| 武平县| 上高县| 蒙山县| 吴川市| 保康县| 呼和浩特市| 会昌县| 凤城市| 唐山市| 祁连县| 十堰市| 海宁市| 武山县| 渭南市| 远安县| 石河子市| 罗定市| 射阳县| 老河口市| 沧源| 巨鹿县| 宁夏| 关岭|