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