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