新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一個嵌入式視頻監控系統的設計與實現

        一個嵌入式視頻監控系統的設計與實現

        作者: 時間:2012-04-10 來源:網絡 收藏

        (1) 解碼器模塊:采用SAA7114H解碼芯片,主要功能是將1路模擬量化后形成YUV數據格式通過并行輸出端口傳輸到IME6410視頻MPEG-4壓縮處理單元。

        本文引用地址:http://www.104case.com/article/171658.htm

        (2) 音頻編解碼器模塊:主要是完成模擬音頻到數字音頻的解碼工作,采樣速率32K bps。

        (3) MPEG-4壓縮處理器模塊:數字視頻數據編碼壓縮工作由INTIME公司的IME6410視/音頻壓縮處理器完成。微控制器通過主機接口對IME6410配置和接收壓縮得到的視頻碼流。

        (4) SDRAM模塊:IME6410和網絡處理器S3C2500B各需要一片SDRAM,為DSP和網絡處理器中程序運行提供外部存儲器。

        (5) FLASH模塊:用來存儲DSP和網絡處理器中運行的程序。

        (6) 網絡處理器模塊:選用SAMSUNG的ARM940T內核的S3C2500B網絡處理器,S3C2500B將編碼后的視頻/音頻數據流打包形成標準的網絡數據流并傳輸到因特網中。用戶可通過互聯網發送命令,對IP編碼器進行參數調整,例如編碼的幀率、編碼效率、圖像質量、IP地址設定等。

        (7) 異步串口:支持RS-232、RS-422/485等多種協議,用于和PC通訊和控制攝像頭。用戶可根據需要設置系統的工作參數,例如網絡的IP地址,編碼的幀率、編碼效率、圖像質量等。

        (8) I/O模塊:通用I/O接口可以滿足用戶的控制目的,例如攝像機的鏡頭焦距控制等。

        (9) PHY層網絡接口:完成調制、解調功能。

        3 視頻服務器軟件的

        uCLinux具有精巧、高效的內核,完整的網絡功能和良好的可裁剪性,它內置的TCP/IP協議找、良好的開放性和可擴展性以及高效的任務管理,能夠滿足數字視頻服務器的要求[5]。

        本視頻服務器采用了uCLinux作為操作系統,移植BLOB作為系統引導模塊,移植ez-ipupdate動態域名解析,使用在系統內核態下編寫的driver視頻數據的獲取,使用在系統用戶態下編寫的應用服務程序iplay實現組幀、發送以及與用戶交互等功能。

        3.1 系統引導模塊

        系統引導模塊LOADER移植自BLOB(Boot Loader OBject)項目,它是LART項目的系統引導模塊。移植的BLOB的發行版是BLOB-2.0.5-pre2,編譯器使用arm-linux- toolchain。由于視頻服務器上的硬件環境與處理器SAMAUNG的S3C2500B的軟件開發包SMDK2500中的配置有所不同,因此對 BLOB中的源代碼在移植過程中作出了修改。以下是對BLOB程序做出的具體修改。

        (1) 串口參數代碼修改

        由于視頻服務器上的串口時鐘源和SMDK2500不一樣,因此對文件“/src/lib/serial-s3c2500.c”做出修改。

        (2) 修改BLOB程序中各塊在內存中的分布。

        因為BLOB中的各部分內存分配和SMDK2500不一樣,因此需要修改內存分配的預定義。修改文件是“include/BLOB/arch/smdk2500.h”。

        (3) 增加對網卡支持

        由于BLOB只支持網口,且只能在編譯前指定使用使用WAN還是LAN,故首先在編譯配置時添加:enable-network,這個指定修改在文件“/src/BLOB/smdk2500.c”中。為了在網絡中避免地址沖突,需要為本機網卡設置唯一的MAC地址。這個修改在文件“src /lib/ether.c”中。

        (4) 修改啟動延時

        針對本系統的啟動延時,修改文件“src/BLOB/main.c”中的原設置時間。

        3.2 系統內核的移植

        系統內核Kernel是基于uClinux-dist-20040408的uClinux的分發版,下面是移植的修改部分。

        (1) 修改時鐘頻率的設置

        修改的原因是目標版與評估版采用的時鐘源不一樣。需要修改的文件為“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/config.c”。

        (2) 添加支持從flash中獲取MAC地址

        為了防止網絡上出現MAC地址重復的情況,采用了從flash中直接讀取BLOB中設定的MAC地址。在此需修改在文件“uClinux- dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/readf.c”中相關的調用函數實現調用自己的函數。添加的自定義函數用來從flash的BLOB區域中指定的位置來獲取MAC參數,然后向系統內核kernel提供獲取的MAC參數內容。

        (3) 添加kernel中對GPIO口通用操作的支持

        為了在系統內核kernel中調試和使用GPIO提供統一的調用接口,需要修改文件為“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/lmhgpio.c” 。

        (4) 修改有關內存分配的內容

        為了使系統支持內存GFP_DMA方式的內存分配,需要修改文件“uClinux-dist/linux-2.4.x/mmnommu/page_alloc2.c”。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙州县| 时尚| 高台县| 仁怀市| 本溪市| 社旗县| 绥芬河市| 昆山市| 高碑店市| 赤水市| 土默特右旗| 海晏县| 仙游县| 革吉县| 高碑店市| 蓬溪县| 苍梧县| 洪泽县| 金阳县| 大洼县| 舞钢市| 永靖县| 青龙| 内黄县| 文山县| 科尔| 隆化县| 达拉特旗| 鹤壁市| 吉首市| 云阳县| 恩平市| 枣阳市| 嵊泗县| 休宁县| 尚义县| 祥云县| 南汇区| 通榆县| 贡山| 秭归县|