《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于以太網(wǎng)的DSP遠(yuǎn)程加載技術(shù)研究
基于以太網(wǎng)的DSP遠(yuǎn)程加載技術(shù)研究
來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》
左顥睿 劉永清 張傲華 韓國(guó)榮
摘要: DSP具有高速的計(jì)算能力與豐富的外設(shè)接口,被廣泛應(yīng)用于嵌入式系統(tǒng)中。很多基于DSP的嵌入式系統(tǒng)被配置于苛刻的環(huán)境或偏遠(yuǎn)地區(qū),當(dāng)需要軟件升級(jí)或程序更新時(shí),人員無(wú)法進(jìn)入或很難到達(dá)相應(yīng)環(huán)境中,必須采用遠(yuǎn)程加載技術(shù)來(lái)完成升級(jí)和更新。以太網(wǎng)具有傳輸距離遠(yuǎn)、傳輸速率高的優(yōu)點(diǎn),是遠(yuǎn)程數(shù)據(jù)傳輸?shù)牧己幂d體,目前主流的DSP芯片均可擴(kuò)展以太網(wǎng)接口。本文結(jié)合以太網(wǎng)技術(shù),以TI公司的DSP芯片為例對(duì)DSP遠(yuǎn)程加載技術(shù)進(jìn)行了研究。
Abstract:
Key words :

引言

DSP具有高速的計(jì)算能力與豐富的外設(shè)接口,被廣泛應(yīng)用于嵌入式系統(tǒng)中。很多基于DSP的嵌入式系統(tǒng)被配置于苛刻的環(huán)境或偏遠(yuǎn)地區(qū),當(dāng)需要軟件升級(jí)或程序更新時(shí),人員無(wú)法進(jìn)入或很難到達(dá)相應(yīng)環(huán)境中,必須采用遠(yuǎn)程加載技術(shù)來(lái)完成升級(jí)和更新。以太網(wǎng)具有傳輸距離遠(yuǎn)、傳輸速率高的優(yōu)點(diǎn),是遠(yuǎn)程數(shù)據(jù)傳輸?shù)牧己幂d體,目前主流的DSP芯片均可擴(kuò)展以太網(wǎng)接口。本文結(jié)合以太網(wǎng)技術(shù),以TI公司的DSP芯片為例對(duì)DSP遠(yuǎn)程加載技術(shù)進(jìn)行了研究。

DSP遠(yuǎn)程加載的核心思想包括3個(gè)方面:

① DSP能夠收發(fā)遠(yuǎn)程控制端數(shù)據(jù);

② DSP能夠更新存放用戶程序的Flash區(qū)域;

③ DSP能夠獲取用戶配置選擇是否需要遠(yuǎn)程加載。

基于上述3點(diǎn),本文對(duì)DSP網(wǎng)絡(luò)接口技術(shù)、DSP與Flash接口及驅(qū)動(dòng)技術(shù)、遠(yuǎn)程加載配置技術(shù)進(jìn)行了研究。

1 遠(yuǎn)程加載的硬件基礎(chǔ)

1.1 DSP以太網(wǎng)接口技術(shù)

(1) 通過(guò)專用接口芯片擴(kuò)展以太網(wǎng)接口

在TI公司早期的DSP中,如C5000、C6201、C6701等系列,芯片內(nèi)部沒(méi)有集成專用的以太網(wǎng)控制器,無(wú)法直接與以太網(wǎng)進(jìn)行通信,必須通過(guò)DSP的EMIF(外部存儲(chǔ)接口)與專用接口芯片連接來(lái)擴(kuò)展以太網(wǎng)。這些專用芯片有CP2200、MC9S12NE6等。圖1給出了TMS320C5410與CP2200的接口示意圖[1]。

圖1 TMS320C5410與CP2200的接口示意圖

(2) 通過(guò)片內(nèi)專用接口擴(kuò)展以太網(wǎng)接口

隨著DSP制造工藝的提高,很多DSP芯片內(nèi)部已經(jīng)集成了以太網(wǎng)控制器,如DM642、C6455、C6416等,只需要外接物理層芯片(如RTL8019AS、82540EM等)即可擴(kuò)展以太網(wǎng)接口。圖2給出了DSP通過(guò)片內(nèi)專用接口直接擴(kuò)展以太網(wǎng)示意圖。

圖2 DSP通過(guò)片內(nèi)專用接口直接擴(kuò)展以太網(wǎng)示意圖

1.2 可編程Flash芯片

