本發(fā)明涉及單片機(jī)領(lǐng)域,具體來說是一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法。
背景技術(shù):
單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu、隨機(jī)存儲(chǔ)器ram、只讀存儲(chǔ)器rom、多種i/o口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。
其中,單片機(jī)的使用過程中,會(huì)對單片機(jī)進(jìn)行升級,目前,針對8位單片機(jī)升級所采取的技術(shù)方案主要是通過有線接口的專用下載器升級,但是采用上述方式存在很大的缺點(diǎn),比如只能1對1升級、器件必須有裸露的硬件接口,而且只能應(yīng)用于工廠生產(chǎn)時(shí)升級,不能在常規(guī)使用過程中升級,因此需要進(jìn)行必要的改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中的只能一對一升級、升級不便的缺陷,提供一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法來解決上述問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:本發(fā)明公開了一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法,具體步驟如下:
一、pc端與基站的通信:
(1)、pc端將升級包分包,并記錄總包數(shù);
(2)、將28字節(jié)的包加上通信協(xié)議,總包數(shù),幀頭以及校驗(yàn)信息組包成32字節(jié)的數(shù)據(jù)包;
(3)、通過usb接口給基站發(fā)送開始升級指令;
(4)、基站接收pc端發(fā)送的升級信息,基站開始發(fā)送升級請求給pc端;
(5)、pc端將32字節(jié)的數(shù)據(jù)包通過usb接口發(fā)送給基站;
(6)、基站接收完一個(gè)完整的數(shù)據(jù)包后,將射頻通信的發(fā)送通道a天線開始持續(xù)廣播,每一包數(shù)據(jù)持續(xù)廣播重復(fù)廣播64ms;
(7)、一包數(shù)據(jù)廣播結(jié)束之后,基站會(huì)向pc端請求下一個(gè)數(shù)據(jù)包;
(8)、重復(fù)步驟(5)-(7),最后一個(gè)數(shù)據(jù)包結(jié)束后回到第一個(gè)數(shù)據(jù)包;
二、基站與待升級終端通信:
(9)、待升級終端喚醒之后,向周圍的基站發(fā)送升級詢問請求;
(10)、基站通過射頻通信的接收通道b天線接收到待升級終端的詢問請求后,先中斷發(fā)送通信端a的廣播,將總包數(shù)以及程序版本發(fā)送給請求的待升級終端后,再繼續(xù)數(shù)據(jù)包的廣播;
(11)、待升級終端接收到基站發(fā)送的總包數(shù)以及程序版本后,對比程序版本判斷是否需要升級;
(12)、若版本號一致,則待升級終端不進(jìn)行升級,否則待升級終端進(jìn)入升級模式;
(13)、進(jìn)入升級模式的待升級終端將升級總包數(shù)以及升級標(biāo)志位寫入eeprom中,并復(fù)位整個(gè)系統(tǒng);
(14)、程序復(fù)位后會(huì)檢測升級標(biāo)志位,判斷是否需要升級,如果升級標(biāo)志位為0,則進(jìn)入用戶程序,升級標(biāo)志位為1,進(jìn)入升級程序;
(15)、進(jìn)入升級程序后,待升級終端會(huì)開啟接收,每次開啟接收僅在基站廣播的信道接收2ms,接收到數(shù)據(jù)包后進(jìn)行包校驗(yàn)、校對包序號,如果接收到的數(shù)據(jù)包不曾寫入,則將接收包寫入用戶程序段對應(yīng)位置的flash中,并且在內(nèi)存里記錄下接收的數(shù)據(jù)包序號,2ms內(nèi)如果接收不到數(shù)據(jù)則進(jìn)入休眠64ms
(16)、接收的數(shù)據(jù)包寫入完成后,待升級終端會(huì)進(jìn)入休眠,休眠時(shí)間距上一次開啟接收64ms時(shí)再次開啟接收;
(17)、所有數(shù)據(jù)包接收完成并寫入flash之后,清除升級標(biāo)志,復(fù)位整個(gè)系統(tǒng),進(jìn)入用戶程序,升級即完成;
作為優(yōu)選,所述的步驟(1)中,所述的pc端將升級包按28字節(jié)一個(gè)包分包。
作為優(yōu)選,所述的步驟(3)中,所述的指令包含總包數(shù)、版本號。
作為優(yōu)選,所述的通信基站具備2.4g射頻能力,且通信基站有2路2.4g射頻通信通道:發(fā)送通道a天線,接收通道b天線。
作為優(yōu)選,所述的待升級終端的flash需要有8kb的存儲(chǔ)空間存放升級程序,剩下部分存放用戶程序。
作為優(yōu)選,所述的帶升級終端即為8位單片機(jī)系統(tǒng)。
本發(fā)明相比現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
1、可同時(shí)對任意多待升級終端進(jìn)行程序升級;
2、具備版本控制能力;
3、升級過程中無需對待升級終端進(jìn)行拆卸或者斷電等操作;
4、適用于低耗能的待升級終端。
附圖說明
圖1為本發(fā)明一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法的流程圖;
圖2為發(fā)明一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使對本發(fā)明的結(jié)構(gòu)特征及所達(dá)成的功效有更進(jìn)一步的了解與認(rèn)識,用以較佳的實(shí)施例及附圖配合詳細(xì)的說明,說明如下:
如圖1-2所示,本發(fā)明公開了一種單片機(jī)上的一對多無線程序升級系統(tǒng)及方法,具體步驟如下:
一、pc端與基站的通信:
(1)、pc端將升級包按28字節(jié)一個(gè)包分包,并記錄總包數(shù),通過分包,這樣可以防止中途傳輸中斷后只能重新傳輸,通過分包處理可以實(shí)現(xiàn)斷點(diǎn)續(xù)傳,尤其對應(yīng)多個(gè)升級終端,可以實(shí)現(xiàn)任何時(shí)間的待升級終端的介入升級,并且可以支持任意多待升級終端程序升級;
(2)、將28字節(jié)的包加上通信協(xié)議,總包數(shù),幀頭以及校驗(yàn)信息組包成32字節(jié)的數(shù)據(jù)包;
(3)、通過usb接口給基站發(fā)送開始升級指令;
(4)、基站接收pc端發(fā)送的升級信息,基站開始發(fā)送升級請求給pc端;
(5)、pc端將32字節(jié)的數(shù)據(jù)包通過usb接口發(fā)送給基站;
(6)、基站接收完一個(gè)完整的數(shù)據(jù)包后,將射頻通信的發(fā)送通道a天線開始持續(xù)廣播,每一包數(shù)據(jù)持續(xù)廣播重復(fù)廣播64ms;
(7)、一包數(shù)據(jù)廣播結(jié)束之后,基站會(huì)向pc端請求下一個(gè)數(shù)據(jù)包;
(8)、重復(fù)步驟(5)-(7),最后一個(gè)數(shù)據(jù)包結(jié)束后回到第一個(gè)數(shù)據(jù)包;
二、基站與待升級終端通信:
(9)、待升級終端喚醒之后,向周圍的基站發(fā)送升級詢問請求;
(10)、基站通過射頻通信的接收通道b天線接收到待升級終端的詢問請求后,先中斷發(fā)送通信端a的廣播,將總包數(shù)以及程序版本發(fā)送給請求的待升級終端后,再繼續(xù)數(shù)據(jù)包的廣播;
(11)、待升級終端接收到基站發(fā)送的總包數(shù)以及程序版本后,對比程序版本判斷是否需要升級;
(12)、若版本號一致,則待升級終端不進(jìn)行升級,否則待升級終端進(jìn)入升級模式;
(13)、進(jìn)入升級模式的待升級終端將升級總包數(shù)以及升級標(biāo)志位寫入eeprom中,并復(fù)位整個(gè)系統(tǒng);
(14)、程序復(fù)位后會(huì)檢測升級標(biāo)志位,判斷是否需要升級,如果升級標(biāo)志位為0,則進(jìn)入用戶程序,升級標(biāo)志位為1,進(jìn)入升級程序;
(15)、進(jìn)入升級程序后,待升級終端會(huì)開啟接收,每次開啟接收僅在基站廣播的信道接收2ms,接收到數(shù)據(jù)包后進(jìn)行包校驗(yàn)、校對包序號,如果接收到的數(shù)據(jù)包不曾寫入,則將接收包寫入用戶程序段對應(yīng)位置的flash中,并且在內(nèi)存里記錄下接收的數(shù)據(jù)包序號,2ms內(nèi)如果接收不到數(shù)據(jù)則進(jìn)入休眠64ms,其中,待升級終端在2ms接收不到數(shù)據(jù),休眠64ms,即一次廣播周期,這樣可以大大減小待升級終端的功耗;
(16)、接收的數(shù)據(jù)包寫入完成后,待升級終端會(huì)進(jìn)入休眠,休眠時(shí)間距上一次開啟接收64ms時(shí)再次開啟接收;
(17)、所有數(shù)據(jù)包接收完成并寫入flash之后,清除升級標(biāo)志,復(fù)位整個(gè)系統(tǒng),進(jìn)入用戶程序,升級即完成,這樣,利用升級程序?qū)崿F(xiàn)用戶程序升級控制,實(shí)現(xiàn)上述升級過程,且實(shí)現(xiàn)用戶程序更新完成后的自動(dòng)重啟,以完成用戶程序的自動(dòng)升級。
步驟(3)中,所述的指令包含總包數(shù)、版本號。
所述的通信基站具備2.4g射頻能力,且通信基站有2路2.4g射頻通信通道:發(fā)送通道a天線,接收通道b天線。
所述的待升級終端的flash需要有8kb的存儲(chǔ)空間存放升級程序,剩下部分存放用戶程序。
作為優(yōu)選,所述的帶升級終端即為8位單片機(jī)系統(tǒng)。
實(shí)施例1
當(dāng)有多個(gè)終端程序需要升級為同一個(gè)版本程序時(shí),以終端c(版本號00c)、終端d(版本號00d)、終端e(版本號00g)中的程序升級為版本g程序,版本g程序大小為140字節(jié)為例,步驟包括:步驟一、將基站連接到pc,并將升級程序包拷貝到pc端升級軟件中,并打開pc端升級軟件,pc端升級軟件讀取版本g升級程序包文件并將升級程序包按照每包28個(gè)字節(jié)分割成5個(gè)數(shù)據(jù)包;步驟二、pc端升級軟件通過usb通信將升級指令發(fā)送到連接的基站中,基站收到升級指令后會(huì)通過usb通信發(fā)送請求數(shù)據(jù)包指令到pc端升級軟件,pc端升級軟件在收到數(shù)據(jù)包請求后將28個(gè)字節(jié)的數(shù)據(jù)包加上通信協(xié)議、總包數(shù)、幀頭以及校驗(yàn)和組成32字節(jié)的數(shù)據(jù)組成第一包發(fā)送給基站,然后基站通過發(fā)送天線發(fā)送32字節(jié)數(shù)據(jù)包,在發(fā)送持續(xù)64ms后基站關(guān)閉發(fā)送,并通過usb向pc端升級軟件請求第二包數(shù)據(jù),基站重復(fù)上述請求-發(fā)送操作,當(dāng)請求并發(fā)送了第5包數(shù)據(jù)后基站會(huì)重新請求并發(fā)送第一包數(shù)據(jù);步驟三、喚醒待升級終端c、d、e,終端c、d、e發(fā)送升級詢問請求到基站,基站收到終端c的升級詢問請求后,中斷發(fā)送升級數(shù)據(jù)包的廣播,并將總包數(shù)5以及升級程序版本00g發(fā)送給終端c,終端c通過版本號00g對比本地版本號00c,版本號不一致,終端c會(huì)復(fù)位并進(jìn)入升級模式中,開始接受基站發(fā)送的數(shù)據(jù)包,終端d和e喚醒后會(huì)經(jīng)過同樣的步驟,終端d也會(huì)進(jìn)入升級程序并接收數(shù)據(jù)包,終端e版本號為00g與升級程序版本號一致,因此不會(huì)進(jìn)入升級程序;步驟四、在終端c和終端d進(jìn)入升級程序后會(huì)不斷接收到基站發(fā)送的數(shù)據(jù)包,當(dāng)接收到基站發(fā)送的第一包數(shù)據(jù)時(shí),會(huì)解析32字節(jié)數(shù)據(jù)包并驗(yàn)證檢驗(yàn)是否通過,校驗(yàn)通過后,解析可得到標(biāo)志位為1的28字節(jié)數(shù)據(jù)包,并寫入到終端c的flash的對應(yīng)程序段的開頭28字節(jié),如果終端c未收到第二包數(shù)據(jù),此時(shí)收到第3包數(shù)據(jù)并校驗(yàn)通過,則終端c會(huì)將28字節(jié)程序數(shù)據(jù)寫入到flash中第三包程序?qū)?yīng)位置,即距對應(yīng)程序段開頭56字節(jié)處,在基站再次發(fā)送第二包升級包數(shù)據(jù)時(shí)終端c便可寫入到第二段程序段中,當(dāng)所有程序數(shù)據(jù)包均寫入完成時(shí),終端c會(huì)自動(dòng)復(fù)位并進(jìn)入用戶程序,用戶程序即為空中升級得到的版本為00g的程序,終端d同樣會(huì)升級到00g的用戶程序,終端e則不會(huì)進(jìn)行升級。
以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明的范圍內(nèi)。本發(fā)明要求的保護(hù)范圍由所附的權(quán)利要求書及其等同物界定。