TS201的程序分片嵌入式系統(tǒng)軟件遠(yuǎn)程更新方法

2013-08-28 10:58 來(lái)源:電源網(wǎng) 作者:鈴鐺

基于DSP的遠(yuǎn)程程序更新方法很多,但在燒寫(xiě)的時(shí)候均要求系統(tǒng)不能斷電,否則將造成整個(gè)系統(tǒng)軟件崩潰,只能人工通過(guò)JTAG口調(diào)試燒寫(xiě)才能恢復(fù)。如何有效提高系統(tǒng)維護(hù)的可靠性成為一個(gè)重要的問(wèn)題。本文創(chuàng)新地提出基于多DSP的程序分片、數(shù)據(jù)分段的高可靠性遠(yuǎn)程更新軟件設(shè)計(jì),并列舉了多個(gè)增強(qiáng)可靠性的應(yīng)用方法。本文以某型號(hào)無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)為例,具體描述該設(shè)計(jì)的實(shí)際應(yīng)用。

1 系統(tǒng)結(jié)構(gòu)

本系統(tǒng)處理數(shù)據(jù)多,計(jì)算量大,又有很強(qiáng)的實(shí)時(shí)性要求,選用ADI公司的高速處理芯片TigerSharc201s。Flash選用JS28F128,容量為256 Mb。系統(tǒng)設(shè)計(jì)采用兩片ADSP并行的模式。系統(tǒng)結(jié)構(gòu)如圖1所示,TS201A為主DSP,TS201B為從DSP。主DSP經(jīng)Flash采用EPROM加載方式,再通過(guò)Link口引導(dǎo)加載從DSP。本處理系統(tǒng)支持多種工作模式,監(jiān)控中心通過(guò)內(nèi)部協(xié)議遠(yuǎn)程管控處理系統(tǒng)。從DSP實(shí)現(xiàn)信號(hào)處理計(jì)算,把處理計(jì)算結(jié)果傳遞給主DSP;主DSP實(shí)現(xiàn)管控模塊,通過(guò)外圍芯片F(xiàn)PGA的串口協(xié)議發(fā)送給無(wú)線傳輸設(shè)備,通過(guò)CDMA模塊用無(wú)線網(wǎng)絡(luò)的形式,發(fā)送到監(jiān)控中心軟件。監(jiān)控中心通過(guò)協(xié)議對(duì)其可實(shí)現(xiàn)遠(yuǎn)程管理,包括數(shù)據(jù)庫(kù)文件更新、程序更新和狀態(tài)模式轉(zhuǎn)換。

1

圖1 系統(tǒng)結(jié)構(gòu)

2 遠(yuǎn)程更新原理及實(shí)現(xiàn)

2.1 設(shè)計(jì)原理

Flash內(nèi)部分為256個(gè)block,可以擦寫(xiě)任意位置的block段,沒(méi)有擦寫(xiě)的block數(shù)據(jù)不會(huì)丟失。根據(jù)這一特性,把兩片DSP軟件程序和分段的數(shù)據(jù)庫(kù)的燒寫(xiě)位置分開(kāi)。Flash空間地址分配如圖2所示。

2

圖2 Flash空間地址分配示意圖

監(jiān)控中心按照內(nèi)部協(xié)議把數(shù)據(jù)庫(kù)或程序文件分包,通過(guò)無(wú)線網(wǎng)絡(luò)下發(fā)到以TS201為核心的信號(hào)處理機(jī)。處理機(jī)接收完數(shù)據(jù)后,通過(guò)自身的燒寫(xiě)功能,把新數(shù)據(jù)自動(dòng)寫(xiě)入Flash中。重新啟動(dòng)后,DSP重載實(shí)現(xiàn)遠(yuǎn)程分片更新程序的功能。程序的初始化設(shè)置中,每次會(huì)自動(dòng)讀回Flash中的數(shù)據(jù),完成更新數(shù)據(jù)庫(kù)參數(shù)的功能。

為了增加遠(yuǎn)程更新的可靠性,把兩片DSP程序分開(kāi)位置燒寫(xiě)。由于主DSP只涉及管理控制功能,所以把主DSP程序作為整個(gè)系統(tǒng)的“殼”,一般不作更新。用從DSP實(shí)現(xiàn)其主要的性能計(jì)算,它的加載通過(guò)主DSP的Link口引導(dǎo)。這樣,大部分的在線維護(hù)和算法程序升級(jí)通過(guò)更新從DSP就能完成。在更新的過(guò)程中,主DSP程序不會(huì)受影響,增強(qiáng)了系統(tǒng)的可靠性,也不必?fù)?dān)心突然掉電會(huì)導(dǎo)致系統(tǒng)軟件的崩潰。

