基于Linux/Qt的智能家居系統設計
}
2.4 音視頻同步傳輸技術
i.MX51處理器包含了支持硬件視頻編解碼的VPU單元,并自帶了完整的多媒體解決方案。因此,系統中采用其自帶的多媒體軟件包進行音視頻流的采集和編解碼[2]。
考慮到小區內可視通話時因并發數過大而可能導致的網絡擁塞情況,系統還需要提供一定的QoS機制來保證在網絡帶寬較低時也能達到音視頻的同步傳輸。本文采用基于時間戳的實時同步傳輸技術,通過設置可變大小的緩沖區機制,根據小區網絡情況自動調節傳輸參數,以音頻質量優先保證為原則,根據時間戳實時調節視頻數據的播放。具體實現過程如下[3]:
(1)發送端采用兩個獨立的進程分別對音視頻信息進行采樣和打包,然后放到各自的緩沖隊列中等待發送。
(2)音視頻數據通過同一個通道發送到網絡(采用信號量機制保證音視頻數據對通道的互斥訪問)。
(3)由于音視頻兩個數據包的長度差別很大,所以將接收端收到的數據根據包的大小進行區分。
(4)音視頻各自拆包組幀。由于人的聽覺對聲音的不連續比視覺對圖像的不連續更敏感,所以采用音頻流作為主流,視頻流作為從流。客戶端接收到音頻數據包后,不必與視頻數據包協調就可立即播放,而視頻幀到達時則根據時間戳進行對比,從而進行相應的同步處理。
(5)為保證音視頻的實時同步,采用多線程分別對音頻和視頻進行播放。
3 i.MX51平臺移植
3.1 搭建LTIB開發環境
LTIB(Linux Target Image Builder)是飛思卡爾公司開發的一個用于部署BSP的工具,含有U-Boot等引導加載程序,支持Bootloader和內核映像的構建。利用該工具,可以定制出符合GNU/Linux標準的跨平臺的根文件系統。本設計選擇使用飛思卡爾公司提供的L2.6.31_10.07.11_ER_source.tar.gz集成源碼包,在一臺安裝了Ubuntu 10.04操作系統的PC機上配置安裝LTIB[4]。其過程如下:
(1)解壓縮源碼包,執行./install進入安裝LTIB的命令提示。
(2)執行./ltib進入LTIB的配置界面。
(3)在LTIB配置Platform時選擇i.MX51平臺。
(4)配置Kernel時選擇CLAA WVGA Panel(LCD觸摸屏驅動)和SoC Audio support for IMX - SGTL5000(聲卡驅動),其他保持默認。
(5)將交叉編譯工具arm-none-linux-gnueabi-gcc加入PATH環境變量,在ltib根目錄執行下述命令,交叉編譯Qt庫:
./ltib -m prep -p qt-embedded.spec
./ltib -m scbuild -p qt-embedded.spec
(6)執行make install,在ltib下的rootfs目錄就會生成相應的U-Boot、內核和文件系統,將將其復制到目標板的TF卡上。
3.2 架設NFS文件系統
為了簡化調試過程和縮短開發周期,在Linux主機上建立了NFS網絡文件系統,這樣就實現了宿主機與目標板的文件共享。開發過程簡化為:Linux主機編譯生成目標平臺的可執行文件→復制文件到NFS共享目錄→目標板運行程序,從而省去了重復制作鏡像、下載鏡像、重啟開發板等步驟,節省了大量的開發時間。目標板的NFS啟動信息如圖3所示。

4 系統測試及結果
4.1 并發測試
并發測試主要用來測試多個用戶同時訪問同一個應用程序、同一個數據記錄時是否存在死鎖或其他問題。由于本系統是面向一個小區的住戶,因此系統的并發測試尤為重要。
數據庫并發測試:室內機開啟多個線程同時訪問中心機服務器,界面并不會因大量的數據操作而出現“凍結”現象,CPU占用穩定,數據庫返回結果顯示正常。
信息發布測試:中心機開啟多個線程同時發送廣播信息,各室內機接收正常,不會出現顯示錯誤或“丟包”現象。
4.2 跨網段測試
考慮到小區用戶一般在幾百甚至上千,一個網段的IP地址不能滿足需求。為了檢測在不同網段下通信模塊能否正常工作,使用一臺華為S5300交換機(switch)和兩臺華為5200交換機搭建了一個小型的網絡環境進行相關測試。如圖4所示,測試采用IPv4靜態路由,使不同網段的任意兩臺室內機之間能夠互通。測試表明,分屬不同網段的室內機之間,可視通話、信息互發等模塊均正常工作,從而驗證了本設計方案的可行性。

4.3 可視對講性能測試
可視對講性能測試主要是檢測室內機終端中音視頻的采集、編解碼、收發和顯示。對于音視頻的采集、收發和顯示,可通過揚聲器和LCD顯示直觀地檢測。而對編解碼的測試則比較復雜,本設計是從最長時間、最短時間和平均時間三個方面來測試編解碼一幀音視頻所需要消耗的時間。i.MX51平臺上音視頻編解碼的性能測試如表1所示。

由表1可以看出,i.MX51平臺上能夠實時地完成音頻和視頻通信,且音頻清晰、視頻流暢、失真度小,達到了可視對講對音視頻編解碼器的實時性要求。
本文采用Linux和Qt相關技術,在飛思卡爾公司i.MX51平臺上設計了一種多功能的智能家居控制系統,實現了客戶端與服務器的Socke通信和音視頻同步傳輸等核心功能。下一步還需要擴展家電控制、安防控制等功能。
繼續閱讀
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論