閆渠成,,李勇
?。ㄉ虾:J麓髮W(xué) 物流工程學(xué)院,上海 201306)
摘要:提出了基于TMS320C6657的嵌入式Web視頻服務(wù)器設(shè)計(jì)方案,。設(shè)計(jì)利用CGI接口實(shí)現(xiàn)瀏覽器端與服務(wù)器端的數(shù)據(jù)交互以及底層硬件的控制,采用H.264視頻編碼壓縮視頻,,采用RTP/RTCP協(xié)議實(shí)現(xiàn)實(shí)時(shí)視頻傳輸,。實(shí)驗(yàn)證明,基于TMS320C6657的嵌入式Web服務(wù)器性能可靠,。
關(guān)鍵詞:TMS320C6657; 嵌入式Web視頻服務(wù)器; 網(wǎng)絡(luò)開發(fā)工具包(NDK); H.264
0引言
在工業(yè)探測系統(tǒng),、工業(yè)控制、智能儀器,、安全防衛(wèi)系統(tǒng)等領(lǐng)域中的嵌入式控制系統(tǒng),,只要實(shí)現(xiàn)了與網(wǎng)絡(luò)的接入技術(shù),無論何時(shí)何地,,都可以實(shí)現(xiàn)開放的,、基于網(wǎng)絡(luò)的、低成本的遠(yuǎn)程控制[1]。將嵌入式技術(shù)與 Web 技術(shù)聯(lián)合已經(jīng)成為嵌入式領(lǐng)域的研究熱點(diǎn)[2],。
本文提出了一種基于TMS320C6657的以雙核DSP為核心搭建視頻服務(wù)器平臺(tái)的方案,,滿足工業(yè)現(xiàn)場實(shí)時(shí)傳輸視頻和遠(yuǎn)程控制的需求。TMS320C6657是定點(diǎn)/浮點(diǎn)數(shù)字信號(hào)處理器(DSP),,基于KeyStone多核架構(gòu),,內(nèi)核速度高達(dá)1.25 GHz,集成了C66X內(nèi)核,、存儲(chǔ)器子系統(tǒng),、外設(shè)和加速器在內(nèi)的各種子系統(tǒng)。其中千兆以太網(wǎng)子系統(tǒng)具有一個(gè)SGMII端口,,支持10/100/1 000 Mb/s操作[3],。內(nèi)置SYS/BIOS操作系統(tǒng),容易實(shí)現(xiàn)TCP/IP協(xié)議,,降低了開發(fā)難度,,縮短了開發(fā)周期。
1服務(wù)器硬件結(jié)構(gòu)
TMS320C6657外設(shè)千兆以太網(wǎng)接口和Flash存儲(chǔ)模塊,。系統(tǒng)結(jié)構(gòu)如圖1所示,。本設(shè)計(jì)中將TMS320C6657設(shè)計(jì)為嵌入式Web服務(wù)器,通過以太網(wǎng)接口接入上位機(jī)所在的同一個(gè)局域網(wǎng)中,。系統(tǒng)運(yùn)行程序存入Flash+存儲(chǔ)模塊,,系統(tǒng)上電后寫入片上SRAM以及片外DDR3運(yùn)行程序。系統(tǒng)通過SRIO互聯(lián)方式,,將經(jīng)過FPGA預(yù)處理的視頻碼流送到DSP中并進(jìn)行視頻H.264編碼,,壓縮后的視頻碼流將以RTP/RTCP協(xié)議把數(shù)據(jù)打包傳輸給上位機(jī)。上位機(jī)可以在網(wǎng)頁瀏覽器上通過安裝插件對壓縮后的視頻碼流進(jìn)行解碼和遠(yuǎn)程控制Web服務(wù)器改變視頻處理參數(shù),,實(shí)現(xiàn)Web視頻服務(wù)器的功能,。
2服務(wù)器系統(tǒng)軟件設(shè)計(jì)
TMS320C6657內(nèi)置SYS/BIOS操作系統(tǒng),利用SYS/BIOS操作系統(tǒng)和TI的網(wǎng)絡(luò)開發(fā)包NDK即可實(shí)現(xiàn)TCP/IP協(xié)議棧的配置,、Web服務(wù)器搭建,、多線程任務(wù)管理和用戶交互界面設(shè)計(jì)。通過H.264編碼器完成視頻編碼,,由RTP/RTCP協(xié)議完成視頻流的實(shí)時(shí)傳輸,,實(shí)現(xiàn)一個(gè)完整的嵌入式Web服務(wù)器設(shè)計(jì)。
2.1Web服務(wù)器搭建
圖2嵌入式Web視頻服務(wù)器軟件線程結(jié)構(gòu)圖搭建嵌入式Web服務(wù)器必須先配置SYS/BIOS和NDK的相關(guān)基礎(chǔ)模塊,,并進(jìn)行必要的參數(shù)設(shè)置,。
(1)添加BIOS操作系統(tǒng)模塊,、NDK模塊,、EMAC模塊,、IP模塊、TCP模塊,、HTTP模塊以及添加啟動(dòng)函數(shù),。
(2)配置IP地址和相關(guān)信息,,創(chuàng)建靜態(tài)線程,。
(3)指定相應(yīng)的鉤子函數(shù)主體,。
根據(jù)配置文件,,只要添加了NDK相應(yīng)的模塊,就會(huì)執(zhí)行初始化網(wǎng)絡(luò)環(huán)境并開啟堆棧線程,,通過CfgNew()創(chuàng)建一個(gè)新的配置,。一旦創(chuàng)建完畢就會(huì)執(zhí)行一個(gè)鉤子函數(shù),通常用這個(gè)函數(shù)來將瀏覽器的網(wǎng)頁以及CGI接口加入到程序中,。堆棧線程還會(huì)根據(jù)配置文件將具體配置數(shù)據(jù)自動(dòng)生成并添加到CfgNew創(chuàng)造的配置文件中,。
隨后線程會(huì)調(diào)用NC_NetStart()程序,該程序會(huì)在適當(dāng)?shù)臅r(shí)候調(diào)用相應(yīng)鉤子函數(shù)NetworkOpen(),,其作用是加入后臺(tái)程序,,實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)。當(dāng)程序監(jiān)聽到IP地址發(fā)生變化時(shí),,線程會(huì)調(diào)用NetworkIPaddr()函數(shù),。當(dāng)檢測收發(fā)性能時(shí),TCP,、UDP收發(fā)錯(cuò)誤會(huì)調(diào)用NetworkClose()關(guān)閉開啟的后臺(tái)線程并釋放相應(yīng)空間,。調(diào)用Cfgfree()釋放CfgNew()創(chuàng)建的配置,最后關(guān)閉整個(gè)網(wǎng)絡(luò)線程,。
2.2視頻編碼及實(shí)時(shí)傳輸設(shè)計(jì)
目前主流的視頻格式是1 080 p格式,,在目前網(wǎng)絡(luò)環(huán)境下,原碼視頻傳輸速度是達(dá)不到實(shí)時(shí)性要求的,。采用H.264編碼可以縮小視頻空間,,提高傳輸效率。H.264標(biāo)準(zhǔn)汲取以往標(biāo)準(zhǔn)中的優(yōu)點(diǎn),,編碼效率與過去相比最多可節(jié)省50%的碼率,存儲(chǔ)需求大大降低[4],。H.264獲得優(yōu)越性能的代價(jià)是計(jì)算復(fù)雜度的大幅增加[5],。為了滿足靈活性和適應(yīng)性要求,H.264設(shè)計(jì)包含視頻編碼層(VCL)和網(wǎng)絡(luò)抽象層(NAL)兩層[6],。VCL負(fù)責(zé)壓縮內(nèi)容,,NAL負(fù)責(zé)傳輸格式化,。
視頻源碼從FPGA收到并放入一個(gè)動(dòng)態(tài)創(chuàng)建的緩沖中,通過TI工具包中的H.264編碼器進(jìn)行編碼,。先創(chuàng)建配置編碼器,,并在配置完成后開始編碼。編碼后經(jīng)壓縮的碼流由RTP模塊進(jìn)行打包發(fā)送,。
2.3用戶交互界面設(shè)計(jì)
NDK操作系統(tǒng)庫中具有嵌入式文件系統(tǒng)(EFS),,HTTP服務(wù)器通過該系統(tǒng)將網(wǎng)頁及相關(guān)的文件放入指定的存儲(chǔ)介質(zhì)中。先將HTML文件轉(zhuǎn)化成二進(jìn)制數(shù)組文件,,調(diào)用EFS接口函數(shù)添加至系統(tǒng)中,。
要實(shí)現(xiàn)動(dòng)態(tài)交互的功能,必須使用CGI接口,。本設(shè)計(jì)采用網(wǎng)頁表單數(shù)據(jù)控制并修改TMS320C6657的相關(guān)設(shè)置,,調(diào)用CGI程序處理相應(yīng)修改請求。具體實(shí)現(xiàn)如下:
?。?)采用POST方式,,根據(jù)POST內(nèi)容長度動(dòng)態(tài)創(chuàng)建緩沖區(qū)大小,通過recv()函數(shù)讀取數(shù)據(jù)至緩沖區(qū)中,。
?。?)通過cgiParseVars()函數(shù)依次解析數(shù)據(jù)內(nèi)容。
?。?)根據(jù)數(shù)據(jù)內(nèi)容處理相應(yīng)請求,。
(4)向客戶端發(fā)送HTTP相應(yīng)報(bào)文,,動(dòng)態(tài)生成回復(fù)頁面報(bào)告處理結(jié)果,。
(5)完成并釋放創(chuàng)建空間,。
2.4多線程任務(wù)設(shè)計(jì)
為了實(shí)現(xiàn)瀏覽器/服務(wù)器模式以及通過網(wǎng)頁對TMS320C6657底層硬件操作,,需要設(shè)計(jì)一個(gè)多線程系統(tǒng)。SYS/BIOS的特點(diǎn)就是優(yōu)先級搶占式任務(wù)管理,,將每一個(gè)線程作為一個(gè)模塊化函數(shù),,并設(shè)置特定的優(yōu)先等級,通過輔助模塊信號(hào),、事件,、郵箱達(dá)到對不同進(jìn)程之間同步、阻塞,、通信的目的,。
2.4.1系統(tǒng)構(gòu)成
本設(shè)計(jì)的多線程任務(wù)流程如圖2所示。本系統(tǒng)分為3個(gè)部分,,主線程用于初始化TMS320C6657硬件及外設(shè)資源,,初始化配置文件開啟網(wǎng)絡(luò)服務(wù),、后臺(tái)程序,執(zhí)行網(wǎng)絡(luò)基本服務(wù),、視頻編碼及傳輸,;控制線程,由一個(gè)或者多個(gè)線程組成,,按需動(dòng)態(tài)生成,,結(jié)束時(shí)會(huì)向主線程發(fā)出信號(hào)報(bào)告任務(wù)完成。
2.4.2系統(tǒng)線程規(guī)劃
BIOS系統(tǒng)啟動(dòng)后,,先會(huì)進(jìn)入主線程打開網(wǎng)絡(luò)服務(wù),。配置完相關(guān)設(shè)置后,HTTP服務(wù)器就緒,,靜態(tài)網(wǎng)頁即可打開,,CGI程序等待接收請求。隨后開啟后臺(tái)程序,,創(chuàng)建緩沖空間執(zhí)行視頻編碼,,數(shù)據(jù)打包發(fā)送。用戶打開瀏覽器可以在特定頁面看到視頻流,,當(dāng)進(jìn)行相關(guān)操作時(shí),,服務(wù)器就會(huì)接收到請求,并在相應(yīng)的CGI 程序中動(dòng)態(tài)創(chuàng)建新的控制線程,,等待控制線程的結(jié)束信號(hào),。系統(tǒng)會(huì)一直等待請求,直到網(wǎng)絡(luò)服務(wù)關(guān)閉,。
當(dāng)有多個(gè)線程同時(shí)出現(xiàn)在同一個(gè)系統(tǒng)中時(shí)就要考慮優(yōu)先級關(guān)系,。除了提前設(shè)定好優(yōu)先級以外,它還提供了一些專用模塊確保系統(tǒng)遵循設(shè)計(jì)者的意愿執(zhí)行,。本設(shè)計(jì)中使用的是信號(hào)量模塊,。信號(hào)量是調(diào)配多個(gè)任務(wù)之間調(diào)用或處理共享信息時(shí)的常用解決方案。信號(hào)量分為單值和多值兩種,,本設(shè)計(jì)運(yùn)用單值信號(hào)量來確保用于底層硬件控制的那些參數(shù)和全局變量會(huì)在動(dòng)態(tài)創(chuàng)建的控制線程里處理完之后才會(huì)被主線程讀取,,保證了共享數(shù)據(jù)的安全存取。
3結(jié)果與分析
為檢測嵌入式Web視頻服務(wù)器的功能,,搭建了測試環(huán)境,,分別檢測服務(wù)器通信速度和服務(wù)器功能。通過TMS320C6657的以太網(wǎng)接口和上位機(jī)的網(wǎng)口使嵌入式服務(wù)器與上位機(jī)處在同一個(gè)局域網(wǎng)中,。
3.1Web服務(wù)器傳輸速度測試
為了檢測基礎(chǔ)TCP/UDP的收發(fā),,在后臺(tái)程序中加入了檢測程序。檢測程序通過不斷請求發(fā)送和接收檢測傳輸速度。由于上位機(jī)和TMS320C6657配置的都是千兆網(wǎng)口,理論速度可以達(dá)到128 Mb/s,。表1分別是接收和發(fā)送TCP/UDP數(shù)據(jù)的情況。
考慮到緩存大小以及數(shù)據(jù)存儲(chǔ)位置和中間過程,,測試結(jié)果理想,,滿足實(shí)時(shí)傳輸?shù)囊蟆?/p>
3.2Web服務(wù)器功能測試
為了測試Web服務(wù)器功能,設(shè)計(jì)了基礎(chǔ)的數(shù)據(jù)交互頁面,,用以測試基本服務(wù)器功能,。當(dāng)服務(wù)器開啟時(shí),上位機(jī)打開瀏覽器,,輸入服務(wù)器的IP地址就可以進(jìn)入服務(wù)器中預(yù)設(shè)的測試網(wǎng)頁界面,。測試界面提供了基本的網(wǎng)絡(luò)狀態(tài)信息,支持更改網(wǎng)絡(luò)參數(shù),。如若修改服務(wù)器IP地址,,確認(rèn)后可以看到控制臺(tái)界面中服務(wù)器重啟初始化信息,如圖3(a)所示,。安裝相應(yīng)的控件,,通過鏈接進(jìn)入視頻流界面,如圖3(b)所示,?! ?/p>
經(jīng)過上述測試基本功能成功實(shí)現(xiàn),均未出現(xiàn)錯(cuò)誤,。網(wǎng)絡(luò)連接及服務(wù)器程序穩(wěn)定可靠,。
4結(jié)論
本文分別從服務(wù)器搭建、瀏覽器網(wǎng)頁設(shè)置,、視頻編碼及傳輸和多線程系統(tǒng)設(shè)計(jì)部分介紹了完成構(gòu)建嵌入式Web服務(wù)器的方案和流程,,為進(jìn)一步開發(fā)嵌入式Web服務(wù)器平臺(tái)提供了很好的指導(dǎo)方法。實(shí)驗(yàn)結(jié)果表明,,運(yùn)用TMS320C6657雙核DSP作為嵌入式Web視頻服務(wù)器具有傳輸速度快以及遠(yuǎn)程操控服務(wù)器的優(yōu)點(diǎn),,同樣兼顧搭建簡單、易于維護(hù)和通用性強(qiáng)的特點(diǎn),,利用優(yōu)先級搶占式特性,,合理分配多線程能很好地依據(jù)開發(fā)者的意愿開發(fā)出相應(yīng)的功能,具有很強(qiáng)的實(shí)用性和參考價(jià)值,。
參考文獻(xiàn)
?。?] 舒展.嵌入式系統(tǒng)綜述[J].現(xiàn)代計(jì)算機(jī),2011(5):4446.
?。?] 康文廣,,胡利民.基于 W3150A+的嵌入式Web服務(wù)器設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(6):4143.
?。?] TMS320C6657:1.25GHz DSP開發(fā)方案[J]. 世界電子元器件,,2014(2):1214.
?。?] 李飛,卿粼波,滕奇志,等.H.264高清視頻編碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(6):4244.