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