TI公司的高速DSP(C5000、C6000系列)均沒(méi)有片上非易失性存儲(chǔ)器,必須將程序保存在外部非易失性存儲(chǔ)器中。通常采用可編程Flash存儲(chǔ)器對(duì)DSP程序進(jìn)行存儲(chǔ)和加載,常用的Flash芯片有Intel公司的E28Fxx系列和AMD公司的AM29xx系列。圖3給出了DSP與Flash的典型接口電路[2]。

圖3 DSP與Flash的典型接口電路

1.3 遠(yuǎn)程運(yùn)行模式配置

DSP在上電后,需要明確知道當(dāng)前是處于程序更新模式還是處于程序正常運(yùn)行模式,這就需要采用外部硬件控制電路,對(duì)DSP的加載進(jìn)行配置,

圖4 遠(yuǎn)程DSP配置加載模式電路示例

圖4給出了一種遠(yuǎn)程DSP配置加載模式電路的示例。

用戶通過(guò)遠(yuǎn)程配置DSP的GPIO接口為高電平或低電平來(lái)告知加載程序是否執(zhí)行遠(yuǎn)程加載,在實(shí)際應(yīng)用中具體實(shí)現(xiàn)可由用戶自己定義。

2 遠(yuǎn)程加載的軟件基礎(chǔ)

2.1 NDK簡(jiǎn)介

在DSP上直接編寫(xiě)網(wǎng)絡(luò)接口程序非常復(fù)雜,為了屏蔽底層細(xì)節(jié),使用戶可以將資源重點(diǎn)投入到應(yīng)用程序的開(kāi)發(fā)中,TI公司提供了網(wǎng)絡(luò)開(kāi)發(fā)套件NDK( Network Developer’s Kit)。NDK提供了從DSP底層驅(qū)動(dòng)到TCP/IP" target="_blank">IP協(xié)議的整體解決方案,支持常規(guī)的TCP/IP服務(wù),是實(shí)現(xiàn)DSP以太網(wǎng)擴(kuò)展的重要支撐工具。圖5給出了NDK的系統(tǒng)結(jié)構(gòu)圖[3]。

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

2.2 Flash驅(qū)動(dòng)程序

Flash芯片需要專用的指令對(duì)其進(jìn)行操作,主要指令包括擦除、讀、寫(xiě)、復(fù)位等,根據(jù)這些操作指令就可以設(shè)計(jì)Flash驅(qū)動(dòng)程序,圖6給出了C6000系列的DSP對(duì)AM29F040進(jìn)行編程的流程[4]。其中EMIF_Base_Addr為DSP外部存儲(chǔ)接口地址;Prog_addr為目標(biāo)Flash編程地址;Prog_data為目標(biāo)Flash編程數(shù)據(jù)。

圖6 Flash編程流程

3 基于網(wǎng)絡(luò)的遠(yuǎn)程加載方法

3.1 遠(yuǎn)程加載流程

圖7給出了典型的DSP加載方式以及程序在Flash中的存儲(chǔ)方式,二次加載程序直接將用戶程序加載到DSP中,無(wú)需額外處理[5]。

圖7 典型的DSP加載方式

采用圖7中所示方式無(wú)法實(shí)現(xiàn)遠(yuǎn)程加載,可以對(duì)典型加載方式進(jìn)行擴(kuò)展,增加網(wǎng)絡(luò)接口功能,更改Flash存儲(chǔ)方式,從而實(shí)現(xiàn)遠(yuǎn)程加載。DSP遠(yuǎn)程加載方式如圖8所示。

圖8 DSP遠(yuǎn)程加載方式

圖8所示的遠(yuǎn)程加載步驟如下:

① 上電后DSP運(yùn)行二次加載程序;

② DSP讀取外部控制電路狀態(tài),判斷是否處于程序更新模式;

③ 如果是更新模式,跳轉(zhuǎn)到第4步,否則跳轉(zhuǎn)到第5步;

④ DSP從Flash中加載網(wǎng)絡(luò)接口程序到DSP片內(nèi)并運(yùn)行,通過(guò)網(wǎng)絡(luò)接口接收遠(yuǎn)程數(shù)據(jù),將接收到的數(shù)據(jù)燒寫(xiě)到用戶程序區(qū)域完成軟件的更新。

⑤ DSP加載Flash中用戶程序到DSP片內(nèi),正常運(yùn)行程序。

