dsPIC33F單片機(jī)的程序升級(jí)探討
3.1 程序升級(jí)正確性問題
上文僅重點(diǎn)說明了程序升級(jí)的方法,未對(duì)程序升級(jí)的正確性展開討論,但在實(shí)際應(yīng)用中,由于傳輸干擾的存在,接收的新程序數(shù)據(jù)可能出錯(cuò),這時(shí)如果沒有相應(yīng)的應(yīng)對(duì)措施,顯然會(huì)影響到產(chǎn)品的正常運(yùn)行。為了保證程序升級(jí)的正確性,常用的應(yīng)對(duì)措施有以下幾種:
(1)對(duì)每幀數(shù)據(jù)進(jìn)行嚴(yán)格的校驗(yàn)(如CRC校驗(yàn)),校驗(yàn)通過后再更新相應(yīng)的程序存儲(chǔ)區(qū);更新程序存儲(chǔ)區(qū)后,重新讀出程序存儲(chǔ)區(qū)數(shù)據(jù),并與接收到的數(shù)據(jù)進(jìn)行比較。只有當(dāng)數(shù)據(jù)比較無誤后才開始接收下一幀數(shù)據(jù)。
(2)若不考慮硬件成本,也可外置一個(gè)數(shù)據(jù)存儲(chǔ)器,將所有新程序數(shù)據(jù)完全接收并校驗(yàn)通過后才統(tǒng)一更新程序存儲(chǔ)器,最后把整個(gè)程序存儲(chǔ)器的數(shù)據(jù)與接收到的數(shù)據(jù)逐一比對(duì),若比對(duì)無誤則升級(jí)結(jié)束。
(3)若應(yīng)用程序占用空間不大,也可將程序存儲(chǔ)器中應(yīng)用程序區(qū)再分為兩部分。程序升級(jí)時(shí)輪流覆蓋這兩部分,這種操作方式使程序存儲(chǔ)器同時(shí)保存舊版本和新版本兩個(gè)應(yīng)用程序,當(dāng)新版本程序因某種原因運(yùn)行不正常時(shí),可由引導(dǎo)程序?qū)?yīng)用程序切換到舊版本。
第(1)種方法最容易實(shí)現(xiàn),但是應(yīng)用程序只有在整個(gè)升級(jí)過程完全結(jié)束后才可以正常運(yùn)行,若升級(jí)過程因某種原因通信中斷,則應(yīng)用程序一直無法運(yùn)行,這是該方法最大的缺陷。
第(2)種方法也很容易實(shí)現(xiàn),而且由于它是在新程序數(shù)據(jù)全部接收后才開始升級(jí),因此克服了第(1)種方法的缺陷,但是該方法需增加硬件成本,且要占用單片機(jī)更多的硬件資源(用于與外部存儲(chǔ)器之間的交互)。
第(3)種方法也可以克服第(1)種方法的缺陷,而且不需增加硬件成本,但是該方法的實(shí)現(xiàn)顯然比前兩種方法復(fù)雜得多。以上3種方法各有優(yōu)缺點(diǎn),在實(shí)際應(yīng)用中可根據(jù)實(shí)際情況選擇。
3.2 斷點(diǎn)續(xù)傳問題
在實(shí)際應(yīng)用中,可能因某種原因(如斷電復(fù)位)而需重新開始程序升級(jí),這時(shí)如果還是從第1幀數(shù)據(jù)開始傳輸,則會(huì)造成時(shí)間上的浪費(fèi),而且對(duì)于一些以流量計(jì)費(fèi)的通信網(wǎng)絡(luò)(如GPRS)還會(huì)造成通信費(fèi)用的浪費(fèi),因此在實(shí)際應(yīng)用中有必要實(shí)現(xiàn)“斷點(diǎn)續(xù)傳”功能。這可通過模仿FTP斷點(diǎn)續(xù)傳原理來實(shí)現(xiàn),即單片機(jī)每正確接收并存儲(chǔ)一幀數(shù)據(jù)則刷新存儲(chǔ)于外部非易失性存儲(chǔ)器(如EEPROM)中的升級(jí)信息(含當(dāng)前幀號(hào)),若重新開始程序升級(jí),則將當(dāng)前升級(jí)信息發(fā)給服務(wù)器,服務(wù)器可從“斷點(diǎn)”開始發(fā)送數(shù)據(jù),從而實(shí)現(xiàn)了“斷點(diǎn)續(xù)傳”功能。
4 結(jié)語
基于dsPIC33F系列單片機(jī)的應(yīng)用程序升級(jí)方法已在開發(fā)設(shè)計(jì)的IPPhone和安防系統(tǒng)等產(chǎn)品中成功應(yīng)用,且運(yùn)行穩(wěn)定可靠。
評(píng)論