• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的家庭視頻服務器的研究

    基于ARM的家庭視頻服務器的研究

    作者: 時間:2009-03-05 來源:網絡 收藏

    引言
    隨著科學技術的不斷進步和發展,人們對生活質量也提出了更高的要求。網絡作為一個新生體越來越近的開始走進人們的生活,它將單元作為一個節點加入了網絡的大,其中作為連接家庭內部與Internet的橋梁的家庭網關起了舉足輕重的作用。嵌入式網關的主要功能如下:
    遠程控制:客戶通過Internet上連接的任意一臺PC機的瀏覽器,都可以訪問家庭網絡的服務器;家庭網絡中的設備狀態將以HTML文件的方式顯示在客戶端的瀏覽器中;客戶通過對HTML頁面上相應設備的點擊以實現對家庭網絡中設備的遠程控制,操作的結果同樣以HTML頁面的方式刷新客戶端的瀏覽器。
    遠程監視:客戶通過Internet上連接的任意一臺PC機的瀏覽器,都可以訪問家庭網絡的服務器,在HTML頁面上通過點擊控件按鈕來實現視頻工具的自動下載和所要求視頻文件的自動播放,從而可以顯示多個攝像頭中的視頻信息。
    遠程維護:當HomeNetServer的后臺數據庫需要維護,或者家庭網絡中設備的HTML描述文件有了更新,甚至系統的網絡管理系統需要升級為新版本時,管理員都可以通過Internet遠程對家庭網絡中的服務器做維護和更新。
    這些基本要求和嵌入式系統自身資源有限的特點,系統選擇了S3C4510芯片,并對其進行外圍電路擴展如圖1:

    本文引用地址:http://www.czjhyjcfj.com/article/152608.htm

    圖1 外圍擴展電路方框圖

    其中:Flash/ROM用于存儲家庭網關中的嵌入式操作系統、HTTP服務器、網關程序、家庭網絡服務器以及各種服務所需的文件系統。整個家庭網關軟件平臺存儲在Flash中,系統啟動時,將從Flash中運行Bootloader,解壓操作系統并將其移入SDRAM中。
    Ethernet:S3C4510內部集成了網絡控制接口,并提供專用于網絡通信的DMA通道。通過Ethernet模塊,S3C4510實現與Internet的連接。Ethernet模塊完成芯片與網絡的隔離和數據的收發。
    System:S3C4510所需的其他外圍電路,包括:電源電路、外部時鐘(50MHZ)電路、開關及復位電路和JTAG調試接口電路等。
    嵌入式操作系統選擇的是uClinux操作系統,uClinux是專門針對沒有MMU的處理器而設計的,系統多采用Romfs文件系統,Romfs是一種相對簡單、占用空間較少的文件系統。而在UCLINUX下,主要有三個WEB服務器:httpd、thttpd和boa,httpd是最簡單的WBE服務器,功能簡單,不支持認證和,thttpd和boa均支持認證和,功能豐富,其中boa1是一個單任務的http服務器,源代碼開放,性能較高,占用系統資源較少,boa服務器在收到請求時,不啟動多個服務進程處理多個請求,在一個進程內處理所有服務請求。對于CGI程序,將生成新的進程來處理,考慮到嵌入式系統自身資源有限,和家庭網關的進程數量有限,系統選擇了在uCLinux系統中的boa服務器。
    由于目前的uCLinux還不支持ASP、PHP等動態網頁技術,所以在uCLinux下通過CGI2技術連接WEB頁和本地程序,提供動態和交互的特性。

    圖2 系統總體設計框圖
    1 配置boa服務器
    CGI程序不是放在服務器上就能順利運行,如果要想使其在服務器上順利的運行并準確的處理用戶的請求,則須對所使用的服務器進行必要的設置。
    Boa的配置文件boa.conf:在boa.conf中對boa進行了配置,這些配置多使用默認值,本系統中將Document Root指定的WEB服務器的根修改為/boas.
    在對內核進行配置時,選擇boa程序和cgi.
    將cgi_generic文件夾下的cgi.c和makefile覆蓋到程序包中的/usr/cgi_generic/。
    將boa文件夾下的hash.c覆蓋到程序包中的/usr/boa/src。
    將rc文件覆蓋到程序包中的/vendor/Miectek/4510。
    本系統中的ucLinux系統中的文件使用的是ROMFS和運行于RAM的EXT2。為了可通過FTP等工具更新網頁,rc文件在/boas下創建文件夾cgi_bin,然后將index.html,boa.conf和mine.type復制到/boas下,將CGI程序復制到/boas/cgi­_bin下。至此建立了boa運行的基本環境,使用>boa c/boas/命令就可以運行boa.
    2 系統設計描述
    在嵌入式網關的設計中,網關程序與家庭網絡的HTTP服務器和家庭網絡內部服務器位于同一物理設備(S3C4510的硬件平臺)之上,負責連接HTTP服務器與后臺數據庫,完成HTTP服務器與HomeNetServer之間的信息交互。
    在家庭網關的設計中,根據功能描述,網關應能提供遠程監視、遠程控制、遠程維護功能。網關內部工作流程如下:
    ● 若客戶發送的HTTP請求,經過HTTP服務器接收和解析后,得知要求的是設備狀態信息時,HTTP服務器從存儲設備狀態信息的靜態文件中取出設備狀態,并封裝為HTTP響應消息發送回客戶端。
    ● 若客戶發送的HTTP請求,經過HTTP服務器接收和解析后,得知請求的消息是對設備的設置(操作),則通CGI函數將消息內容轉換為家庭網絡協議傳遞給家庭網絡服務器,由家庭網絡服務器對家庭內部設備的管理和控制,并將處理結果以消息形式傳遞給CGI程序,并封裝為HTTP響應消息的形式,發送回客戶端。
    ● 若客戶發送的HTTP請求,經過HTTP服務器接收和解析后,得知請求的頁面是提供實時時,HTTP服務器將調用CGI函數向視頻數據處理模塊發送消息,通過視頻數據處理模塊來控制視頻壓縮卡完成視頻數據的采集,壓縮和發送等功能。
    ● 若客戶發送的HTTP請求,經過HTTP服務器接收和解析后,得知請求的消息包含對云臺設備及鏡頭的控制命令時,HTTP服務器通過CGI函數向云鏡解碼器直接發送控制指令以實現對云臺和鏡頭的控制。


    圖3 家庭網關軟件結構框圖
    3 實時部分設計
    HTTP的boa服務器負責接收和響應客戶端的HTTP請求,當請求的是視頻信息時,此請求通過CGI函數向視頻數據處理模塊發送消息,從而向視頻設備發送事件以允許實時視頻發送任務進入運行隊列。
    視頻數據處理模塊主要包括視頻圖像的實時捕捉(借助MPEG-4視頻壓縮卡完成)、動態存儲和實時播放,圖像的實時播放可以和圖像的實時捕捉存儲同時進行。
    初始化視頻壓縮卡:
    M878Object*pObject=NULL;
    For(int i=0;im_nDevice;i++)
    {pObject=new M878Object(i,m_strDisk+m_str VideoDir);
    If(!pObjectGetDataFormFile())
    pObject->InitData();
    m_obArray.Add(pObject);
    }
    數據采集:
    for(i=0;im_nDevice;i++)
    {
    OpenDev(i); //打開指定卡號的設備,分配相應系統資源
    pObject=( M878Object*)m_obArray[i];
    OutMpegBuff(i,OnMpeg4Write); //采集視頻數據流
    RegisterViSaveExceptionProc(i,(ViSaveErrCallBack) ViErrCallBack);
    pObject->SetParamToDevice(); //設定參數
    }
    停止設備:
    當不再使用設備時,調用ViUnInit()關閉視頻壓縮采集卡并卸載系統資源。
    數據發送模塊:
    OutMpegBuff(i,OnMpeg4Write);
    Void CALLBACK OnMpge4Write(DWORD dwCard,BYTE *pbuff,DWORD dwSize,
    BOOL isKeyFrom)
    {
    if(dwCard>=g_dwDevice)
    return;
    g_VStrmInfo[dwCard]+=dwSize/26;
    MTAWriteVideo((BYTE)dwCard,pbuff,(LONG)dwSize,isKeyFrm)
    }
    發送模塊負責向地址表中的地址發送經過編碼處理的實時視頻數據,并修改地址表中的信息。地址表用來保存請求實時的用戶的IP地址,視頻發送任務根據地址表中的地址來發送視頻包。
    數據接收模塊:
    該模塊主要完成視頻數據的接收、解碼和顯示工作。用戶通過瀏覽器實現對遠程設備的監控,服務器返回的信息通過瀏覽器顯示。瀏覽器可以使用微軟公司的Internet Exploer或Netscape公司的Netscape Navigator等。對于普通的文本及HTML文件支持的GIF、JPEG等格式的圖片,普通瀏覽器都可以顯示。但對于實時視頻數據,首先,與HTTP鏈接不同,不是使用流套接字而是使用數據報套接字接收,然后還需解碼和顯示,這些工作瀏覽器都無法完成。為使用戶能通過瀏覽器觀看視頻,本系統采用在WEB頁面中嵌入ActiveX控件,由ActiveX控件完成視頻數據的接收、解碼和顯示工作。而ActiveXInternet技術的一個重要方面是安全的下載和安裝ActiveX控件和需要的支持文件。Microsoft Internet Explore通過在HTML文檔中使用Internet Component Download方法自動下載并安裝ActiveX控件3。
    (1)客戶端控件的嵌入
    在WEB服務器的HTML文件中嵌入ActiveX屬性,針對客戶端使用最多的IE瀏覽器,HTML代碼可使用的MFCControl控件如下:
    HTML>
    HEAD>
    TITLE>VideoPage/TITLE>
    /HEAD>
    BODY>
    OBJECT>
    ID=Mpge4Control
    WIDTH=100
    HEIGHT=51
    CLASSID=CLSID:A119846-2E75-11D0-BDB2-000000000000
    CODEBASE=http://www.myhome.com/videodisplay/MFCControl.ocx>#Version=1,0,0,1>
    PARAMNAME=AlighmentVALUE=1>
    PARAMNAME=CaptionPropVALUE=Sample>
    /OBJECT>
    /BODY>
    /HTML>
    其中ID標志控件命名,提供訪問控件的HTML代碼。CLASSID標志是唯一的UUID給控件賦值的指令,告訴IE哪個對象被裝載。在HTML頁面實現控件的自動下載,使用OBJECT>標志的CODEBASE屬性,該屬性告訴IE要下載和安裝的控件版本和找到和下載控件及其支持文件的地址。
    (2)客戶端控件的注冊
    控件編寫完成后,需要在客戶端注冊,關于控件的信息記錄在注冊表中。客戶端從服務器端接收到嵌有控件的HTML頁面后,將根據OBJECT標簽中的信息通過注冊表使用對應的空間完成接收,解碼和顯示。
    4 遠程控制部分設計
    在遠程控制部分設計中,根據性能最優化和實時性考慮,將控制部分分為兩部分:云臺控制部分,主要是通過串口進行通信;信息家電遠程控制,通過內部家庭網絡協議對相應設備進行控制,控制信號的物理載體是家庭網絡內部總線。(由于篇幅有限,本文僅討論前者)。
    云臺控制模塊設計
    該模塊是個相對獨立的模塊,負責控制云臺的上下左右旋轉以及鏡頭的焦距和光圈的調整。當服務器接受到的請求中含有對云臺設備以及鏡頭的控制命令時,將通過CGI函數向云臺解碼器發送控制指令以實現對云臺,鏡頭的控制。在室內,采用CDA2000室內萬能解碼器4直接通過RS-232串行口與嵌入式網關通信,云臺控制電壓~24V、~220V 可選,鏡頭控制電壓可在 5V-12V 之間無級調節。

    圖4 云臺控制系統硬件連接框圖
    在云鏡控制模塊中,解碼器起著核心的地位,設計云鏡控制模塊主要解決的問題是將各項操作如上下旋轉,鏡頭調焦等操作進行編碼,但本系統采用的解碼器封裝了底層硬件程序的編寫,因此所做的工作是利用解碼器開發商提供的協議,通過RS232串行口向解碼器發送指令。
    Linux對串口的操作是通過設備文件進行訪問的,只需打開相應的串口文件,然后通過調用設備相關函數來打開串口(open()),設置串口參數(tcgetattr(),cfsetispeed(), cfsetospeed()),設置輸入輸出模式(options.c_Iflag和options.c_Oflag),恢復串口屬性,關閉串口(close())等即可。

    圖5 串行通信流程
    5 結論
    本系統的特點是基于嵌入式微處理器有限的系統資源之上,為客戶提供。本系統采用的是boa服務器+CGI+家庭網絡服務器的模式來實現對信息家電的控制,但由于篇幅有限,不做論述。鑒于實時視頻服務的特殊性,采用了boa服務器+CGI+視頻接收和控制模塊(視頻服務器)的模式實現對視頻數據的捕獲、采集、發送等操作,并通過串行口通信方式對云臺和鏡頭進行直接的控制,視頻的接收問題一直以來是的重點,本系統采用的是在WEB頁面中嵌入ActiveX控件的方式,由ActiveX控件完成視頻數據的接收、解碼和顯示工作。而這樣做的好處是,不需對客戶端做任何設置,就可以完成控件的自動下載和視頻文件的實時播放。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 伊金霍洛旗| 灵川县| 昌江| 商河县| 日喀则市| 赫章县| 崇明县| 太仆寺旗| 河池市| 扶绥县| 五原县| 康马县| 横山县| 商洛市| 花莲县| 通许县| 墨竹工卡县| 玛沁县| 东山县| 屏山县| 阿图什市| 勃利县| 厦门市| 德化县| 龙海市| 上犹县| 蛟河市| 任丘市| 公安县| 祁阳县| 乐安县| 麻江县| 惠安县| 乡城县| 姚安县| 慈溪市| 芦溪县| 泸溪县| 吉安县| 修文县| 永城市|