為了配合遠(yuǎn)程加載流程,需要對(duì)圖7所示的Flash存儲(chǔ)結(jié)構(gòu)進(jìn)行擴(kuò)展,在圖8中同時(shí)給出了用于遠(yuǎn)程加載的Flash存儲(chǔ)結(jié)構(gòu)。與圖7中的典型Flash存儲(chǔ)結(jié)構(gòu)相比,遠(yuǎn)程加載的Flash存儲(chǔ)結(jié)構(gòu)在二次加載程序和用戶程序之間增加了網(wǎng)絡(luò)加載程序,該區(qū)域僅對(duì)二次加載程序可見(jiàn),用于存放遠(yuǎn)程加載程序。當(dāng)需要遠(yuǎn)程加載時(shí),二次加載程序就調(diào)用網(wǎng)絡(luò)加載程序,采用DSP遠(yuǎn)程加載方式;當(dāng)無(wú)需遠(yuǎn)程加載時(shí),二次加載程序直接調(diào)用用戶程序,采用典型的DSP加載方式。

在設(shè)計(jì)存儲(chǔ)結(jié)構(gòu)時(shí)需要注意兩點(diǎn):網(wǎng)絡(luò)加載程序是不能被改變的,必須使用固定大小的存儲(chǔ)區(qū)域;網(wǎng)絡(luò)加載程序區(qū)域應(yīng)放在用戶程序區(qū)域前,便于用戶程序的擴(kuò)展。

3.2 網(wǎng)絡(luò)加載程序設(shè)計(jì)

網(wǎng)絡(luò)加載程序運(yùn)行流程是遠(yuǎn)程加載的核心部分,如圖9所示。

圖9 網(wǎng)絡(luò)加載程序運(yùn)行流程

網(wǎng)絡(luò)加載程序運(yùn)行流程主要包括:

① 加載NDK網(wǎng)絡(luò)硬件驅(qū)動(dòng),配置DSP片上硬件以太網(wǎng)控制器,包括網(wǎng)絡(luò)速率、單雙工傳輸方式以及MAC地址配置等。

② 啟動(dòng)TCP/IP服務(wù)。實(shí)現(xiàn)配置DSP的網(wǎng)絡(luò)IP地址、綁定TCP通信端口、開(kāi)始接收遠(yuǎn)程數(shù)據(jù)等功能。

③ 接收遠(yuǎn)程數(shù)據(jù)。從以太網(wǎng)接收遠(yuǎn)程數(shù)據(jù)并進(jìn)行數(shù)據(jù)正確性和完整性校驗(yàn),將遠(yuǎn)程數(shù)據(jù)存入到數(shù)據(jù)緩存區(qū)中,當(dāng)緩存區(qū)滿后啟動(dòng)Flash更新程序。

④ Flash程序更新。Flash首先擦除當(dāng)前用戶區(qū)域,然后將數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)燒寫(xiě)到用戶區(qū)域中。

⑤ 判斷遠(yuǎn)程數(shù)據(jù)是否接收完成,如果未完成,跳轉(zhuǎn)到步驟③;如果完成,進(jìn)行步驟⑥。

⑥ 完成數(shù)據(jù)更新后,跳轉(zhuǎn)到二次加載程序,重新加載用戶程序。

需要注意的是,當(dāng)網(wǎng)絡(luò)加載程序完成用戶程序更新后,遠(yuǎn)程控制端必須及時(shí)將DSP加載模式切換到直接加載用戶程序模式。

結(jié)語(yǔ)

本文研究了基于網(wǎng)絡(luò)的DSP遠(yuǎn)程加載技術(shù),介紹了遠(yuǎn)程加載需要的硬件基礎(chǔ)和軟件基礎(chǔ),并給出了典型設(shè)計(jì);然后從遠(yuǎn)程加載流程、Flash存儲(chǔ)模型設(shè)計(jì)以及網(wǎng)絡(luò)接口流程設(shè)計(jì)三個(gè)方面研究了具體的遠(yuǎn)程加載方法。本文提出的方法不僅能夠解決基于DSP的遠(yuǎn)程嵌入式系統(tǒng)的加載問(wèn)題,同時(shí)為基于其他處理器的遠(yuǎn)程加載提供了思路,具有較好的工程價(jià)值和廣闊的應(yīng)用前景。

參考文獻(xiàn)

[1] 左顥睿. TMS320C54x與CP2200的接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(9).

[2] TI .TMS320C6000 EMIF to External Flash Memory[EB/OL].[201112].http://www.ti.com/lit/an/spra568a/ spra568a.pdf.

[3] TI.TMS320C6000 TCP/IP Network Developers KitUsers Guide[EB/OL].[201112].http:// www.ti.com/ lit/ug/spru523g/spru523g.pdf.

[4] AMD. Am29F040 Datasheet[EB/OL].[201112].http://www.spansion.com/Support/Datasheets/AM29F040B_EOL_21445e8.pdf.

[5] 左顥睿. C6000系列DSP Flash二次加載技術(shù)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(7).

左顥睿(工程師),主要研究領(lǐng)域?yàn)椴⑿杏?jì)算和嵌入式系統(tǒng)設(shè)計(jì)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。