基于GM8180的嵌入式視頻服務器設計
1.3 其他模塊
網(wǎng)絡方面,GM8180集成了以太網(wǎng)接口控制器,支持RMII接口,可直接連接以太網(wǎng)物理接口芯片DM9161A。DM9161A是Davicom公司生產(chǎn)的一款低功耗、高性能的以太網(wǎng)物理層芯片,它完全兼容IEEE 802.3u 10Base-T/100:Base-TX標準,同時兼容ANSI TP-P(如1995)標準;支持MII和RMII兩種接口模式,可完成對網(wǎng)絡數(shù)據(jù)的接收解碼和對數(shù)據(jù)幀的編碼發(fā)送。
此外,實時時鐘芯片S35390A通過I2C總線連接主芯片GM8180為系統(tǒng)提供準確、不間斷的時間信息以及定時報警服務。本文引用地址:http://www.2s4d.com/article/151974.htm
2 系統(tǒng)軟件設計
在軟件的設計上,采用ARM-Linux 2.6操作系統(tǒng)作為嵌入式服務器軟件的承載平臺。ARM-Linux的源代碼完全免費開放,內(nèi)核可任意裁剪,應用程序和驅(qū)動都非常豐富。在ARM-Linux操作系統(tǒng)的基礎(chǔ)上,通過Vide04Linux(V4L)接口采集的視頻圖像交由GM8180片內(nèi)的H.264編碼引擎進行壓縮編碼;音頻上,通過OSS接口采集PCM數(shù)據(jù)進行自適應多速率窄帶語音(AdaptiveMulti-Rate NarrOWband,AMRNB)編碼。通過RTSP流媒體服務器為用戶提供實時的音視頻訪問服務。
2.1 視頻采集驅(qū)動
V4L是Linux下用于獲取視頻數(shù)據(jù)的通用API接口。將GM8180的視頻采集封裝成V4L接口,以便位于應用層的RTSP服務器開發(fā)使用。V4L驅(qū)動程序需向操作系統(tǒng)內(nèi)核注冊video_device設備,用于指定文件操作接口,使得用戶層可以通過標準文件操作來采集視頻。
視頻采集的流程如圖4所示,用戶設置采集參數(shù)(例如圖像分辨率)時,驅(qū)動需要完成SAA7113H和GM8180片上視頻采集控制器的寄存器設置,以及驅(qū)動內(nèi)核態(tài)下圖像數(shù)據(jù)緩沖區(qū)的分配等工作。此后,應用層以VIDIOCMCAPTURE標志和VIDEOSYNC標志為參數(shù)循環(huán)調(diào)用ioctl()函數(shù)來獲得視頻圖像數(shù)據(jù)。
當應用程序以VIDIOCMCAPTURE標志調(diào)用ioctl()函數(shù)時,驅(qū)動檢查采集控制器和DMA狀態(tài),如果當前是正常的采集狀態(tài),則ioctl()系統(tǒng)調(diào)用返回;如果當前不是正常的采集狀態(tài),則重新觸發(fā)采集控制器和DMA。當應
用程序以VIDEOSYNC標志調(diào)用ioctl()函數(shù)時,驅(qū)動先判斷采集緩沖區(qū)內(nèi)是否有圖像數(shù)據(jù),沒有則將調(diào)用者掛起在采集等待隊列中。直到采集完1幀完整的數(shù)據(jù),在DMA中斷響應函數(shù)中調(diào)用wake_up()函數(shù)將采集等待隊列中的進程喚醒,返回圖像數(shù)據(jù)給應用層調(diào)用者。
2.2 H.264編碼引擎
GM8180片上集成支持基線檔次的H.264編碼引擎,該編碼引擎遵循AMBA 2.0總線規(guī)范。H.264編碼引擎通過AHB總線與主CPU和其他片上模塊相連。編碼引擎同時具有AHB主、從模塊功能:
◆當主CPU訪問編碼引擎內(nèi)部寄存器時,編碼引擎為從模塊,主CPU作為主模塊;
◆當編碼引擎通過內(nèi)建DMA讀寫系統(tǒng)內(nèi)存時,編碼引擎為主模塊,DDR控制器為從模塊。
評論