朱正偉, 張 南, 錢 露, 周謝益, 宋文浩, 黃曉竹
(常州大學 信息科學與工程學院,江蘇 常州 213164)
?
一種支持斷點續(xù)傳的UV LED固化系統(tǒng)升級方法的研究
朱正偉, 張南, 錢露, 周謝益, 宋文浩, 黃曉竹
(常州大學 信息科學與工程學院,江蘇 常州213164)
摘要:針對UV LED固化系統(tǒng)行業(yè)存在的調(diào)試、升級頻繁導致的維護及人員成本突出的問題,提出了一種支持斷點續(xù)傳的UV LED固化系統(tǒng)遠程升級方法;利用基于STM32系統(tǒng)的IAP技術配合改良的遠程升級程序代替?zhèn)鹘y(tǒng)J-LINK的調(diào)試燒寫,節(jié)約了調(diào)試人員奔赴現(xiàn)場調(diào)試的時間和成本;由于遠程傳輸必然有一定的誤碼率,而利用斷點續(xù)傳技術可以大幅縮減使用GPRS等作為遠程傳輸模塊時的流量消耗;考慮到固化系統(tǒng)的安全性,提出利用分包計算CRC和設置備用程序存儲區(qū)域的方法加強了升級系統(tǒng)的可靠性;實驗結果驗證了該方法應用于UV LED固化系統(tǒng)遠程調(diào)試升級的可行性及安全性,并且可以大幅縮減遠程通信的流量,這在一定程度上提高了升級系統(tǒng)的安全性。
關鍵詞:斷點續(xù)傳;遠程升級;STM32;IAP;UV LED
0引言
近年來,印刷固化工藝正發(fā)生顛覆性的變化。UV LED(ultraviolet light emitting diode) 固化技術的出現(xiàn)引起了一場轟動,并開始廣泛的應用到各個行業(yè)中[1]。市場對固化設備的功能、控制要求是變化多樣的。面對這些要求,大部分廠商依靠建立龐大的售后服務網(wǎng)絡來完成固化設備的程序調(diào)試和升級。這種方法大幅增加了人員、經(jīng)濟、時間等成本。而對于一些旗艦機型,雖配備有遠程升級的功能,但其使用的傳統(tǒng)IAP升級方式在無線傳輸過程中不可避免的會產(chǎn)生誤碼現(xiàn)象,而在升級過程中一旦發(fā)生錯誤就會導致升級中斷,再次請求升級的時中還會產(chǎn)生大量的GPRS流量[2]。就目前的GPRS工業(yè)流量卡的價格而言,這是一筆很大的經(jīng)濟損失。并且這樣的中斷也容易造成APP程序區(qū)域遭到破壞,大大降低了光固化系統(tǒng)的穩(wěn)定性,產(chǎn)生更大的損失。針對這樣的現(xiàn)狀,本文提出了一種支持斷點續(xù)傳的UV LED固化系統(tǒng)升級方法。
該方法以STM32F10ZET6系列單片機作為平臺,闡述UV LED固化系統(tǒng)的遠程升級程序及其斷點續(xù)傳的優(yōu)化方案。方案利用多數(shù)工業(yè)單片機都具有的IAP(在線編程)功能,在Bootloader中置入升級程序[3]。方案不僅解決了大型光固化系統(tǒng)一經(jīng)售出,維護和程序升級耗時耗力的難題,還引入了斷點續(xù)傳的概念,大幅降低了遠程升級過程中GPRS流量的使用。且斷點續(xù)傳的程序方案較傳統(tǒng)的升級方案相比,在單片機FLASH區(qū)域劃出一塊備份程序區(qū)域,將運行程序與新程序在FLASH中隔離開來,提高了整個升級系統(tǒng)的穩(wěn)定性。
1遠程升級原理
1.1IAP原理
IAP(in application programming),即在線編程,允許用戶程序在運行過程中對內(nèi)部Flash的指定區(qū)域進行再次燒寫,燒寫完成后復位芯片。由Bootloader引導,使新燒寫的程序運行[4]。其目的是為了在產(chǎn)品銷售后,可通過遠程模塊對產(chǎn)品的程序進行遠程調(diào)試或者升級。
1.2一般遠程升級方案
程序在單片機中是以二進制文件的形式儲存在單片機內(nèi)部的Flash空間中。單片機上電復位后,從中斷向量表起始地址進入Bootloader區(qū),由Bootloader程序控制程序指針跳轉到User APP區(qū)域。一般的在線編程原理是在用戶程序的運行過程中,接收到升級指令,程序指針重新指回Bootloader中IAP程序,控制擦除當前程序所在的Flash區(qū)域,將接收到的新的APP數(shù)據(jù)寫入到該Flash區(qū)域,完成后程序復位,經(jīng)Bootloader的引導,使新的APP得以運行[5]。通常情況下,這樣的升級過程是沒有問題的。但在實踐中,這樣的升級方法存在兩個重要的缺陷:
圖2 硬件框圖
1)一旦升級過程中出現(xiàn)無法預料的中斷,則會導致整個APP區(qū)域遭到破壞,使得程序無法正常運行。即使再次升級成功,也會浪費很長的時間。這是工業(yè)生產(chǎn)中所不允許的。
2)遠程數(shù)據(jù)傳輸過程中,會存在不可避免的誤碼現(xiàn)象。普通的IAP升級方案沒有考慮數(shù)據(jù)傳輸過程中的誤碼和傳輸中斷等現(xiàn)象的存在,一旦升級過程中碰到這樣的問題,會導致APP區(qū)域出現(xiàn)無法預估的錯誤,這樣的錯誤在工業(yè)應用中會導致非常嚴重的問題。一些經(jīng)過優(yōu)化的IAP升級方法會采用一些校驗算法,在傳輸結束會對整個APP程序進行校驗。這些經(jīng)過改良的升級方法雖然可以一定程度上保護系統(tǒng)的穩(wěn)定,但再次的重復升級會導致大量的GPRS流量的浪費,浪費了時間,也增加了成本。
1.3優(yōu)化遠程升級方案
引入斷點續(xù)傳的概念對升級方案進行優(yōu)化,可以很好地解決上述一般的遠程升級方案的不足。如圖1所示,該方法主要是在原有升級方案的基礎上重新對片內(nèi)Flash區(qū)域進行劃分。除了IAP必備的Bootloader區(qū)和UserAPP區(qū),另外劃分出升級參數(shù)保存區(qū)和APP備份區(qū)。升級數(shù)據(jù)是以包的形式存在的,每個經(jīng)過校驗的數(shù)據(jù)包會在該數(shù)據(jù)包傳輸完成后寫入APP備份區(qū),而升級過程中的狀態(tài)及數(shù)據(jù)包的參數(shù)則會實時地保存進升級參數(shù)保存區(qū)[6]。這樣在傳輸過程中,即使發(fā)生意外中斷或者傳輸錯誤,APP備份區(qū)的數(shù)據(jù)不可能影響到UserAPP區(qū),因此也不可能對程序的正常運行產(chǎn)生影響[7]。而參數(shù)保存區(qū)中的參數(shù)結構體,會保存發(fā)生錯誤前的升級狀態(tài)及數(shù)據(jù)包的信息,再次升級時經(jīng)過簡單的校驗,就會從繼續(xù)請求斷點發(fā)生時的數(shù)據(jù)包,而不是再請求傳輸整個數(shù)據(jù)包。
圖1 兩種方案Flash規(guī)劃圖
2系統(tǒng)分析
2.1系統(tǒng)總體框架
升級系統(tǒng)由上位機、無線設備及終端設備組成。如圖2所示,作為終端設備的UV LED固化設備,主要包含以下4個模塊:處理器模塊、通訊模塊、光源驅動模塊以及交互模塊。處理器模塊使用Cortex-M3架構的STM32F103ZET6芯片。利用基于BootLoader的IAP結合上位機或可選的通信模塊來完成UV LED固化系統(tǒng)遠程升級。上位機通過RS485總線與無線設備連接,UV LED固化設備中的STM32芯片和無線模塊通過RS485總線相連。當需要升級程序時,上位機通過485總線接口給無線模塊傳輸指令,無線設備收到指令后通過無線網(wǎng)絡傳輸給UV LED固化設備的與主控芯片STM32對接的通信模塊。STM32芯片接收到來自上位機的升級指令后開始響應上位機的一系列升級指令和程序傳輸,最終完成程序的升級。
2.2使用STM32F103ZET6芯片的可行性分析
STM32F103ZET6是一款基于 Cortex-M3核心的處理器。擁有512K 片內(nèi)FLASH及64K片內(nèi)RAM。其512K的FLASH存儲容量可以滿足遠程升級中建立斷點續(xù)傳所必須的備份儲存容量要求,且其片內(nèi)FLASH 支持在線編程(IAP)。通訊接口方面,STM32F103ZET6擁有SPI、I2S 、I2C、USART、USB OTG、 CAN、SDIO等接口,幾乎可以滿足所有的遠程通信需求,為在線升級提供了豐富的接口選擇。就遠程升級的可行性而言,常見微處理器中都包含BootLoader。STM32F103ZET6微處理器支持IAP技術的首要前提是,它是基于可重復編程閃存的微處理器。此外STM32微處理器擁有在數(shù)量上、種類上都非常豐富的外設通信接口,因此在STM32上實現(xiàn)基于BootLoader的IAP、完成遠程升級是完全可行的。
2.3方案流程
該方案流程如圖3所示。
圖3 流程圖
3方案設計
3.1上位機與UV LED固化系統(tǒng)升級交互的設計
升級程序啟動后,上位機與終端的交互流程如下:
1)啟動上位機,通過UART轉GPRS無線模塊建立與終端的數(shù)據(jù)連接;
2)獲取終端軟件版本號,判斷是否需要升級,若需要則啟動升級;
3)上位機請求建立升級過程,終端記錄升級標志到FLASH的參數(shù)保存區(qū),程序跳轉到Bootloader;
4)終端執(zhí)行FLASH擦除程序,擦除升級備份區(qū)的文件,并將結果返回給上位機;
5)若擦除成功,終端向上位機請求引導幀,根據(jù)參數(shù)保存區(qū)中保存的上次升級信息,判斷本次升級為全新升級,若是則執(zhí)行6),若需要斷點續(xù)傳,則由上位機根據(jù)上次升級信息繼續(xù)傳輸數(shù)據(jù)包;
6)引導幀發(fā)送完畢后,開始按序號傳輸數(shù)據(jù)幀;每幀數(shù)據(jù)內(nèi)都包含本幀的校驗信息,若校驗失敗,重新請求本幀數(shù)據(jù),嘗試3次后仍錯誤則退出升級。
7)所有數(shù)據(jù)幀傳輸完成后,終端請求文件校驗幀,同時終端會對已接受到的文件進行校驗,生成校驗碼,與上位機傳輸?shù)男r灤a做匹配,若成功則執(zhí)行8),失敗則放棄本次升級。
8)由上位機控制關閉GPRS連接,終端置升級成功標志到參數(shù)保存區(qū),MCU復位;
9)Bootloader判斷是否有升級成功的標志,若有則加載新的程序,若無則運行源程序;
10)上位機獲取終端程序版本號,若更新正確則判斷本次升級成功。
3.2Bootloader的設計
Bootload程序是MCU上電后首先運行的程序,下載時需要在Keil的Options選項中設置IROM1的起始地址為0x08000000。Bootload在完成軟硬件初始化后,讀出存儲在FLASH的參數(shù)保存區(qū)中的由用戶程序標記的升級標志。若標志位為0x50,則說明沒有升級需要,執(zhí)行程序跳轉指令,運行用戶程序。若標記為0x05,則調(diào)用升級程序,引導完成升級后的MCU復位,由Bootloader引導運行新程序。其中,難點在于跳轉程序與FLASH的編程。
在完成跳轉程序時,有兩個注意點:1)在設置好跳轉地址之前,需要調(diào)用庫函數(shù) DisableAllNVIC(),關閉所有的中斷,防止在跳轉過程中出現(xiàn)中斷,導致無法預估的結果;2)在跳轉之前,不僅需要設置跳轉的地址,還需要根據(jù)用戶程序的首地址初始化用戶程序的堆棧,這里使用庫函數(shù)__set_MSP(*(__IO uint32_t*) ARR)來實現(xiàn)。
FLASH編程的設計有4個注意點:1)在對FLASH編程之前,需要關閉所有中斷,通過調(diào)用__disable_irq()函數(shù)來實現(xiàn);2)寫入FLASH之前,需要調(diào)用庫函數(shù)FLASH_Unlock()來關閉MCU的FLASH寫保護;3)對MCU的FLASH擦除是塊擦除,最小擦除單位為2K,因此分區(qū)的大小需要是2K的倍數(shù),否則會導致擦除失敗,調(diào)用的是庫函數(shù)Flash_SectorErase(); 4)對FLASH寫入的最小單位是字,是32位的,不滿32位的要補充,調(diào)用的庫函數(shù)是FLASH_ProgramWord()。
3.3斷點續(xù)傳機制
斷點續(xù)傳機制,指的就是從上一次傳輸中斷的節(jié)點處繼續(xù)數(shù)據(jù)的傳輸。該機制可以避免在升級中出現(xiàn)意外中斷導致的升級終止,大大提高了升級效率,減少了傳輸時的流量。要完成這一功能,就需要中斷系統(tǒng)記錄中斷節(jié)點的位置。因此要求傳輸方將程序固件分幀傳輸,并對每幀按序編號。根據(jù)分幀按序傳輸?shù)囊?,本方案設計了引導幀和數(shù)據(jù)幀。引導幀負責告知固件的分幀信息,數(shù)據(jù)幀除傳輸數(shù)據(jù)外,還需要向終端告知當前的數(shù)據(jù)幀編號以及校驗信息。終端在每一幀接受完畢后,都會將當前的數(shù)據(jù)狀態(tài)保存進Flash中的參數(shù)保存區(qū)。升級恢復后,Bootloader引導讀出Flash參數(shù)保存區(qū)的升級標志、配置參數(shù)以及上次中斷處的數(shù)據(jù)幀序號,從而保證升級過程的繼續(xù)完成。
3.3.1引導幀的設計
表1 引導幀成員說明
引導幀主要由幀頭、功能號、寄存器地址、文件總幀數(shù)、文件大小、校驗碼、幀尾組成。其中幀頭、功能號、寄存器地址、校驗碼和幀尾為通信幀的固定格式。幀頭和幀尾分別是0x5A和0xA5;功能號主要用于區(qū)分該幀的讀寫狀態(tài);寄存器地址用作MCU判斷當前幀的對應操作;校驗碼對本幀的所有數(shù)據(jù)做16位MODELBUS協(xié)議的CRC校驗,得到2 Bit的十六進制碼。文件總幀數(shù)是上位機解析升級文件后得到的總數(shù),每幀最多包含1 Kbyte的數(shù)據(jù),文件末尾剩余數(shù)據(jù)(不足1 Kbyte)按1 Kbyte算,不足的byte用0xFF填充。文件大小為文件的總byte數(shù)。
3.3.2數(shù)據(jù)幀的設計
表2 數(shù)據(jù)幀成員說明
除固定格式的數(shù)據(jù)外,數(shù)據(jù)幀主要參數(shù)為序號、本幀文件長度、文件數(shù)據(jù)等。序號為本幀的編號,這個編號在終端接收后會保存到升級狀態(tài)的結構體中,是實現(xiàn)斷點續(xù)傳的關鍵;本幀文件長度則是本幀中屬于程序數(shù)據(jù)的大小,一般為1 Kbyte,在文件的末尾不滿1 Kbyte的部分指示該幀的有效數(shù)據(jù)大??;文件數(shù)據(jù)是升級程序文件的有效二進制數(shù)據(jù)。
3.4UV LED綜合控制系統(tǒng)上位機的設計
Visual Basic提供大量API接口和控件,具有模塊化和開發(fā)速度快等特點,故采用Visual Basic語言進行上位機編寫。上位機具有UV LED固化機監(jiān)控、自動設置串口、解析分包升級文件、生成CRC校驗碼、按數(shù)據(jù)幀格式發(fā)送升級文件、讀取版本號等功能。當需要升級時,將無線傳輸設備的RS232接口連接到電腦,上位機會自動識別端口號,打開在線升級程序文件后開始一鍵升級,先發(fā)送引導幀再發(fā)送數(shù)據(jù)幀,發(fā)送的狀態(tài)及下位機的應答都會實時呈現(xiàn)在狀態(tài)框中。升級成功后,上位機會自動讀取一次當前下位機的版本號,以進一步校驗升級是否成功。上位機界面如圖4所示。
圖4 上位機運行圖
4實驗結果與分析
本系統(tǒng)實現(xiàn)了支持斷點續(xù)傳的系統(tǒng)遠程升級的過程。下面根據(jù)采用和未采用斷點續(xù)傳機制等兩種方式對比進行測試。測試所使用的平臺是帶有GPRS模塊的UV LED系統(tǒng)控制板和裝有上位機軟件和SIM900 通信模塊的PC機(CPU主頻為四核2.5 GHz,內(nèi)存為4 GB,Win7系統(tǒng))。測試升級文件類型為.bin,大小為33 832Byte,測試次數(shù)為50次。為了減少測試的誤差,本測試設計使用上位機軟件計時,按下升級按鈕開始計時間、流量,PC接收到下位機回送升級成功標志停止計時間、流量;計時停止后,將時間值傳送給上位機(使用VB平臺制作)保存。整個升級過程均采用軟件計時,減少人工計時的誤差。
表3 兩種方案的測試數(shù)據(jù)
由表3可以看出,在正常環(huán)境下,是否采用斷點續(xù)傳機制,對升級的時間及流量消耗幾乎沒有影響。但當傳輸環(huán)境越來越惡劣,斷點續(xù)傳機制就會發(fā)揮較大的作用。應用最廣泛的工業(yè)環(huán)境下,此時的干擾主要是工業(yè)的惡劣電磁環(huán)境以及線纜超長而導致的傳輸問題,在50次的實驗中,經(jīng)常會發(fā)生數(shù)據(jù)誤碼,在普通的升級機制下,一旦出現(xiàn)錯誤就重新請求升級,這樣雖然防范了數(shù)據(jù)誤碼導致的系統(tǒng)嚴重錯誤,但是會大大提高升級時間和GPRS流量,且升級包越大,誤碼越多。
而引入了斷點續(xù)傳機制的升級方案,一旦傳輸出現(xiàn)錯誤(或數(shù)據(jù)校驗失敗),則會記錄當前數(shù)據(jù)幀的序號并重新請求該幀數(shù)據(jù),大大減少了升級的時間及寶貴的流量消耗,并有效減少對FLASH的反復擦寫,提高了機器壽命。
選取UV LED固話系統(tǒng)最常應用的工業(yè)環(huán)境下,50次測試所得到兩種方案的流量消耗對比如圖5所示。其中采用斷點續(xù)傳機制的流量消耗幾乎接近正常環(huán)境下的流量消耗,且非常穩(wěn)定。而未采用斷點續(xù)傳機制的方案,則會由于每次測試出現(xiàn)的誤碼次數(shù)與時間節(jié)點的不同,而導致每次升級所消耗的流量有很大的浮動。
圖5 兩種方案的數(shù)據(jù)對比圖
5結束語
由于固化行業(yè)的特殊性,技術人員需要經(jīng)常根據(jù)不同的流水線調(diào)試固化設備的程序。本文提出了性能可靠的遠程升級方案,不再需要技術人員奔赴各個工業(yè)現(xiàn)場進行程序的調(diào)試和升級,極大程度上減少了維護成本和調(diào)試周期,帶來經(jīng)濟和時間的利益。本文通過實際應用證明支持斷點續(xù)傳的UV LED固化系統(tǒng)升級方法經(jīng)濟效益明顯且安全可靠,并對類似的工業(yè)嵌入式系統(tǒng)的程序升級具有一定的通用的意義。
參考文獻:
[1] 孫文博. UV-LED 點光源照射器驅動電源的研究[D]. 成都:電子科技大學, 2012.
[2] 張萌. 基于 ISP/IAP 和 CAN 總線的遠程升級系統(tǒng)研制[D]. 青島:中國海洋大學, 2013.
[3] 姜曉梅, 李祥和, 任朝榮, 等. 基于 ARM 的 IAP 在線及遠程升級技術[J]. 計算機應用, 2008, 28(2): 519-521.
[4] 周天兵, 劉國忠. 單片機程序遠程升級技術[J]. 儀表技術, 2011, 9: 010.
[5] 唐湘, 孫益強, 秦霆鎬. 酒店客房控制系統(tǒng)固件遠程升級的設計與實現(xiàn)[J]. 儀表技術, 2015, 1: 012.
[6] 陳艷, 劉宏立, 劉述鋼. 一種電力線載波路由遠程升級方法[J]. 計算機科學, 2013, 40(10): 87-91.
[7] 常賽. 基于專用物聯(lián)網(wǎng)的遠程更新技術研究與應用[D]. 蘇州:蘇州大學, 2011.
Research on Method of Upgrade UV LED Curing System Supported Resume Broken Downloads
Zhu Zhengwei,Zhang Nan,Qian Lu,Zhou Xieyi,Song Wenhao,Huang Xiaozhu
(College of Information Science and Engingeering, Changzhou University, Changzhou213164,China)
Abstract:UV LED curing system for the industry, there is troublesome issues, such as: commissioning, upgrade and maintenance and personnel costs frequently lead to propose a support resuming of UV LED curing system upgrade. The use of technology-based STM32 IAP system with improved remote upgrade program to replace traditional J-LINK debug programming, commissioning personnel rushed to save the time and cost of on-site commissioning. Because the remote transmission must have a certain error rate, significantly reduced the use of HTTP to use technology such as GPRS remote transmission module as traffic consumption; take into account the safety of the cured system, proposed the use of subcontractors and set an alternate program to calculate CRC store a regional approach to strengthen the reliability of the system upgrade. Experimental results show the method is applied to UV LED curing system for remote debugging upgrade the feasibility and safety, and that this method can significantly reduce the flow of telecommunications, and to some extent, improve the security upgrade of the system.
Keywords:resume broken downloads; remote upgrade; STM32; IAP; UV LED
文章編號:1671-4598(2016)02-0209-04
DOI:10.16526/j.cnki.11-4762/tp.2016.02.058
中圖分類號:TP391; TP309
文獻標識碼:A
作者簡介:朱正偉(1963-),男,博士,教授,主要從事嵌入式方向的研究。
收稿日期:2015-08-17;修回日期:2015-09-23。
基金名稱:國家中小企業(yè)創(chuàng)新基金項目(09C26223203878)。