本文介紹了一種基于AT91RM9200的嵌入式網絡攝像機設計方案。該系統以嵌入式Linux 作為操作系統, 采用MPEG-4 的專用編碼芯片對采集到的數字視頻進行壓縮編碼, 生成MPEG- 4 碼流。MPEG- 4 碼流經過AT91RM9200 控制器外接的網絡芯片被輸送到PC 機。PC 機端通過內嵌MPEG- 4 解壓插件的IE 瀏覽器來播放視頻和控制網絡攝像機的狀態變化。 隨著通信技術和網絡技術的迅猛發展, 通過網絡遠程實時監控重要場所已倍受人們關注, 網絡攝像機在此背景下產生, 并成為人們關注的焦點。網絡攝像機要將高清晰度的實時視頻信息通過互聯網傳送到監控終端, 因其信息量巨大, 所以必須壓縮。通常人們采用DSP 與MPEG- 4 算法相結合的方案來實現, 不僅編程工作量大, 而且產品的成本高。本文所介紹的網絡攝像機采用專用的MPEG- 4 壓縮芯片、以嵌入式Linux 作為操作系統, 不僅開發便捷、成本低廉, 而且實時性好, 適用范圍廣。 系統總體設計 系統總體設計包括硬件設計和軟件設計兩部分。硬件設計模塊主要包括微控制器模塊、壓縮編碼模塊、網絡接口模塊和相機控制模塊四部分。微控制器模塊主要由主控芯片、DataFlash 和SDRAM(1)組成。其中, 主控芯片是整個控制系統的核心, 它負責整個系統的調度工作。DataFlash 里固化了嵌入式Linux 內核、及其文件系統、應用軟件和系統配置文件。SDRAM(1)作為內存供系統運行使用。壓縮編碼模塊由視頻數據采集芯片、MPEG- 4 壓縮編碼芯片、SDRAM(2)組成,負責將視頻流轉化為MPEG- 4 碼流。網絡接口模塊主要是配合主控芯片傳送MPEG- 4 碼流。相機的控制模塊主要由串口芯片組成, 其完成轉發控制相機命令的功能。當系統啟動時, 微控制器通SPI( Serial PeripheralInterface, 串行外設接口) 將Linux 內核轉入SDRAM( 1) 中, 系統從SDRAM( 1) 中啟動。系統啟動后, 微控制器通過HPI(Host Peripherial Interface, 主機接口)控制MPEG- 4 編碼模塊。統結構如圖1 所示。 軟件設計部分主要包括嵌入式Linux 移植、MPEG- 4 壓縮編碼模塊、CGI 控制程序和MPEG- 4 解碼程序四部分。嵌入式Linux 系統存放到由AT91RM9200 控制的DataFlash 里,它負責整個系統軟件的調度工作。MPEG- 4 壓縮編碼模塊主要負責模擬視頻流的采集, 并將數字視頻流壓縮為MPEG- 4 數據流。CGI 控制程序主要負責對攝像機的控制和對MPEG- 4 視頻流的相關設置。MPEG- 4 解碼程序主要負責對通過網絡得到的MPEG- 4 數據流的解碼工作。 硬件設計 微控制器模塊 微控制器是本系統的核心部件, 選用的是ATMEL公司的AT91RM9200。它是一款基于ARM920T 核的32位微控制器。其主頻為180MHz, 處理速度快, 功能強, 性價比高, 能很好滿足嵌入式Linux 系統的需求。它在系統中的主要作用是在系統上電時配置其他芯片的功能寄存器, 在正常工作狀態下調度控制整個系統工作, 通過片內以太網控制器控制物理層芯片發送碼流。 AT91RM9200 通過片內的SPI 總線和SDRAM控制器實現對外圍DataFlash 和SDRAM的控制, 利用片內的USART 實現對串口芯片的控制, 通過片內的以太網控制器對片外網絡芯片進行控制。其控制原理圖如圖2 所示。 壓縮編碼模塊 壓縮編碼模塊包括模擬視頻采集模塊和MPEG- 4壓縮模塊。視頻采集芯片采用TI 公司的TVP5150, 數據壓縮芯片采用映佳公司的MPG440。TVP5150 輸入端可是兩種混合視頻信號也可是S- Video 端子的視頻信號, 支持NTSC、PAL、SECAM等3 種制式, 其輸出的數據色彩格式可以為8bit 4: 2: 2 數字信號或者8bit 同步ITU- R BT.656 數字信號。MPG440 芯片具有符合工業標準的16b/32b 的雙向主機接口, 分別用來與視頻采集芯片和微控制器芯片通信。同時, 具有移動偵測、防偽水印、動態調整IP 畫格比率、動態調整圖像質量等特性, 支持D1、VGA、CIF、QVGA、QCI 等五種分辨率模式。微控制器通過主機接口實現MPG440 的初始配置, 也由此接收MPEG- 4 碼流。壓縮編碼模塊的硬件設計原理如圖3 所示。 TVP5150 的AI 模擬輸入口與模擬攝像頭輸出端連接, 向視頻處理芯片傳送模擬視頻信號。模擬信號經過采樣處理之后通過YOUT0~YOUT7 引腳送到MPG440, 采樣數據在PCLK 的上升沿有效, MPG440的VIDEO_CLK 在收到PCLK 的上升沿時獲得YOUT的信號。TVP5150 分場同步脈沖和行同步脈沖, 分別對應其輸出端VSYNC、HSYNC。MPG440 正是根據與之相連的VSYNC 和HSYNC 信號線來實現圖像的場同步和行同步操作。MPG440 的視頻輸入數據線DATA_TV0 ~DATA_TV7 與TVP5150 的YOUT0 ~YOUT7 相連。MPG440 在接收數據的同時, 將其得到的數據流傳送給MPEG- 4 壓縮編碼單元, 編碼后的MPEG- 4 數據流暫存到SDRAM(2)中。MPG440 片內PDMA 控制器根據配置寄存器的設置準確發起對SDRAM(2)訪問, 同時將得到的數據流輸送往HPI(主機總線接口,Host Peripherial Interface) , 以等待AT91RM9200 通過DMA 通道將數據發送到網絡。 MPG440 通過HPI 與AT91RM9200 通信,AT91RM9200 將MPG440 的寄存器、存儲空間等資源作為其本身內存尋址訪問。MPG440 由AT91RM9200選通線NCS4 來選通, 其在AT91RM9200 尋址空間中的地址段為0X50000000 到0X5FFFFFFF。通過對MPG440 一系列寄存器的設置, 可以訪問MPG440 系統存儲空間。MPG440 中斷信號RSC_INT0 從通用I/O引腳的PB29 輸入, 當緩沖器填滿時, RSC_INT0 引腳置低提示AT91RM9200 通過DMA 通道提取MPEG- 4數據流。編碼后視頻數據讀取過程和MPG440 與主機通信過程由AT91RM9200 讀信號CFRD 和寫信號CFWE 控制。 網絡模塊 網絡模塊硬件設計原理如圖4 所示。 AT91RM9200 的在片以太網卡端口和網絡物理層芯片DM9161E 的MII 接口通信。發送數據時, 首先置發送使能信號ETXEN 有效。數據發送端ETX0~ETX1與DM9161 的ETXO~ETX1 引腳對應連接, 作為數據發送通道, 以DM9161E 的時鐘信號REF_CLK 發送數據。數據接收端ERX 0~ERX1 與DM9161E 的RXDO~RXD1 引腳對應連接, 作為數據接收通道。管理時鐘信號EMDC 和管理數據輸入輸出信號EMDIO 用來芯片控制參數的寫入和讀取。DM9161E 的MDINTR 端用來產生中斷信號。 片內以太網卡通過DMA 通道進行數據的發送,不影響AT91RM9200 的正常運行。首先正確設置傳送控制寄存器和傳送地址寄存器的傳送數據塊字節數、數據塊存儲首地址等參數, 隨后依次從指定數據存儲區地址讀取1024b 數據, 送入內部發送緩沖器中, 由MAC 對數據進行封裝發送, 同時記錄已傳送字節數,直到數據塊發送完畢。當發送完一組數據后, 發出DMA中斷請求, 由AT91RM9200 進行相應的處理。整個網絡子系統電路由AT91RM9200 控制和調度。 軟件設計 嵌入式Linux 系統主要由四個部分組成: 引導內核啟動的文件( bootloader) 、Linux 內核文件( kernel) 、虛擬磁盤文件( ramdisk) 、用戶空間文件( user) 。它們分別被放在DataFlash 內的四個分區模塊中。根據不同模塊的具體功能采用不同的文件系統: bootloader、kernel、ramdisk, 移植完成后不需要動態改變, 使用較節省空間的ROMFS 只讀文件系統user 模塊內放置一些可以動態更新的配置文件等, 需要進行較多的讀寫操作, 所以使用支持動態擦寫保存的JFFS2 文件系統。 Linux 移植技術已經成熟, 本文不作詳細的闡述。下文主要介紹MPEG- 4 壓縮編碼模塊和CGI 模塊的程序設計。 MPEG- 4 壓縮編碼模塊程序設計 該模塊主要完成MPG440 和TI5150 相關寄存器的配置, 并保證MPEG- 4 碼流的正常輸出。當嵌入式Linux系統啟動后,首先配置MPG440 的相關寄存器, 其初始化完成后, 通過I2C總線對TVP5150 進行初始化配置。當系統開始壓縮編碼時,MPEG- 4 碼流接收存儲程序由MPEG- 440 的數據流緩沖器標志信號控制。當1024b 緩沖器滿時, RISC_INT0 置于低電平, 微控制器通過DMA通道從MPG440 的HPI 口將碼流送到PC 機端。MPEG-4 壓縮編碼模塊程序流程如圖4 所示。 CGI 程序模塊設計 CGI(Common Gateway Interface) 是外部擴展應用程序與WWW 服務器交互的一個標準接口。本系統CGI 的工作過程: 在PC 機端的IE 瀏覽器中輸入網絡攝像機IP 地址, 嵌入式網絡服務器根據請求, 將相應的控制頁面反饋給IE 瀏覽器, 用戶填寫表單, 然后提交, CGI 程序提取表單的信息, 根據不同信息來分別處理相應的事件, 如調節MPEG- 4 相關屬性、相機的相關操作等。CGI 控制原理如圖5 所示。 CGI 模塊的設計主要包括三部分: 嵌入式web 服務器的配置、html 頁面的編寫、CGI 程序的設計。 嵌入式web 服務器采用的是Apache, 其配置是以配置文件的形式提供, 放在Ramdisk 中/etc/httpd/conf/目錄下。其配置主要涉及以下三個方面: ①配置根文件的路徑:“DocumentRoot /home/httpd/html”, html 頁面必須放到此目錄下。 ②配置CGI 外部程序所放的路徑:“ScriptAlias /cgi- bin/ home/httpd/cgi- bin/”。 ③配置環境變量:“SetEenv D_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib”, 該變量將會被傳送到CGI 腳本和SSI 頁面, 以保證CGI 程序能正確找到所依賴的庫。 網頁編寫采用html 與shtml 相結合的方式。html 的解析速度較快, shtml 可以在普通網頁中嵌入外部CGI程序, 通過這種方式將系統的默認配置反饋給客戶端。 CGI 程序采用的是C 語言和shell 腳本相結合的方式, 具體編寫過程, 與通常的了Linux 下編程相同。限于篇幅, 不再贅述。 MPEG- 4 解碼程序 映佳科技已提供供二次開發的MPEG- 4 解碼插件OCX, OCX 在PC 機端注冊后, OCX 函數可方便地被網頁調用, 從而實現在PC 機端觀看實時圖像。 總結 本文介紹了一種利用AT91RM9200、TVP5150,MPG440 和DM9161E 等芯片設計的嵌入式網絡攝像機。經測試, 該系統穩定、可靠、實時性好、圖像質量出色。該產品可廣泛應用于交通監控和工業監控以及家庭監控、視頻會議話等眾多領域。 |