本發(fā)明涉及在線更新技術(shù),尤其涉及一種在線更新單片機(jī)程序的方法及系統(tǒng)。
背景技術(shù):
MSP430系列單片機(jī)是美國德州儀器(TI,Texas Instruments)公司設(shè)計和生產(chǎn)的低功耗、內(nèi)載閃存(Flash)的16位單片機(jī)。該系列單片機(jī)可以通過以下幾種方式進(jìn)行程序燒錄:(1)使用TI提供的聯(lián)合測試行動組織(JTAG,Joint Test Action Group)工具進(jìn)行在線燒錄;(2)使用JTAG調(diào)試器進(jìn)行在線燒錄;(3)使用專用芯片燒錄器對裸片進(jìn)行離線燒錄。
可見,現(xiàn)有技術(shù)主要是通過JTAG接口對MSP430系列單片機(jī)進(jìn)行在線燒錄,或者使用芯片燒錄器對裸片進(jìn)行燒錄后貼裝。以上幾種芯片燒錄方式,對在使用狀態(tài)中的產(chǎn)品實施程序更新有諸多不便,如工作環(huán)境偏遠(yuǎn)而燒錄設(shè)備不便于攜帶、上述燒錄方式無法滿足大量產(chǎn)品燒錄需求等。另外,于部分情況下,應(yīng)用上述燒錄方式需要將整個產(chǎn)品進(jìn)行重新上、下電操作,而這對于使用中的產(chǎn)品系統(tǒng)是不允許的。
技術(shù)實現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明提供一種在線更新單片機(jī)程序的方法及系統(tǒng),能夠解決現(xiàn)有技術(shù)中不便于對使用狀態(tài)的MSP430系列單片機(jī)程序進(jìn)行在線更新的問題。
為了達(dá)到上述技術(shù)目的,本發(fā)明提供一種在線更新單片機(jī)程序的方法,包括:獲取程序更新數(shù)據(jù);通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲;將存儲在片外存儲器的程序 更新數(shù)據(jù)更新至所述單片機(jī)。
進(jìn)一步地,所述需要更新運(yùn)行程序的單片機(jī)是指:若所述程序更新數(shù)據(jù)對應(yīng)的版本高于單片機(jī)的運(yùn)行程序的版本,則所述單片機(jī)的運(yùn)行程序需要更新。
進(jìn)一步地,所述獲取程序更新數(shù)據(jù)之后,所述通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲之前,上述方法還包括:根據(jù)所述程序更新數(shù)據(jù)獲取數(shù)據(jù)參數(shù)。
進(jìn)一步地,所述通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲之后,所述將存儲在片外存儲器的程序更新數(shù)據(jù)更新至所述單片機(jī)之前,上述方法還包括:根據(jù)所述數(shù)據(jù)參數(shù)判斷存儲在片外存儲器的程序更新數(shù)據(jù)是否完整有效,若完整有效,則進(jìn)行將存儲在片外存儲器的程序更新數(shù)據(jù)更新至所述單片機(jī)的步驟。
進(jìn)一步地,所述通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器之后,所述將存儲在片外存儲器的程序更新數(shù)據(jù)更新至所述單片機(jī)之前,上述方法還包括:發(fā)送復(fù)位命令至所述單片機(jī),使得所述單片機(jī)重啟。
本發(fā)明還提供一種在線更新單片機(jī)程序的系統(tǒng),包括:手持模塊,用于獲取程序更新數(shù)據(jù);主控模塊,用于通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲;線卡模塊,用于將存儲在片存儲器的程序更新數(shù)據(jù)更新至所述單片機(jī)。
進(jìn)一步地,所述需要更新運(yùn)行程序的單片機(jī)是指:若所述程序更新數(shù)據(jù)對應(yīng)的版本高于單片機(jī)的運(yùn)行程序的版本,則所述單片機(jī)的運(yùn)行程序需要更新。
進(jìn)一步地,所述手持模塊,還用于根據(jù)所述程序更新數(shù)據(jù)獲取數(shù)據(jù)參數(shù)。
進(jìn)一步地,所述線卡模塊,還用于根據(jù)所述數(shù)據(jù)參數(shù)判斷存儲在片外存儲器的程序更新數(shù)據(jù)是否完整有效,若完整有效,則將存儲在片外存儲器的程序更新數(shù)據(jù)更新至所述單片機(jī)。
進(jìn)一步地,所述主控模塊,還用于在通過MODBUS總線將程序更新數(shù) 據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器之后,發(fā)送復(fù)位命令至所述單片機(jī),使得所述單片機(jī)重啟。
在本發(fā)明中,獲取程序更新數(shù)據(jù);通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲;將存儲在片外存儲器的程序更新數(shù)據(jù)更新至單片機(jī)。如此,通過本發(fā)明實現(xiàn)了對MSP430系列單片機(jī)程序的在線更新,無需將MSP430系列單片機(jī)從產(chǎn)品或電路板上拆解下來,只需通過現(xiàn)有的MODBUS通信線路即可實現(xiàn)方便、快捷的在線更新,而且,支持一對多模式的版本更新,具有升級簡單、可靠和快速等特點(diǎn)。
附圖說明
圖1為本發(fā)明實施例提供的在線更新單片機(jī)程序的方法的流程圖;
圖2為本發(fā)明一實施例提供的在線更新單片機(jī)程序的系統(tǒng)的示意圖;
圖3為本發(fā)明一實施例提供的在線更新單片機(jī)程序的方法的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的實施例進(jìn)行詳細(xì)說明,應(yīng)當(dāng)理解,以下所說明的實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為本發(fā)明實施例提供的在線更新單片機(jī)程序的方法的流程圖。如圖1所示,本發(fā)明實施例提供的在線更新單片機(jī)程序的方法包括以下步驟:
步驟11:獲取程序更新數(shù)據(jù)。
于此,步驟11之后,該方法還包括:根據(jù)程序更新數(shù)據(jù)獲取數(shù)據(jù)參數(shù)。其中,數(shù)據(jù)參數(shù)例如包括數(shù)據(jù)長度、校驗數(shù)據(jù)等。
步驟12:通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲。
于此,需要更新運(yùn)行程序的單片機(jī)是指:若程序更新數(shù)據(jù)對應(yīng)的版本高于單片機(jī)的運(yùn)行程序的版本,則所述單片機(jī)的運(yùn)行程序需要更新。
若程序更新數(shù)據(jù)對應(yīng)的版本不高于單片機(jī)的運(yùn)行程序的版本,則單片機(jī) 的運(yùn)行程序無需更新。
步驟13:將存儲在片外存儲器的程序更新數(shù)據(jù)更新至單片機(jī)。
于步驟12之后,步驟13之前,該方法還包括:發(fā)送復(fù)位命令至單片機(jī),使得單片機(jī)重啟。
于步驟12之后,步驟13之前,該方法還包括:根據(jù)數(shù)據(jù)參數(shù)判斷存儲在片外存儲器的程序更新數(shù)據(jù)是否完整有效,若完整有效,則進(jìn)行將存儲在片外存儲器的程序更新數(shù)據(jù)更新至單片機(jī)的步驟(即步驟13)。
此外,本發(fā)明實施例還提供一種在線更新單片機(jī)程序的系統(tǒng),包括:手持模塊,用于獲取程序更新數(shù)據(jù);主控模塊,用于通過MODBUS總線將程序更新數(shù)據(jù)傳送至需要更新運(yùn)行程序的單片機(jī)的片外存儲器進(jìn)行存儲;線卡模塊,用于將存儲在片存儲器的程序更新數(shù)據(jù)更新至單片機(jī)。
圖2為本發(fā)明一實施例提供的在線更新單片機(jī)程序的系統(tǒng)的示意圖。如圖2所示,本實施例提供的在線更新單片機(jī)程序的系統(tǒng)包括電源模塊、手持模塊、主控模塊以及線卡模塊。其中,電源模塊用于為手持模塊、主控模塊以及線卡模塊供電。
其中,手持模塊采用一個精簡指令集架構(gòu)的中央處理器(POWERPC,Performance Optimization With Enhanced RISC–Performance Computing)的嵌入式系統(tǒng),用于負(fù)責(zé)人機(jī)交互和運(yùn)行應(yīng)用軟件,且?guī)в蠷S485接口和若干外設(shè)接口。線卡模塊例如連接具有RS485接口的MSP430單片機(jī)和串口閃存(SPI-Flash,Serial Peripheral Interface Flash)(于此,作為片外存儲器)。
于此,手持模塊和主控模塊一對一連接,而主控模塊可連接多個線卡模塊(例如,最多連接十二個線卡模塊)。主控模塊、手持模塊和多個線卡模塊之間均通過RS485接口連接,且上述各模塊之間通過MODBUS總線連接組網(wǎng),構(gòu)成一個MODBUS總線網(wǎng)絡(luò)。其中,主控模塊為MODBUS總線網(wǎng)絡(luò)中的主節(jié)點(diǎn),而線卡模塊構(gòu)成MODBUS總線網(wǎng)絡(luò)的從節(jié)點(diǎn)。因此,只需要通過主節(jié)點(diǎn)對各個從節(jié)點(diǎn)進(jìn)行在線程序更新即可。
具體而言,手持模塊通過外設(shè)接口從外部獲取MSP430系列單片機(jī)的程序更新數(shù)據(jù)后,提取程序更新數(shù)據(jù)的數(shù)據(jù)參數(shù),并將程序更新數(shù)據(jù)和數(shù)據(jù) 參數(shù)通過MODBUS總線傳輸?shù)街骺啬K,主控模塊通過RS485接口與各個線卡模塊進(jìn)行通信,通過線卡模塊將程序更新數(shù)據(jù)和數(shù)據(jù)參數(shù)傳送至SPI-Flash進(jìn)行存儲,線卡模塊對存儲的程序更新數(shù)據(jù)和數(shù)據(jù)參數(shù)進(jìn)行分析和校驗,判斷獲得完整程序更新數(shù)據(jù)后,將存儲在片外存儲器的程序更新數(shù)據(jù)更新至單片機(jī),從而實現(xiàn)通過MODBUS總線進(jìn)行MSP430系列單片機(jī)程序的在線更新。
其中,MODBUS總線為串行鏈路協(xié)議,是一種主/從協(xié)議,于此采用遠(yuǎn)程終端單元(RTU,Remote Terminal Unit)傳輸模式。在該模式下,只支持功能碼3(Read Holding Registers)和功能碼16(Write Multiple Registers)的功能,對應(yīng)數(shù)據(jù)的讀取和寫入功能。
于此,具體的功能碼如表1及表2所示:
表1功能碼3(Read Holding Registers)
表2功能碼16(Write Multiple Registers)
圖3為本發(fā)明一實施例提供的在線更新單片機(jī)程序的方法的流程圖。如圖3所示,本實施例提供的在線更新單片機(jī)程序的方法包括以下步驟:
步驟101:手持模塊從外部接口獲取程序更新數(shù)據(jù),并提取程序更新數(shù)據(jù)的數(shù)據(jù)參數(shù),例如數(shù)據(jù)長度、校驗數(shù)據(jù)等;
步驟102:手持模塊向主控模塊發(fā)送更新命令,主控模塊接收更新命令后,判斷程序更新數(shù)據(jù)對應(yīng)的版本是否高于單片機(jī)的現(xiàn)有版本,若是,則主控模塊向手持模塊返回接收命令;
步驟103:主控模塊接收手持模塊通過MODBUS總線發(fā)送的程序更新數(shù)據(jù)和數(shù)據(jù)參數(shù),并進(jìn)行存儲;
步驟104:主控模塊判斷單片機(jī)的運(yùn)行程序是否需要更新,例如,比較運(yùn)行程序的版本與程序更新數(shù)據(jù)對應(yīng)的版本,當(dāng)運(yùn)行程序的版本低于程序更新數(shù)據(jù)對應(yīng)的版本時,主動推送程序更新數(shù)據(jù),并發(fā)送復(fù)位命令至單片機(jī),使得單片機(jī)重啟;
步驟105:主控模塊將程序更新數(shù)據(jù)和數(shù)據(jù)參數(shù)通過MODBUS總線按照總線協(xié)議循環(huán)發(fā)送給線卡模塊;
步驟106:線卡模塊接收程序更新數(shù)據(jù)及數(shù)據(jù)參數(shù),并將接收到的程序更新數(shù)據(jù)寫入到片外的SPI-Flash中相應(yīng)地址,同時保存數(shù)據(jù)參數(shù);
步驟107:線卡模塊通過對接收的程序更新數(shù)據(jù)和數(shù)據(jù)參數(shù)進(jìn)行分析和校驗,判斷獲得完整程序更新數(shù)據(jù)后,線卡模塊將SPI-Flash中存儲的程序更新數(shù)據(jù)更新到MSP430單片機(jī)的閃存(Flash)存儲器中指定的存儲地址,同時修改數(shù)據(jù)參數(shù);
步驟108:MSP430單片機(jī)跳轉(zhuǎn)到新程序的入口地址,運(yùn)行新程序。
此外,上述在線更新過程中,設(shè)計有備份機(jī)制,預(yù)防在數(shù)據(jù)更新過程中出現(xiàn)異常情況,保證系統(tǒng)正常運(yùn)行。
綜上所述,在本發(fā)明實施例中,無需將MSP430單片機(jī)從產(chǎn)品或電路板上拆解下來,只需通過現(xiàn)有的MODBUS通信線路即可實現(xiàn)快捷的程序在線 更新。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。