1、前言
在線升級(IAP,In Application Programming)即在應(yīng)用編程,是用戶自己的程序在運行過程中對User Flash的部分區(qū)域進行擦寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留的通信口對產(chǎn)品中的固件程序進行更新升級,免去了裝置拆卸等不必要的操作。
隨著芯片制造工藝的發(fā)展及成本的降低,F(xiàn)lash存儲類產(chǎn)品的存儲空間在不斷擴大,成本也在不斷降低。在實際的工業(yè)產(chǎn)品中,軟件的在線升級作為一項越來越重要的功能,正在被應(yīng)用到越來越多的產(chǎn)品當(dāng)中。
2、在線升級功能基本原理
通常實現(xiàn)IAP功能時,即用戶程序運行中作自身的更新操作,需要在設(shè)計固件程序時編寫兩個完整的程序代碼。其在Flash中的存儲順序一般如圖所示。
第一個程序即BootLoader部分是IAP程序,它不需要執(zhí)行正常的功能操作,而只是通過某種特定的通信接口(如USB、USART、NET、SD等)接收程序或數(shù)據(jù),通過解密、判斷和校驗等操作后,對第二個程序代碼進行更新升級。
第二個程序才是真正的用戶主程序部分。
這兩部分代碼將會同時燒錄在芯片的片上Flash或這片外程序存儲器件中,當(dāng)芯片上電后,首先是BootLoader開始運行,它將在最短的時間內(nèi)進行如下操作:
1)檢查是否需要對第二部分代碼進行更新;
2)如果不需要更新則直接轉(zhuǎn)到4);
3)執(zhí)行在線升級操作;
4)跳轉(zhuǎn)到第二部分用戶主程序并開始執(zhí)行。
3、在配網(wǎng)產(chǎn)品中的應(yīng)用
眾所周知,DTU、FTU等配網(wǎng)產(chǎn)品在售后安裝調(diào)試過程中,難免會遇到客戶需要一些非標準的功能要求,這時候就需要售后服務(wù)人員對設(shè)備進行現(xiàn)場升級。如果這些裝置不具備在線升級的功能,對成百上千臺的設(shè)備進行現(xiàn)場升級是一件十分令人頭疼的事,尤其是一些設(shè)備已經(jīng)投入使用,斷電拆卸會造成更嚴重的損失。
而添加了為DTU、FTU等設(shè)備量身定做的在線升級程序后,這些問題就可以迎刃而解,售后服務(wù)人員只需要通過特定接口在PC上位機的控制下將新程序傳入設(shè)備,設(shè)備即可自動進行軟件升級,極大的降低了相關(guān)人員的工作量和可能對用戶造成損失的可能性。
基礎(chǔ)軟件開發(fā)部 馬龍飛