陳晶華,趙鶴鳴,邵雷
(蘇州大學(xué) 電子信息學(xué)院,蘇州 215012)
?
多核DSP的以太網(wǎng)遠(yuǎn)程程序加載方法
陳晶華,趙鶴鳴,邵雷
(蘇州大學(xué) 電子信息學(xué)院,蘇州 215012)
為了解決工業(yè)遠(yuǎn)程控制設(shè)備的軟件更新帶來(lái)的成本和效率問(wèn)題,在研究了以TMS320C6670為核心的DSP系統(tǒng)的結(jié)構(gòu)和程序啟動(dòng)的基礎(chǔ)上,提出了基于以太網(wǎng)的DSP程序遠(yuǎn)程加載方法。該方法主要基于BOOTP協(xié)議的廣播和以太網(wǎng)UDP協(xié)議實(shí)現(xiàn)。實(shí)踐表明,該加載技術(shù)靈活可靠,為遠(yuǎn)程控制系統(tǒng)的調(diào)試和更新提供了便利。
多核DSP;以太網(wǎng);程序引導(dǎo)
隨著科學(xué)技術(shù)的不斷進(jìn)步,網(wǎng)絡(luò)通信技術(shù)和DSP技術(shù)飛速發(fā)展[1],許多智能儀器儀表、工業(yè)遠(yuǎn)程控制設(shè)備等能夠接入到互聯(lián)網(wǎng),實(shí)現(xiàn)網(wǎng)絡(luò)化、智能化的管理和控制。在這些設(shè)備中,有很多是以DSP為核心的設(shè)備,這些設(shè)備的程序代碼的引導(dǎo)啟動(dòng)是一個(gè)很重要的問(wèn)題。傳統(tǒng)的DSP設(shè)備的程序加載方法是通過(guò)硬件仿真器來(lái)完成的[2],但在實(shí)際工業(yè)應(yīng)用中,這種方法存在仿真器攜帶不便攜和設(shè)備軟件維護(hù)更新不方便等缺點(diǎn)。因此基于網(wǎng)絡(luò)的DSP軟件更新就是一種很好的解決方案。
文中介紹了DSP程序加載的基本原理,以TI公司的多核DSP TMS320C6670為例,實(shí)現(xiàn)了一種基于以太網(wǎng)BOOTP協(xié)議的DSP程序加載技術(shù),利用網(wǎng)絡(luò)通信實(shí)現(xiàn)DSP程序的動(dòng)態(tài)加載[3],提高軟件更新效率。
這里使用傳統(tǒng)的PC機(jī)作為下載服務(wù)器,以TMS320C6670為核心的DSP設(shè)備作為客戶機(jī)[4],客戶機(jī)啟動(dòng)后,不知道任何網(wǎng)絡(luò)信息,需要通過(guò)TCP/IP協(xié)議的相關(guān)協(xié)議IP、UDP、BOOTP提供的功能來(lái)實(shí)現(xiàn)信息的傳播??蛻魴C(jī)通過(guò)BOOTP協(xié)議獲得所需相關(guān)網(wǎng)絡(luò)信息,然后通過(guò)UDP協(xié)議包獲取待執(zhí)行的引導(dǎo)程序,并運(yùn)行之[5]。
1.1 IP協(xié)議和UDP協(xié)議
IP(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)是TCP/IP中網(wǎng)絡(luò)層協(xié)議。UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)是TCP/IP傳輸層的無(wú)連接協(xié)議。由于完整的TCP/IP協(xié)議將占用大量系統(tǒng)資源,所以在高可靠的局域網(wǎng)中,可以采用UDP協(xié)議發(fā)送數(shù)據(jù)包。
1.2 BOOTP協(xié)議
客戶機(jī)啟動(dòng)時(shí),需從網(wǎng)絡(luò)上獲取三種信息:本機(jī)的IP地址、下載服務(wù)器的IP地址、待下載的運(yùn)行程序。
BOOTP(BOOTstrapping Protocol)能為無(wú)盤(pán)機(jī)獲得啟動(dòng)所需的所有信息。在發(fā)送BOOTP請(qǐng)求之前,BOOTP客戶既不知道自己的IP地址,也不知道服務(wù)器的IP地址,BOOTP必須通過(guò)廣播方式發(fā)送請(qǐng)求。BOOTP服務(wù)器收到請(qǐng)求后,根據(jù)以太網(wǎng)地址,從下載數(shù)據(jù)庫(kù)中查出相應(yīng)應(yīng)答表項(xiàng),構(gòu)成BOOTP響應(yīng),再應(yīng)答之。對(duì)于服務(wù)器而言,此時(shí)客戶機(jī)的IP地址已經(jīng)知道,可以直接應(yīng)答,不必用廣播方式。
BOOTP報(bào)文交易就是請(qǐng)求,響應(yīng)一個(gè)來(lái)回,交易成功與否只有客戶知道,因此當(dāng)服務(wù)器關(guān)閉或網(wǎng)絡(luò)工作不正常時(shí),將導(dǎo)致交易出錯(cuò)或報(bào)文丟失,客戶需進(jìn)行重傳處理(每3 s重傳一次)。當(dāng)有多個(gè)響應(yīng)(多服務(wù)器響應(yīng)或BOOTP應(yīng)答延時(shí)),可設(shè)一個(gè)標(biāo)志,客戶只接受并處理第一個(gè)響應(yīng),其余都拋棄。
1.3 BOOTP包格式
BOOTP包格式如圖1所示。
圖1 BOOTP包格式
包操作碼/消息類(lèi)型:1=BOOTREQUEST(引導(dǎo)請(qǐng)求),2=BOOTREPLY(引導(dǎo)應(yīng)答)。硬件地址類(lèi)型:1=10M以太網(wǎng)。硬件地址長(zhǎng)度:6是10M以太網(wǎng)。跳躍點(diǎn)數(shù):用于跨網(wǎng)引導(dǎo),由路由器使用。事務(wù)ID:一個(gè)隨機(jī)數(shù),用來(lái)匹配引用請(qǐng)求和應(yīng)答??蛻舳艘龑?dǎo)所用秒數(shù):由客戶端填寫(xiě),客戶端引導(dǎo)開(kāi)始后的過(guò)去的秒數(shù)??蛻舳薎P地址:BOOTP客戶將此置為0,要求服務(wù)器應(yīng)答本客戶的IP地址。你的IP地址:BOOTP客戶將此設(shè)置為0。服務(wù)器IP地址:由服務(wù)器在引導(dǎo)應(yīng)答返回。網(wǎng)關(guān)IP地址:用于跨網(wǎng)引導(dǎo)時(shí)使用??蛻舳擞布刂罚嚎蛻籼畛浔緳C(jī)MAC地址。服務(wù)器主機(jī)名:用于跨網(wǎng)引導(dǎo)時(shí)使用。引導(dǎo)文件名:BOOTP請(qǐng)求置為0,服務(wù)器應(yīng)答時(shí)將由BOOTPTAB填充一個(gè)特定的運(yùn)行程序路徑名。標(biāo)準(zhǔn)選項(xiàng)域:此域用于BOOTP客戶從服務(wù)器獲得一系列標(biāo)準(zhǔn)選項(xiàng),例如網(wǎng)管IP地址、網(wǎng)關(guān)IP地址、DNS域名服務(wù)器IP地址、客戶機(jī)名等。
1.4 以太網(wǎng)數(shù)據(jù)包格式
以太網(wǎng)請(qǐng)求包格式如圖2所示。
圖2 以太網(wǎng)請(qǐng)求包格式
DIX以太網(wǎng)中包含目標(biāo)MAC地址(一般為FF:FF:FF:FF:FF:FF)和源MAC地址(即設(shè)備本身MAC地址)。IPV4中包含版本號(hào)、長(zhǎng)度、協(xié)議、校驗(yàn)和及源地址IP和目標(biāo)地址IP(這里IP地址均為0.0.0.0)。UDP中包含源端口、目標(biāo)端口、長(zhǎng)度及校驗(yàn)和。
以太網(wǎng)引導(dǎo)包格式如圖3所示。
圖3 以太網(wǎng)引導(dǎo)包格式
系統(tǒng)采用多核TMS320C6670 DSP芯片作為主控芯片,其內(nèi)置千兆網(wǎng)絡(luò)協(xié)處理器[6],所以外圍電路只需增加物理層芯片。結(jié)構(gòu)框圖如圖4所示。
圖4 硬件結(jié)構(gòu)框圖
客戶機(jī):當(dāng)硬件復(fù)位時(shí),在RESET信號(hào)上升前,配置好開(kāi)發(fā)板上的撥碼開(kāi)關(guān)SW3、SW4、SW5、SW6,確定TMS320C6670芯片為以太網(wǎng)引導(dǎo)方式。RBL(ROM Boot Loader)配置SerDes,SGMII和PASS準(zhǔn)備接收來(lái)自以太網(wǎng)接口的引導(dǎo)包。RBL配置發(fā)送通道發(fā)送以太網(wǎng)請(qǐng)求包(每3 s發(fā)送一次)。
服務(wù)器即PC機(jī)端用Wireshark軟件作為抓包軟件,以太網(wǎng)請(qǐng)求包廣播到服務(wù)器端,見(jiàn)圖5,從中可以看出間隔約3 s多客戶機(jī)廣播一次BOOTP包。
圖5 上位機(jī)接收到BOOTP
圖6 以太網(wǎng)請(qǐng)求包
圖6為以太網(wǎng)請(qǐng)求包主要內(nèi)容,與原理中描述的以太網(wǎng)請(qǐng)求包格式是一致的,包含DIX以太網(wǎng)、IPV4、UDP協(xié)議和BOOTP協(xié)議包。
圖7為接收到的BOOTP包內(nèi)容。
圖7 BOOTP包
服務(wù)器此時(shí)收到了BOOTP協(xié)議包,獲得了客戶機(jī)的MAC地址,此時(shí)要進(jìn)行ARP(Address Resolution Protocol,地址解析協(xié)議)地址綁定。在完成上面兩步后,通過(guò)上位機(jī)通信程序?qū)募l(fā)送給客戶機(jī)[7-8]。圖8為截取的UDP發(fā)送圖。
圖8 UDP包發(fā)送
圖9為以太網(wǎng)引導(dǎo)包內(nèi)容。
圖9 UDP太網(wǎng)引導(dǎo)包
當(dāng)幀文件發(fā)送完畢后,客戶機(jī)根據(jù)接收來(lái)的數(shù)據(jù)進(jìn)行處理,找到數(shù)據(jù)部分,進(jìn)行啟動(dòng)加載。
在CCS 開(kāi)發(fā)環(huán)境下生成的目標(biāo)文件是*.out, 即通用目標(biāo)文件格式( COFF) 。該文件可以在CCS 開(kāi)發(fā)環(huán)境下通過(guò)仿真器下載到DSP 目標(biāo)板中運(yùn)行調(diào)試, 但該代碼文件并不是DSP 中實(shí)際運(yùn)行的程序代碼, 需用Hex工具( hex6x. exe) 進(jìn)行轉(zhuǎn)換成引導(dǎo)表文件, 然后再用bconvert64x.exe和bootpacket.exe工具將引導(dǎo)表文件轉(zhuǎn)換成以太網(wǎng)引導(dǎo)格式數(shù)據(jù)文件,并封裝成幀文件。
[1] 李方慧.TMS320C6000系列DSPs芯片的原理與應(yīng)用[M].北京:電子工業(yè)出版社, 2000.
[2] 劉德生, 李杰. 基于JTAG 的DSP 外部Flash 在線編程與引導(dǎo)技術(shù)[J]. 電子技術(shù)應(yīng)用,2005(3).
[3] 卞紅雨,TMS320C6000系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,2007.
[4] Texas Instruments Inc. TMS320C6670 data manual,2011.
[5] Texas Instruments Inc. KeyStone Architecture Bootloader User Guide,2012.
[6] Texas Instruments. KeyStone Architecture Network Coprocessor User Guide, 2010.
[7] Texas Instruments. TMS320C6000 Assembly Language Tools User Guide,2012.
[8] Texas Instruments. KeyStone Architecture Gigabit Ethernet Switch Subsystem User Guide, 2012.
陳晶華(碩士),主要研究方向?yàn)閿?shù)字信號(hào)處理;趙鶴鳴(教授),主要研究方向?yàn)檎Z(yǔ)音信號(hào)處理;邵雷(碩士),主要研究方向?yàn)榍度胧较到y(tǒng)。
Ethernet Program Loading Based on Multi-core DSP
Chen Jinghua, Zhao Heming,Shao Lei
(College of Electronic Information, Soochow University,Suzhou 215012,China)
In order to solve the problems that cost and efficiency of industrial remote control device software update brings, based on the TMS320C6670 DSP core structure of the system and the program boots, this paper presents the remote loading method for Ethernet-based DSP software. The method is mainly based on the BOOTP protocol broadcast and Ethernet UDP protocol. Practice shows that the add-in flexible and reliable technology, which provides a convenient remote control system debugging and updating.
multi-core DSP;Ethernet;program guide
TP311.1
A
珍
2013-10-24)