基于Intel Xscale和嵌入式Linux的視頻模塊設計
OV518 最大視頻傳輸速度的設計,使得系統能夠以更加實(shí)時(shí)的方式獲取大量的視頻信息。片內高性能專(zhuān)用壓縮引擎可以達到7:1 的壓縮比,保證了從圖像傳感器到終端平臺的快速圖像傳輸。對于QVGA圖像格式,OV518的壓縮引擎支持高達30 幀/秒的傳輸速度,減少了低帶寬應用中通常會(huì )出現的圖像跳動(dòng)現象。OV518還具有優(yōu)秀的靜態(tài)圖像捕捉功能,使用起來(lái)和數碼相機一樣方便。其內部結構如圖 1 中USB 連接橋部分所示。由于PXA255 的USB 接口只有從控制器,只能作為一個(gè)從設備使用,我們采用Philips公司的ISP1160為PXA255擴展了兩個(gè)USB主接口。ISP1160是專(zhuān)門(mén)用以在嵌入式系統或便攜式設備中實(shí)現USB 協(xié)議的芯片,支持所有的傳輸類(lèi)型:控制、中斷、批量及同步。該芯片還提供了節能工作模式以減少功耗,每個(gè)下行端口都有獨立的過(guò)流檢測輸入引腳和電源供電開(kāi)關(guān)控制輸出引腳,使系統電源的管理更加靈活。ISP1160與CPU的接口,是專(zhuān)為RISC 的CPU設計的,極大的簡(jiǎn)化了設計工作,可以不加修改的移植到別的嵌入式系統應用中??傊?,整個(gè)視頻模塊硬件設計體現了嵌入式系統設計對體積,速度和功耗的要求,既保持了很高的處理速度和很小的集成空間,又降低了系統的功耗。
3 軟件設計
3.1 軟件平臺
微處理器PXA255 功能強大,系統資源十分豐富,十分需要一個(gè)功能強大的操作系統來(lái)管理這些資源,經(jīng)過(guò)對各種嵌入式操作系統的比較,嵌入式Linux的諸多優(yōu)點(diǎn)非常適合于作為該終端的操作系統:開(kāi)放的源碼,可移植性強,強大的網(wǎng)絡(luò )功能和對USB 總線(xiàn)及Video設備的良好支持。終端平臺采用圖形用戶(hù)界面,出于嵌入式系統對實(shí)時(shí)性和對GUI 的占用資源少、高性能、高可靠性及可配置的考慮,我們選擇了MiniGUI圖形用戶(hù)界面支持系統。
3.2 視頻模塊軟件的基本結構
視頻模塊軟件的設計采取了模塊化的設計方法,根據視頻模塊設計的特點(diǎn)和多媒體終端視頻功能的需求,整個(gè)視頻模塊軟件有4 個(gè)功能模塊組成:USB 模塊、攝像頭驅動(dòng)模塊、解碼模塊、視頻應用模塊,完成了采集、解碼、本地顯示、本地用戶(hù)控制和網(wǎng)絡(luò )傳輸等功能,其基本結構如圖2 所示。為了提高圖像采集的實(shí)時(shí)性和系統性能,在各個(gè)模塊的設計過(guò)程中,根據Linux 操作系統的特點(diǎn)和采用的解壓縮算法的特征,我們對程序和算法進(jìn)行了優(yōu)化、簡(jiǎn)化,以加快計算速度,提高效率。以下將對各個(gè)模塊的功能和實(shí)現進(jìn)行介紹。

3.2.1 USB 模塊
該模塊包括USB 總線(xiàn)驅動(dòng)程序(USBD)和主控制器驅動(dòng)(HCD)。USBD 主要處理USB 協(xié)議中與硬件無(wú)關(guān)的部分,對協(xié)議規定的USB 總線(xiàn)以及USB 設備共有的操作和性質(zhì)提供支持。HCD 負責對ISP1160 進(jìn)行抽象和對USB 的低級支持,ISP1160 的寄存器編程來(lái)驅動(dòng)ISP1160,為上層的USB 總線(xiàn)驅動(dòng)提供軟件接口來(lái)控制ISP1160。圖3 給出了USB 模塊的軟件功能結構圖。Linux 操作系統提供有穩定的USB 總線(xiàn)驅動(dòng)程序,我們只需要編寫(xiě)HCD 程序。在HCD 的設計中,我們結合ISP1160 專(zhuān)為嵌入式設備設計的特性對實(shí)時(shí)傳輸和非實(shí)時(shí)傳輸進(jìn)行不同的調度,增強了對USB 總線(xiàn)實(shí)時(shí)傳輸的支持;結合Linux對軟中斷的良好支持,采用底半部機制(bottom half)提高中斷處理的實(shí)時(shí)性。通過(guò)這兩項措施有效的提高了視頻數據傳輸的穩定性和速度,降低了對系統資源的消耗。

3.2.2 攝像頭驅動(dòng)模塊
該模塊為攝像頭的USB類(lèi)型驅動(dòng)(ClassDriver),其主要功能是對視頻應用模塊提供符合Linux 的視頻捕獲標準V4L2(Video for Linux Two)的接口,通過(guò)USB ??旖邮請D像數據。V4L2 是Linux 平臺上處理和訪(fǎng)問(wèn)視頻設備的最新的標準應用程序接口,通過(guò)該接口,模塊對視頻應用模塊提供QVGA(320*240)和VGA(640*480)兩種采集模式的切換,視頻圖像參數的調整,彩色和黑白視頻流和靜止圖像的采集功能。該驅動(dòng)采用多個(gè)幀緩沖存儲空間,并使這些幀存輪流處于接收數據和存儲數據狀態(tài),當收到圖像幀事件發(fā)生時(shí),將會(huì )觸發(fā)相應的機制,實(shí)現了圖像幀的異步接收,異步接收機制提高了程序的運行效率。除了實(shí)現V4L2 標準常規的read 接口外,還重點(diǎn)實(shí)現了mmap(Map device memory into application address space)接口,通過(guò)該接口,可以把內核空間的設備內存地址空間映射到用戶(hù)空間的地址空間,減少了圖像數據拷貝的次數,提高了圖像采集的實(shí)時(shí)性。 linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論