李司
【摘要】 為滿足基于TDD同步調(diào)度機(jī)制的移動(dòng)自組網(wǎng)設(shè)計(jì)方案中網(wǎng)絡(luò)層路由算法與MAC層調(diào)度協(xié)議處理需求,構(gòu)建了基于S3C6410 ARM處理器與TMS320C6416 DSP處理器的多核構(gòu)架的移動(dòng)自組網(wǎng)節(jié)點(diǎn)路由與調(diào)度處理單元,并給出了基于HPI接口的多處理器層間數(shù)據(jù)交互硬件設(shè)計(jì)方案與軟件設(shè)計(jì)架構(gòu)。實(shí)現(xiàn)結(jié)果證明HPI接口可靠、穩(wěn)定,滿足自組網(wǎng)節(jié)點(diǎn)層間高速數(shù)據(jù)傳輸要求。
【關(guān)鍵詞】 移動(dòng)自組網(wǎng) ARM DSP HPI
一、引言
移動(dòng)自組網(wǎng)是由一組帶有無(wú)線收發(fā)裝置的節(jié)點(diǎn)組成的一個(gè)臨時(shí)性多跳自治網(wǎng)絡(luò),網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)同時(shí)具有普通網(wǎng)絡(luò)節(jié)點(diǎn)和路由器的雙重功能。該網(wǎng)絡(luò)無(wú)需任何基礎(chǔ)設(shè)施,可隨時(shí)隨地快速靈活部署,且具有極強(qiáng)的抗毀特性,在軍事作戰(zhàn)和民用應(yīng)急通信領(lǐng)域都具有廣闊的應(yīng)用前景,是目前網(wǎng)絡(luò)構(gòu)建方案研究中的熱點(diǎn)問(wèn)題。
移動(dòng)自組網(wǎng)節(jié)點(diǎn)設(shè)備作為該網(wǎng)絡(luò)構(gòu)建的基礎(chǔ),其特殊的體系結(jié)構(gòu)是自組網(wǎng)系統(tǒng)具有無(wú)中心、自組織、抗毀性強(qiáng)等特性的關(guān)鍵。目前自組網(wǎng)節(jié)點(diǎn)設(shè)備實(shí)現(xiàn)技術(shù)的研究中有兩類主流實(shí)現(xiàn)方案:1)基于CSMA/CA的競(jìng)爭(zhēng)方案,該方案多采用嵌入式處理器加802.11協(xié)議標(biāo)準(zhǔn)的制式芯片實(shí)現(xiàn),其中ARM處理器實(shí)現(xiàn)自組網(wǎng)路由協(xié)議處理,制式芯片實(shí)現(xiàn)物理層及MAC層功能。該方案實(shí)現(xiàn)簡(jiǎn)單,但由采用基于競(jìng)爭(zhēng)的MAC層協(xié)議,因此網(wǎng)絡(luò)吞吐量無(wú)法得到保障。2)基于TDD的同步調(diào)度方案,該方案采用同步調(diào)度機(jī)制,大大減少碰撞發(fā)生,從而保障了網(wǎng)絡(luò)的吞吐量。但該方案尚未有相關(guān)制式芯片可以使用,因此需要采用軟件無(wú)線電方案自主研發(fā)。本文中移動(dòng)自組網(wǎng)節(jié)點(diǎn)基于TDD同步調(diào)度方案實(shí)現(xiàn),采用ARM+DSP+FPGA的多處理器協(xié)同結(jié)構(gòu),其中ARM實(shí)現(xiàn)節(jié)點(diǎn)業(yè)務(wù)接入與網(wǎng)絡(luò)路由協(xié)議處理,DSP實(shí)現(xiàn)同步式MAC層協(xié)議處理,F(xiàn)PGA實(shí)現(xiàn)寬帶無(wú)線收發(fā)基帶處理。在上述多處理器協(xié)同方案設(shè)計(jì)中,處理器間數(shù)據(jù)交互方案是系統(tǒng)設(shè)計(jì)的關(guān)鍵問(wèn)題之一。本文將重點(diǎn)介紹ARM與DSP間基于HPI接口的數(shù)據(jù)交互方案設(shè)計(jì)。
二、移動(dòng)自組網(wǎng)節(jié)點(diǎn)整體結(jié)構(gòu)
移動(dòng)自組網(wǎng)節(jié)點(diǎn)硬件結(jié)構(gòu)如圖1所示。節(jié)點(diǎn)設(shè)備包括路由與調(diào)度單元以及無(wú)線收發(fā)單元兩部分,其中路由與調(diào)度單元承載自組網(wǎng)節(jié)點(diǎn)的網(wǎng)絡(luò)協(xié)議與同步MAC層處理算法,無(wú)線收發(fā)單元在MAC層協(xié)議調(diào)度下實(shí)現(xiàn)基于TDD的物理層無(wú)線收發(fā)處理。
在路由與調(diào)度單元硬件設(shè)計(jì)中,ARM處理器選用SAMSUNG公司的S3C6410。該芯片是一款低功耗、高性能的適用于移動(dòng)便攜設(shè)備的通用嵌入式處理器,基于64/32位的RISC(Reduced Instruction Set Computer)構(gòu)架。它采用ARM1176JZF-S內(nèi)核,最高工作頻率可達(dá)667MHz,具有強(qiáng)大的外設(shè)管理功能,適合于自組網(wǎng)節(jié)點(diǎn)路由算法、業(yè)務(wù)接入處理以及人機(jī)交互操作管理。
DSP處理器選用TI公司的TMS320C6416。該處理器是TI公司C6000系列中的一款高性能定點(diǎn)DSP器件。在最高1GHz主時(shí)鐘下,其處理能力達(dá)到8000 MIPS,其強(qiáng)大的處理能力可滿足MAC層的分布式網(wǎng)同步算法以及實(shí)時(shí)資源調(diào)度的處理需要。同時(shí)它具有豐富的外部設(shè)備接口,可實(shí)現(xiàn)與不同外部處理器間的數(shù)據(jù)交互。
在路由與調(diào)度功能單元的雙處理器設(shè)計(jì)結(jié)構(gòu)中,ARM作為主處理器,需要實(shí)時(shí)與DSP進(jìn)行上下行業(yè)務(wù)數(shù)據(jù)以及信令數(shù)據(jù)交互。本方案選擇HPI作為處理器間通信接口。該接口硬件復(fù)雜度低,無(wú)需添加外置邏輯電路。且該接口基于DMA方式完成數(shù)據(jù)傳輸,占用DSP處理資源較少,不會(huì)影響DSP中其它高優(yōu)先級(jí)的實(shí)時(shí)處理工作。
三、節(jié)點(diǎn)中HPI接口硬件設(shè)計(jì)
HPI(Host Port Interface)是TMS302C6416中的一個(gè)并行數(shù)據(jù)端口。ARM通過(guò)該端口可作為主處理器直接訪問(wèn)DSP內(nèi)部的存儲(chǔ)空間以及存儲(chǔ)器映射的外設(shè),并且可通過(guò)DMA/
表1 HPI接口引腳信號(hào)及其功能
信號(hào)名稱 類型 信號(hào)數(shù) 主機(jī)連接 信號(hào)功能
HD[15:0] I/O 16 數(shù)據(jù)總線 數(shù)據(jù)輸入輸出
THCNTL[1-0] I 2 地址線 HPI寄存器訪問(wèn)控制
THHWIL I 1 地址線 半字識(shí)別輸入
THR/W I 1 讀/寫(xiě)選通 讀寫(xiě)選擇
THCS I 1 片選控制線 數(shù)據(jù)選通輸入
THDS2 I 1 寫(xiě)選通 數(shù)據(jù)選通輸入
THDS1 I 1 讀選通 數(shù)據(jù)選通輸入
THRDY O 1 異步準(zhǔn)備信號(hào) 當(dāng)前HPI訪問(wèn)的準(zhǔn)備狀態(tài)
THINT O 1 主機(jī)中斷輸入 向主機(jī)發(fā)出的中斷信號(hào)
EDMA控制器來(lái)訪問(wèn)存儲(chǔ)空間。在具體數(shù)據(jù)交互的操作中,ARM通過(guò)對(duì)HPIC(HPI控制寄存器)、HPIA(HPI地址寄存器)以及HPID(HPI數(shù)據(jù)寄存器)寄存器的讀寫(xiě)操作來(lái)實(shí)現(xiàn)HPI數(shù)據(jù)接口通信。此外HPI數(shù)據(jù)總線寬度可通過(guò)外部配置引腳設(shè)置為HPI16(16bit總線)與HPI32(32bit總線)兩種模式。
ARM(S3C6410)與DSP(TMS320C6416)硬件連接如圖2所示。根據(jù)層間數(shù)據(jù)吞吐要求設(shè)置HPI總線為HPI16模式,并將HPI接口的HD[15:0]總線連接到ARM的數(shù)據(jù)總線。在層間數(shù)據(jù)交互操作中,ARM作為主機(jī),DSP看作是ARM的一個(gè)外部設(shè)備。HPI接口信號(hào)的功能定義如表1所示。
ARM 通過(guò)ADDR2與ADDR1地址線控制THCNTL1/0信號(hào),聯(lián)合選擇要訪問(wèn)的HPI寄存器。此外通過(guò)地址線ADDR3控制THHWIL信號(hào),用于識(shí)別在HPI16模式下傳輸?shù)氖堑谝粋€(gè)半字還是第二個(gè)半字。
在TMS320C6416芯片內(nèi)部,對(duì)于HPI讀寫(xiě)數(shù)據(jù)總線選通處理,采用了特殊的設(shè)計(jì)結(jié)構(gòu)。如圖3所示,在DSP內(nèi)部對(duì)HPI接口的THCS、THDS1、THDS2三個(gè)輸入信號(hào)進(jìn)行組合邏輯運(yùn)算,生成數(shù)據(jù)閘門(mén)信號(hào),控制讀寫(xiě)數(shù)據(jù)總線選通。該設(shè)計(jì)增加了主機(jī)處理器與DSP間硬件連接的靈活性,從而使HPI接口可以很好的匹配不同處理器的數(shù)據(jù)接口。本設(shè)計(jì)根據(jù)S3C6410接口時(shí)序特性,采用CSn5、OEn、WEn分別與THCS、THDS1、THDS2連接。
四、節(jié)點(diǎn)中HPI接口軟件設(shè)計(jì)
ARM主處理器基于嵌入式Linux操作系統(tǒng),其在完成網(wǎng)絡(luò)層路由算法處理的同時(shí)實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的吞吐與協(xié)議封裝,而后再通過(guò)HPI接口將上下行業(yè)務(wù)數(shù)據(jù)以及系統(tǒng)信令數(shù)據(jù)與DSP進(jìn)行交互。在HPI接口的數(shù)據(jù)交互處理中,ARM將該操作視為對(duì)一種外部設(shè)備的讀寫(xiě)處理,軟件設(shè)計(jì)分為驅(qū)動(dòng)程序設(shè)計(jì)與應(yīng)用程序設(shè)計(jì)兩個(gè)層次實(shí)現(xiàn)。
4.1驅(qū)動(dòng)程序設(shè)計(jì)
在HPI接口軟件設(shè)計(jì)中,驅(qū)動(dòng)程序是ARM與DSP通信實(shí)現(xiàn)的關(guān)鍵。ARM在嵌入式Linux下,通過(guò)對(duì)HPI設(shè)備驅(qū)動(dòng)文件的打開(kāi)、關(guān)閉、讀、寫(xiě)等操作來(lái)完成對(duì)HPI的設(shè)備操作。與應(yīng)用程序不同,驅(qū)動(dòng)程序與硬件相關(guān),且工作在內(nèi)核空間,可對(duì)中斷、存儲(chǔ)空間等底層資源進(jìn)行操作和調(diào)配,直接影響硬件效率和系統(tǒng)穩(wěn)定性。此外,設(shè)計(jì)中HPI驅(qū)動(dòng)程序不但要實(shí)現(xiàn)ARM與DSP的雙向傳輸通道,而且要在保證穩(wěn)定性和應(yīng)用層效率的條件下,盡量提高傳輸速率。
驅(qū)動(dòng)程序的總體結(jié)構(gòu)如圖4所示,可分為應(yīng)用層接口、內(nèi)核線程、數(shù)據(jù)結(jié)構(gòu)、通信協(xié)議和硬件實(shí)體操作五部分。
4.1.1應(yīng)用層接口
為保證應(yīng)用程序的可移植性,驅(qū)動(dòng)程序需采用標(biāo)準(zhǔn)化文件接口,包括open、close、write、read、以及ioctl。
open和close實(shí)現(xiàn)接口的打開(kāi)和關(guān)閉以及資源的申請(qǐng)和釋放,為了保證應(yīng)用層的效率,write和read采用阻塞的讀寫(xiě)方式,通過(guò)wait_queue機(jī)制,使應(yīng)用程序在無(wú)法得到驅(qū)動(dòng)資源的情況下進(jìn)入休眠狀態(tài),提高系統(tǒng)整體運(yùn)行效率。
4.1.2內(nèi)核線程
為保證高數(shù)據(jù)率的總線傳輸,讀與寫(xiě)的操作不能順序化,必須采用應(yīng)用層接口函數(shù)操作和底層硬件操作異步進(jìn)行方式。通過(guò)write_thread和read_thread兩個(gè)內(nèi)核線程實(shí)現(xiàn)應(yīng)用層操作的異步化。以寫(xiě)過(guò)程為例,應(yīng)用程序調(diào)用write后,驅(qū)動(dòng)程序并不直接進(jìn)行硬件總線操作,而是迅速將數(shù)據(jù)寫(xiě)入驅(qū)動(dòng)緩存,驅(qū)動(dòng)程序在CPU空閑時(shí)從緩存內(nèi)取出數(shù)據(jù),進(jìn)行總線讀寫(xiě),從而大大提高了傳輸效率。內(nèi)核線程與應(yīng)用層線程區(qū)別較大,不能完全依靠系統(tǒng)調(diào)度,根據(jù)操作流程需要,通過(guò)軟件設(shè)計(jì)干預(yù)系統(tǒng)調(diào)度。
4.1.3數(shù)據(jù)結(jié)構(gòu)
考慮到后級(jí)吞吐能力,驅(qū)動(dòng)程序設(shè)計(jì)中還要考慮速率匹配問(wèn)題。本設(shè)計(jì)中實(shí)現(xiàn)了深度可變的FIFO數(shù)據(jù)結(jié)構(gòu),方便對(duì)各種大小的數(shù)據(jù)單元進(jìn)行緩存,根據(jù)系統(tǒng)需求進(jìn)行數(shù)據(jù)速率匹配,從而保證不會(huì)使后級(jí)發(fā)生溢出,同時(shí)兼顧系統(tǒng)的低延時(shí)要求。
4.1.4通信協(xié)議
在通信協(xié)議設(shè)計(jì)方面,驅(qū)動(dòng)程序通過(guò)設(shè)計(jì)可用標(biāo)志、數(shù)據(jù)大小、數(shù)據(jù)存儲(chǔ)區(qū)指針等內(nèi)存關(guān)鍵字段,實(shí)現(xiàn)ARM與DSP間的總線上層通信協(xié)議。此外,通過(guò)標(biāo)志位的互斥,保證了DSP內(nèi)存臨界區(qū)的數(shù)據(jù)安全。
4.1.5硬件操作實(shí)體
在硬件層面上,ARM主處理器與DSP間的數(shù)據(jù)交互是通過(guò)對(duì)控制寄存器HPIC、地址寄存器HPIA以及數(shù)據(jù)寄存器HPID的讀寫(xiě)操作實(shí)現(xiàn)的。驅(qū)動(dòng)程序?qū)崿F(xiàn)的底層硬件通信就是對(duì)上述寄存器的操作。驅(qū)動(dòng)設(shè)計(jì)中需要注意:ARM外部設(shè)備I/O 端口的物理地址只有被映射到內(nèi)存地址空間才能被訪問(wèn),即所謂內(nèi)存映射。因此,需要將HPI接口的物理地址映射到內(nèi)核空間,這樣每個(gè)寄存器就具有了相應(yīng)內(nèi)存地址,通過(guò)對(duì)相應(yīng)地址單元的讀寫(xiě)即可完成對(duì)相應(yīng)寄存器的操作。
4.2應(yīng)用程序設(shè)計(jì)
應(yīng)用程序工作流程如圖5所示。在下行業(yè)務(wù)數(shù)據(jù)處理過(guò)程中,ARM由網(wǎng)口接收數(shù)據(jù),進(jìn)行協(xié)議封裝后,調(diào)用HPI接口驅(qū)動(dòng)程序發(fā)送給DSP。上行業(yè)務(wù)處理流程與上述過(guò)程相反不再贅述。應(yīng)用程序由網(wǎng)口UDP接收、發(fā)送以及HPI接口接收、發(fā)送四個(gè)內(nèi)核進(jìn)程實(shí)現(xiàn)移動(dòng)自組網(wǎng)上下行業(yè)務(wù)的傳輸。
五、結(jié)束語(yǔ)
本文在移動(dòng)自組網(wǎng)節(jié)點(diǎn)實(shí)現(xiàn)技術(shù)研究的基礎(chǔ)上,給出了適用于TDD同步調(diào)度機(jī)制自組網(wǎng)系統(tǒng)的多處理器節(jié)點(diǎn)設(shè)計(jì)架構(gòu),并重點(diǎn)介紹了節(jié)點(diǎn)設(shè)備中TMS320C6416 DSP和S3C6410 ARM處理器間,基于HPI接口的層間數(shù)據(jù)傳輸軟硬件設(shè)計(jì)方案。經(jīng)過(guò)實(shí)際測(cè)試表明,設(shè)計(jì)中HPI接口可以滿足層間高速數(shù)據(jù)交互處理要求。本方案中HPI接口硬件設(shè)計(jì)簡(jiǎn)單靈活、性能穩(wěn)定可靠,且具有通用性,可適用于其它實(shí)時(shí)高速數(shù)據(jù)傳輸應(yīng)用。
參 考 文 獻(xiàn)
[1]張程,移動(dòng)自組網(wǎng)關(guān)鍵技術(shù)研究[D],重慶大學(xué),2010.
[2]徐偉 陸珉,探底雷達(dá)顯控單元中的HPI應(yīng)用技術(shù)研究[J],現(xiàn)代電子技術(shù),2013,3,5期:10-12.
[3]孫德瑋. 基于HPI接口實(shí)現(xiàn)DSP和ARM間的通信[J],微處理機(jī). 2009,6,3期:61-63.
[4] TEXAS INSTRUMENTS. TMS320C6000 DSP Host Port Interface(HPI) Reference Guide. 2008.
[5] SAMSUNG. S3C6410X RISC Microprocessor USERS MANUAL. 2008.