2.2 基于TS201的遠(yuǎn)程更新過(guò)程

本系統(tǒng)制定內(nèi)部協(xié)議,實(shí)現(xiàn)遠(yuǎn)程更新的指令交互。信號(hào)處理機(jī)接收指令,按照協(xié)議決定遠(yuǎn)程更新的內(nèi)容,分為軟件更新或者數(shù)據(jù)庫(kù)更新。若為軟件更新再區(qū)分主、從DSP軟件更新;若為數(shù)據(jù)庫(kù)更新,根據(jù)數(shù)據(jù)庫(kù)信息決定更新的位置和段數(shù)。

本系統(tǒng)的數(shù)據(jù)庫(kù)文件為30K×4字節(jié),分為6段。根據(jù)無(wú)線傳輸設(shè)備的發(fā)送能力,把數(shù)據(jù)按照每包198字節(jié)分包,每包包括報(bào)頭、總包數(shù)、包號(hào)和校驗(yàn)位等信息,數(shù)據(jù)協(xié)議具體格式如下:

3

報(bào)頭:SOH;

報(bào)文長(zhǎng)度:本包數(shù)據(jù)的長(zhǎng)度,包括報(bào)頭,固定為198;

總包數(shù):此次程序或者數(shù)據(jù)庫(kù)文件分成的總包數(shù);

包號(hào):本包的編號(hào);

數(shù)據(jù):需要更新的數(shù)據(jù);

校驗(yàn)位:占3個(gè)字節(jié),包括1個(gè)字節(jié)的奇偶校驗(yàn)位、2個(gè)字節(jié)的CRC校驗(yàn)位。

發(fā)送更新文件時(shí),系統(tǒng)采用握手協(xié)議。信號(hào)處理機(jī)每接收到1包數(shù)據(jù),將發(fā)回饋信息給監(jiān)控中心,監(jiān)控中心接收到成功回饋信息后,再發(fā)下1包數(shù)據(jù)。否則將進(jìn)入等待模式,10 s后自動(dòng)重發(fā)此包數(shù)據(jù)。若連續(xù)重發(fā)3次仍然不成功,才放棄此次更新。信號(hào)處理機(jī)軟件機(jī)制和監(jiān)控中心一樣,發(fā)送回饋后進(jìn)入等待模式,10 s后自動(dòng)重新發(fā)送回饋信息,最多重發(fā)3次,才放棄更新,重新回到工作狀態(tài),直到接收到新的下發(fā)指令。

信號(hào)處理機(jī)接收完全部的數(shù)據(jù)包后,還要進(jìn)行包號(hào)核對(duì),確認(rèn)無(wú)誤后,用協(xié)議通知監(jiān)控中心即將進(jìn)入燒寫(xiě)模式。按照Flash特定的讀寫(xiě)指令,把RAM中的數(shù)據(jù)由Flash的第20個(gè)block起始位置開(kāi)始寫(xiě)入。如果是數(shù)據(jù)庫(kù),按照協(xié)議解讀數(shù)據(jù)段號(hào),把燒寫(xiě)起始位置改為相應(yīng)block的地址。燒寫(xiě)完成后,將燒寫(xiě)成功與否的信息回饋給監(jiān)控中心。在不斷電的情況下,系統(tǒng)此時(shí)仍然是按照舊的軟件版本運(yùn)行。系統(tǒng)設(shè)計(jì)了遠(yuǎn)程的硬重啟,通過(guò)指令控制繼電器。繼電器連接電源模塊,實(shí)現(xiàn)短暫的斷電功能,從而實(shí)現(xiàn)DSP的重新加載,完成程序或者數(shù)據(jù)庫(kù)更新。詳細(xì)的遠(yuǎn)程更新流程如圖3所示。

4

圖3 遠(yuǎn)程更新流程

1 2 > 
嵌入式 TS201 遠(yuǎn)程更新

相關(guān)閱讀

暫無(wú)數(shù)據(jù)

一周熱門(mén)