LPC2214的IAP實(shí)現(xiàn)方案
引 言
IAP即在應(yīng)用中編程,對(duì)于嵌入式產(chǎn)品,指在不影響產(chǎn)品正常運(yùn)行的情況下實(shí)現(xiàn)應(yīng)用程序的更新。許多ARM芯片都提供該操作接口,相對(duì)于ISP(在系統(tǒng)編程)方式,具有方便靈活且不需要借助專(zhuān)用boot裝載程序或工具的特點(diǎn),而且在不影響嵌入式產(chǎn)品正常運(yùn)行的情況下即可完成應(yīng)用程序的動(dòng)態(tài)升級(jí)。在工業(yè)控制領(lǐng)域尤其是電力系統(tǒng)控制領(lǐng)域中,嵌入式產(chǎn)品必須保證連續(xù)、穩(wěn)定、可靠地運(yùn)行,由各種原因?qū)е碌膽?yīng)用程序的更新都必須在產(chǎn)品正常運(yùn)行過(guò)程中完成,因此許多用戶(hù)對(duì)相關(guān)產(chǎn)品的IAP功能都有明確的要求。
LPC2214是Philips公司推出的一款32位ARM7TDMI-S工業(yè)用微控制器。內(nèi)置25 6 KB高速Flash,128位寬度接口/加速器可以實(shí)現(xiàn)60 MHz的操作頻率;配置有2個(gè)UART接口、4個(gè)外部片選,支持8、16、32外部總線;片內(nèi)boot下載程序可以實(shí)現(xiàn)在系統(tǒng)編程(ISP)和在應(yīng)用中編程(IAP)。由于該芯片的內(nèi)置Flash速度很快,并且支持128位寬度接口/加速,應(yīng)用程序存儲(chǔ)并運(yùn)行在片內(nèi)Flash中可以獲得較快的執(zhí)行速度。
本文提供一種基于LPC2214的在應(yīng)用編程方案,可以實(shí)現(xiàn)應(yīng)用程序方便、可靠的升級(jí),以及當(dāng)?shù)鼐S護(hù)串口或遠(yuǎn)方GPRS方式的代碼更新。更新過(guò)程中,通信中斷、裝置異常復(fù)位、裝置停電等異常情況的發(fā)生,都不會(huì)導(dǎo)致因程序更新而造成的產(chǎn)品死機(jī)。
1 嵌入式產(chǎn)品應(yīng)用程序啟動(dòng)方式
在嵌入式產(chǎn)品中,應(yīng)用程序可以運(yùn)行在RAM或Flash中。對(duì)于中高端產(chǎn)品,由于要求較高的執(zhí)行速度和效率,一般采用Coldfire、x86、PowerPC、ARM9等CPU。此類(lèi)CPU一般都有DRAM控制器,支持DRAM操作,為了獲得較快的執(zhí)行速度,將應(yīng)用程序從代碼Flash中復(fù)制到DRAM的代碼空間后才開(kāi)始執(zhí)行。對(duì)于x86模式,應(yīng)用程序以文件方式保存在硬盤(pán)或電子盤(pán)上。在不同的嵌入式操作系統(tǒng)上,應(yīng)用程序在DRAM上的展開(kāi)方式存在一定差異,例如VxWorks系統(tǒng)可以完成對(duì)壓縮應(yīng)用程序的展開(kāi),而早期的PSOS操作系統(tǒng)則是直接展開(kāi),但其基本過(guò)程類(lèi)似。
對(duì)于低端產(chǎn)品,由于成本的嚴(yán)格控制,在滿足產(chǎn)品功能需求的前提下一般采用性?xún)r(jià)比較高的CPU,如8位、16位、低端ARM等。此類(lèi)CPU一般有內(nèi)部RAM、內(nèi)部Flash,由于采用內(nèi)部高速總線,內(nèi)部Flash具有較高的執(zhí)行速度。在外部RAM中運(yùn)行的產(chǎn)品,執(zhí)行速度較快,但是由于啟動(dòng)過(guò)程較為復(fù)雜,導(dǎo)致時(shí)間較長(zhǎng)(尤其是.x86系統(tǒng),啟動(dòng)過(guò)程可能需要半分鐘以上);而在Flash上直接運(yùn)行的產(chǎn)品,即使CPU具有較高的主頻,執(zhí)行速度也會(huì)受到Flash速度的限制,但是此類(lèi)產(chǎn)品啟動(dòng)較快,一般可以在幾秒鐘內(nèi)完成啟動(dòng)。
嵌入式產(chǎn)品應(yīng)用程序的啟動(dòng)方式?jīng)Q定了應(yīng)用程序動(dòng)態(tài)更新的方式。對(duì)于代碼在外部RAM執(zhí)行的情況,正常情況下更新Flash中的代碼不會(huì)影響系統(tǒng)正常運(yùn)行,實(shí)現(xiàn)起來(lái)較為簡(jiǎn)單。例如PC104模塊,應(yīng)用程序一般保存在電子盤(pán)上,以文件系統(tǒng)方式管理,應(yīng)用程序的在線更新非常方便。對(duì)于代碼在Flash上直接執(zhí)行的情況,由于應(yīng)用程序正常運(yùn)行過(guò)程中會(huì)不斷從Flash上讀取指令,給在線更新程序帶來(lái)一定困難,如果不借助一定手段或方法,很難保證應(yīng)用程序的可靠升級(jí)。
評(píng)論