一種基于BootLoader的UV LED固化系統(tǒng)遠(yuǎn)程升級(jí)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及UV LED固化設(shè)備和工業(yè)控制等技術(shù)領(lǐng)域,尤其涉及一種基于BootLoader的UV LED固化系統(tǒng)遠(yuǎn)程升級(jí)方法。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的發(fā)展,各類印刷行業(yè)中的固化工藝正發(fā)生顛覆性的變化。傳統(tǒng)的長(zhǎng)時(shí)間、大風(fēng)速、高熱量的熱風(fēng)固化工藝由于其效率低、高耗能、不環(huán)保等致命性弱點(diǎn)已漸漸被行業(yè)所淘汰,紫外光固化技術(shù)一經(jīng)研制成功就得到了迅速普及與發(fā)展。在倡導(dǎo)節(jié)能環(huán)保的當(dāng)今,業(yè)界一直致力于改進(jìn),而紫外線二極管(Ultrav1let Light Emitting D1de,UVLED)技術(shù)的出現(xiàn)隨即引起一場(chǎng)轟動(dòng),UV LED固化技術(shù)開(kāi)始廣泛的應(yīng)用到各個(gè)行業(yè)中,例如印刷、PCB曝光等。
[0003]目前UVLED固化系統(tǒng)大都處在研發(fā)階段,現(xiàn)有的技術(shù)僅能制造出單一功能的設(shè)備。而市場(chǎng)對(duì)固化設(shè)備的功能、控制要求是多樣的,如點(diǎn)膠行業(yè)要求UV LED固化控制方式為腳踏控制,時(shí)間可由人工控制;大型寫真噴繪UV LED固化控制方式為噴繪機(jī)內(nèi)部PLC編程控制;醫(yī)療行業(yè)的UV LED殺菌控制由光源控制器直接控制等等。面對(duì)這些不同的要求,大部分廠商依靠設(shè)計(jì)各種不同的機(jī)型和建立龐大的售后服務(wù)網(wǎng)絡(luò)來(lái)滿足各個(gè)行業(yè)對(duì)UVLED的控制需求。這樣不但大大增加了產(chǎn)品的設(shè)計(jì)周期,同時(shí)使產(chǎn)品的附加成本大幅提高。針對(duì)這樣的現(xiàn)狀,提出了一種基于BootLoader的UV LED固化系統(tǒng)遠(yuǎn)程升級(jí)方法。
[0004]在嵌入式操作系統(tǒng)中,BootLoader是運(yùn)行在操作系統(tǒng)內(nèi)核之前的程序??梢猿跏蓟布O(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在通常的嵌入式系統(tǒng)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。一般的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。
[0005]遠(yuǎn)程升級(jí)技術(shù)是建立在嵌入式系統(tǒng)的IAP技術(shù)上的。IAP,全稱是“In-Applicat1n Programming”,中文解釋為“在程序中編程”。IAP是一種通過(guò)微處理器的通信接口(如USART,IIC, CAN,USB,以太網(wǎng)接口甚至是無(wú)線射頻通道)對(duì)正在運(yùn)行程序的微處理器進(jìn)行內(nèi)部程序更新的技術(shù)(完全有別于ICP或者ISP技術(shù))。
[0006]目前,基于BootLoader的系統(tǒng)遠(yuǎn)程升級(jí)的應(yīng)用研究在固化系統(tǒng)領(lǐng)域里并不多,而廠商大多采用傳統(tǒng)的技術(shù)人員現(xiàn)場(chǎng)調(diào)試、下載程序,有著效率和經(jīng)濟(jì)上的嚴(yán)重缺點(diǎn)。
【發(fā)明內(nèi)容】
[0007]為了克服現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提出了一種基于BootLoader的UV LED固化系統(tǒng)遠(yuǎn)程升級(jí)方法。本發(fā)明將Bootloader與IAP結(jié)合,通過(guò)上位機(jī)通訊或配置GPRS、WiF1、以太網(wǎng)卡等通信模塊完成的遠(yuǎn)程升級(jí)系統(tǒng),集成在一個(gè)UV LED控制設(shè)備上,可完成設(shè)備的遠(yuǎn)程調(diào)試、程序更新,大大減少了維護(hù)成本和維護(hù)周期。
[0008]本發(fā)明的技術(shù)方案為:一種基于BootLoader的UV LED固化系統(tǒng)遠(yuǎn)程升級(jí)方法,包括步驟:
[0009]步驟1,根據(jù)處理器模塊、光源驅(qū)動(dòng)模塊中的STM32F103R8T6的內(nèi)存架構(gòu)完成對(duì)內(nèi)存頁(yè)的分配,將FLASH分為四個(gè)區(qū),即BootLoader、用戶程序區(qū)、升級(jí)存儲(chǔ)區(qū)、參數(shù)保存區(qū),并初始化BootLoader ;
[0010]步驟2,BootLoader初始化結(jié)束后,判斷參數(shù)保存區(qū)中的升級(jí)標(biāo)志Updata_Flag,若升級(jí)標(biāo)志為OxFA,說(shuō)明接收到遠(yuǎn)程升級(jí)指令,接著判斷是處理器模塊的程序升級(jí)還是光源驅(qū)動(dòng)模塊的程序升級(jí);確定后相應(yīng)的模塊則由BootLoader引導(dǎo)程序跳轉(zhuǎn)進(jìn)入升級(jí)程序,程序跳轉(zhuǎn)指令符合STM32F10X系列的指令協(xié)議,升級(jí)確認(rèn)指令反饋給上位機(jī);
[0011]步驟3,STM32F103R8T6 微處理器調(diào)用 FLASH 擦除函數(shù) Flash_SectorErase O 按頁(yè)擦除FLASH中升級(jí)儲(chǔ)存區(qū)的相應(yīng)數(shù)據(jù),并注意將程序存儲(chǔ)的地址與FLASH進(jìn)行頁(yè)對(duì)齊,每頁(yè)占用 2048bit ;
[0012]步驟4,為了保證程序的安全,本發(fā)明引入抗誤碼環(huán)節(jié),上位機(jī)在對(duì)新程序BIN文件分包的環(huán)節(jié)會(huì)按照一定格式打包成每一個(gè)數(shù)據(jù)包;
[0013]步驟5,數(shù)據(jù)引導(dǎo)包接收完畢后,BootLoader中的升級(jí)程序會(huì)根據(jù)引導(dǎo)包的信息進(jìn)行數(shù)據(jù)包的接收,每包數(shù)據(jù)接收完畢后會(huì)在控制器端再次計(jì)算CRC,并校驗(yàn)是否與數(shù)據(jù)包中的CRC校驗(yàn)碼相同,若不相同則會(huì)重新申請(qǐng)本序號(hào)的數(shù)據(jù)包,并以5次申請(qǐng)為限,若5次都錯(cuò)誤則退出升級(jí);若相同則申請(qǐng)下一包的發(fā)送,直到所有的數(shù)據(jù)包發(fā)送完畢;
[0014]步驟6,為了加強(qiáng)系統(tǒng)的抗誤碼能力,除了對(duì)每個(gè)數(shù)據(jù)包的校驗(yàn),還會(huì)在最后對(duì)總數(shù)據(jù)包進(jìn)行校驗(yàn);
[0015]步驟7,確認(rèn)升級(jí)成功后,客戶端的BootLoader程序會(huì)將當(dāng)前的版本號(hào)保存進(jìn)FLASH的參數(shù)區(qū)中,并上傳給上位機(jī)存儲(chǔ),至此升級(jí)過(guò)程確認(rèn)成功。
[0016]進(jìn)一步,所述UV LED固化系統(tǒng)主要包含通信模塊、處理器模塊、光源驅(qū)動(dòng)模塊以及交互模塊,所述通信模塊通過(guò)RS485分別連接處理器模塊、光源驅(qū)動(dòng)模塊,所述處理器模塊用于控制整個(gè)系統(tǒng)的運(yùn)行,所述光源驅(qū)動(dòng)模塊用于控制電流的分配,所述交互模塊和處理器模塊相連,用于UV LED固化系統(tǒng)的顯示和手動(dòng)輸入。
[0017]進(jìn)一步,所述步驟I中,BootLoader是嵌入式系統(tǒng)在上電后執(zhí)行的第一段代碼,在完成初始化硬件設(shè)備、建立內(nèi)存空間映射后,再跳轉(zhuǎn)到操作系統(tǒng)映像或固化的嵌入式應(yīng)用程序的內(nèi)存空間,啟動(dòng)運(yùn)行系統(tǒng);用戶程序區(qū)是儲(chǔ)存需要運(yùn)行的用戶程序;升級(jí)存儲(chǔ)區(qū)是用來(lái)暫時(shí)存儲(chǔ)新的程序的二進(jìn)制文件,待校驗(yàn)完成后再寫入用戶程序區(qū);參數(shù)保存區(qū)內(nèi)定義一個(gè)升級(jí)狀態(tài)的結(jié)構(gòu)體,成員包括升級(jí)標(biāo)志,最近一次的升級(jí)信息,CRC校驗(yàn)碼。
[0018]進(jìn)一步,所述BootLoader以及用戶程序區(qū)的首地址,需要在KEIL中的Opt1nsfor target 中手動(dòng)設(shè)置為 0x8000000 和 0x8010000。
[0019]進(jìn)一步,所述步驟3在擦除的過(guò)程中,F(xiàn)lash_SectorErase()會(huì)返回每頁(yè)的擦除結(jié)果,將擦除的結(jié)果返回給上位機(jī);若擦除成功則開(kāi)始請(qǐng)求數(shù)據(jù)引導(dǎo)包,若不成功則由上位機(jī)詢問(wèn)是否結(jié)束升級(jí);數(shù)據(jù)引導(dǎo)包是上位機(jī)對(duì)新程序BIN文件解析并分包后生成的,引導(dǎo)包中包含程序包的總包數(shù)、總字節(jié)數(shù)、版本號(hào)及總CRC(16Bit M0DELBUS模式)校驗(yàn)碼。
[0020]進(jìn)一步,所述步驟4中具體過(guò)程為:每個(gè)數(shù)據(jù)包分別含有幀頭(lBit)、序號(hào)(IBit)、文件長(zhǎng)度(2Bit)、文件數(shù)據(jù)(1024BU以內(nèi))、校驗(yàn)碼(2Bit)、幀尾(IBit);幀頭和幀尾是根據(jù)通信協(xié)議固定的0x5A和0xA5 ;校驗(yàn)環(huán)節(jié)采用的是CRC (16Bit M0DELBUS模式),上位機(jī)在傳輸數(shù)據(jù)包前對(duì)每一數(shù)據(jù)包計(jì)算一次CRC并生成校驗(yàn)碼;STM32F103R8T6微處理器在每一包數(shù)據(jù)的接收后都會(huì)校驗(yàn)CRC,如果校驗(yàn)不成功則發(fā)出錯(cuò)誤指令,要求重新發(fā)送一遍當(dāng)前數(shù)據(jù)包。
[0021]進(jìn)一步,所述步驟6還包括:全部數(shù)據(jù)包傳輸完成后,上位機(jī)和STM32F103R8T6微處理器都會(huì)對(duì)這些儲(chǔ)存的CRC校驗(yàn)碼做一個(gè)總的CRC,判斷上位機(jī)與微處理器計(jì)算得到的總CRC校驗(yàn)碼是否一致,若不一致也會(huì)判斷為升級(jí)失敗。
[0022]本發(fā)明的有益效果為:
[0023]I)本發(fā)明將Bootloader與IAP結(jié)合,通過(guò)上位機(jī)通訊或配置GPRS、WiF1、以太網(wǎng)卡等通信模塊完成的遠(yuǎn)程升級(jí)系統(tǒng),集成在一個(gè)UV LED控制設(shè)備上,可完成設(shè)備的遠(yuǎn)程調(diào)試、程序更新。由于固化行業(yè)的特殊性,技術(shù)人員需要經(jīng)常根據(jù)不同的流水線調(diào)試固化設(shè)備的程序。本發(fā)明提出的性能可靠的遠(yuǎn)程升級(jí)方案,不再需要技術(shù)人員奔赴各個(gè)工業(yè)現(xiàn)場(chǎng)進(jìn)行程序的調(diào)試和升級(jí),極大程度上減少了維護(hù)成本和調(diào)試周期,帶來(lái)經(jīng)濟(jì)和時(shí)間的利益。
[0024]2)步驟I中創(chuàng)新地將STM32F103R8T6的FLASH分為四個(gè)區(qū),較傳統(tǒng)IAP升級(jí)多出了升級(jí)存儲(chǔ)區(qū)和參數(shù)保存區(qū)。升