基于DSP/ARM的網(wǎng)絡(luò)硬盤錄像機(jī)的設(shè)計(jì)方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著人們生活水平的提高和對工作、生活環(huán)境中安全防衛(wèi)需求的增長,視頻監(jiān)控系統(tǒng)近年來得到了迅速的發(fā)展。傳統(tǒng)的基于PC 機(jī)的視頻監(jiān)控系統(tǒng)多存在著諸如安裝攜帶不便、不能在惡劣環(huán)境下使用等一些缺點(diǎn),這就亟待一種全新的視頻監(jiān)控系統(tǒng)的出現(xiàn)。隨著近年來超大規(guī)模集成電路和嵌入式軟硬件技術(shù)的迅猛發(fā)展,特別是DSP、PowerPC 等嵌入式芯片的出現(xiàn),將嵌入式處理器應(yīng)用到視頻監(jiān)控系統(tǒng)中不僅克服了上述基于PC 機(jī)系統(tǒng)的一些缺點(diǎn),而且其強(qiáng)大的功能加上豐富的外設(shè)接口和高度的可編程性使得視頻監(jiān)控的硬件和軟件都更容易實(shí)現(xiàn)。正是由于越來越高的性價(jià)比加上體積小、成本低等獨(dú)特優(yōu)勢,使得嵌入式芯片在視頻監(jiān)控領(lǐng)域也漸漸擁有了一席之地。
1 系統(tǒng)概述
本方案采用DSP+ARM 的雙核結(jié)構(gòu),采用H.264標(biāo)準(zhǔn)作為視頻壓縮標(biāo)準(zhǔn),采用開放性的uclinux 操作系統(tǒng)。其中DSP 芯片采用TI 公司的DM642,主要用來進(jìn)行圖像處理,ARM 芯片采用S3C2510 進(jìn)行操作控制。本方案中服務(wù)器不僅要采集、處理視頻,還要進(jìn)行控制,如通過云臺的控制對監(jiān)控圖像的視場、方位進(jìn)行改換等。雖然DM642 具有較高的性能和豐富的接口,但要讓DSP 完成上述全部功能,就顯得力不從心了,系統(tǒng)的實(shí)時(shí)性和圖像質(zhì)量將難免受到損傷。
引入ARM 主機(jī)則可從根本上解決這些問題。ARM 是32 位CPU,功能強(qiáng)大,可以構(gòu)建適于網(wǎng)絡(luò)傳輸?shù)牟僮飨到y(tǒng)。
2 系統(tǒng)設(shè)計(jì)
2.1 總體設(shè)計(jì)
網(wǎng)絡(luò)硬盤錄像機(jī)的硬件體系包含以下幾個(gè)處理單元:視音頻采樣、視音頻壓縮處理模塊、視音頻預(yù)覽模塊、視音頻回放模塊、記錄模塊、網(wǎng)絡(luò)模塊、報(bào)警輸入輸出模塊、人機(jī)界面模塊等,以下是網(wǎng)絡(luò)硬盤錄像機(jī)的結(jié)構(gòu)示意圖,其中包含了壓縮模塊、預(yù)覽模塊、硬盤控制器及主控模塊,各模塊之間的數(shù)據(jù)通過PCI內(nèi)部總線進(jìn)行傳輸。
圖1 系統(tǒng)結(jié)構(gòu)示意圖
采樣的視音頻數(shù)據(jù)由壓縮模塊進(jìn)行處理,處理后的視音頻數(shù)據(jù)供預(yù)覽、錄像或通過網(wǎng)絡(luò)傳輸,視音頻處理的核心部件為數(shù)字信號處理器(DSP)。系統(tǒng)資源的管理與調(diào)度由主控模塊完成,其核心部件為ARM 芯片。
2.2 視頻和音頻采集和處理模塊
本系統(tǒng)采用模擬攝像頭進(jìn)行視頻數(shù)據(jù)采集,然后將采集到的模擬數(shù)據(jù)通過TI 公司的TVP5154 芯片進(jìn)行數(shù)字化,TVP5154 視頻編碼器支持PAL/NTSC、CVBS 或Y/C 模擬視頻輸入,8-bit BT.656 數(shù)字視頻數(shù)據(jù)流輸出,其輸出的數(shù)字視頻流可以與DM642 實(shí)現(xiàn)無縫連接。在本地預(yù)覽和本地回放模塊,采用SAA7105 視頻解碼器進(jìn)行解碼,SAA7105 型視頻解碼器支持8-bit BT.656 數(shù)字視頻數(shù)據(jù)流輸入,PAL/NTSC、CVBS 或Y/C 模擬視頻輸出。通過DM642 的I2C 總線對視頻編/解碼器的內(nèi)部寄存器進(jìn)行編程,實(shí)現(xiàn)不同的輸入輸出,視頻編解碼器的參數(shù)通過I2C 總線配置。作為視頻輸入口時(shí),視頻數(shù)據(jù)的行/場同步又包含BT.656 數(shù)字視頻數(shù)據(jù)流中的EAV和SAV 時(shí)基信號控制,視頻口只需視頻采樣時(shí)鐘和采樣使能信號(控制采樣起始),TVP5154 用系統(tǒng)時(shí)鐘SCLK 提供采樣時(shí)鐘,用可編程引腳GPCL 提供采樣使能。作為視頻輸出口時(shí),視頻口要為SAA7105 提供時(shí)鐘和行/場同步信號。DM642 有3 個(gè)視頻口,每個(gè)都可以配置為上下兩個(gè)通道,但VP0、VP1 的兩個(gè)通道必須同時(shí)為視頻輸入口或輸出口。結(jié)合實(shí)際應(yīng)用,在本系統(tǒng)中VP0 和VP1 的 A 通道配置為8-bitBT.656 視頻輸入口,VP2 A 和B 通道配置為2 個(gè)8-bit BT.656 視頻輸入口,VP0 和VP1 的B 通道配置為MCASP,接四個(gè)音頻Codec.
音頻部分采用TLV320AIC23B 型音頻編/解碼器,它支持麥克風(fēng)/立體聲模擬輸入/輸出和數(shù)字音頻數(shù)據(jù)流輸出/輸入。PLL1708型可編程視頻/音頻同步數(shù)字鎖相環(huán)給McASP 和TLV320AIC23B 提供時(shí)鐘信號,SCK02 端口接McASP 的AHCLKX,SCK03 端口接TLV320AIC23B 的主時(shí)鐘MCLK.PLL1708 的時(shí)鐘輸入為27MHz.DM642 與TLV320AIC23B 的對應(yīng)引腳功能見表1.
表1 DM642 與TLV320AIC23B 的對應(yīng)引腳。
2.3 存儲模塊
DM642 的EMIF 在內(nèi)存中的地址映射分為4 個(gè)可獨(dú)立尋址的空間CE[3:0],自地址0x80000000 起各占256MB.根據(jù)設(shè)計(jì)中所選用芯片的數(shù)據(jù)寬度等特點(diǎn),可以對這4 個(gè)尋址空間進(jìn)行配置。其中,CE0 空間配置成64 位寬度,只用于SDRAM 內(nèi)存的映射;CE1 空間配置成8 位寬度,用于Flash、UART 的映射;CE2 空間配置成16 位寬度,用于ATA 寄存器的映射;CE3 本設(shè)計(jì)中未使用,可以作為將來擴(kuò)展子卡用。[!--empirenews.page--]
在本設(shè)計(jì)中,硬盤控制器芯片使用Silicon Image公司的SiI3512雙口SATA 控制器來實(shí)現(xiàn)SATA 功能。
SiI3512 直接掛載在S3C2510 的PCI 總線上為系統(tǒng)提供SATA 接口。連接方式如圖2 所示:
圖2 SiI3512 與S3C2510 的連接方式。
2.4 電源模塊
2.4.1 供電電路
整個(gè)電路板采用+5 V 電壓供電,可以從外部引入,也可以從擴(kuò)展的PCI 接口引入。DM642 芯片需要2 個(gè)獨(dú)立的電壓,CPU 內(nèi)核電壓GVDD(+1.4 V)和外圍I/O 電壓DVDD(+3.3 V)。這兩個(gè)電壓在供電時(shí)需要嚴(yán)格按照順序進(jìn)行,即GVDD 要比DVDD 上電早,至少不能晚于DVDD.設(shè)計(jì)中采用2 片TI 公司專為高性能DSP、FPGA、ASIC 和微處理器的應(yīng)用而設(shè)計(jì)的電源芯片TPS54310,分別給DM642 提供CVDD 和DVDD 電壓。在電路連接上將TPS54310(1)的PWRGD引腳和TPS54310(2)的SS/EN引腳相連。
當(dāng)(1)的輸出電壓高于1.2 V 時(shí),芯片(2)開始工作;當(dāng)這個(gè)值達(dá)到穩(wěn)定的+1.4 V 后,PWRGD 引腳輸出高電平送到芯片(2)的SS/EN 引腳。這就保證了CPU 內(nèi)核的上電時(shí)間早于I/O 的上電時(shí)間,如圖3 所示:
圖3 電源電路。
2.4.2 電源監(jiān)測電路
為了保證DM642 芯片在電源未達(dá)到要求的電平時(shí),不會產(chǎn)生不受控制的狀態(tài),而且允許系統(tǒng)中的各個(gè)芯片在任意時(shí)刻可以通過復(fù)位來調(diào)整工作狀態(tài),這就需要在系統(tǒng)中加入一個(gè)電源監(jiān)測電路,.該電路能確保在系統(tǒng)的加電過程中,CVDD 和DVDD 達(dá)到要求的電平之前,DSP 始終處于復(fù)位狀態(tài)。選用了TI 公司生產(chǎn)的TPS3823-33 芯片,其固定復(fù)位信號時(shí)間長達(dá)200 ms,能滿足系統(tǒng)中所有芯片的復(fù)位需求。芯片帶有一個(gè)看門狗電路,通過WDI 引腳接收來自CPU 的定時(shí)信號,避免發(fā)生系統(tǒng)程序跑飛的情況。
3 系統(tǒng)的軟件設(shè)計(jì)
3.1 系統(tǒng)的軟件設(shè)計(jì)
該系統(tǒng)的軟件主要包括三個(gè)部分:啟動程序,內(nèi)核與根文件系統(tǒng),專業(yè)芯片驅(qū)動及應(yīng)用。為了開發(fā)和升級的方便,我們將根文件系統(tǒng)作成RAMDISK 的格式。據(jù)此我們將FlashROM 分為3 個(gè)區(qū):1 Cramfs,2 Boot-Loader,3 Kernel+RAMDISK.本系統(tǒng)的啟動程序用的是DENX 的U-boot-1.1.0.它的主要工作是初始化硬件,為加載操作系統(tǒng)準(zhǔn)備必要的環(huán)境及其參數(shù),同時(shí)可以與開發(fā)主機(jī)通訊,下載程序到SDRAM 和Flash.通過修改它的一些配置文件,可以完成對目標(biāo)系統(tǒng)Memory Controller,memory map以及I/O,PCI,Flash,Ethernet controller,Serial等硬件設(shè)施的初始化。
對于芯片驅(qū)動程序的編寫,一些通用設(shè)備驅(qū)動,如以太網(wǎng)卡驅(qū)動已經(jīng)在內(nèi)核中,對于系統(tǒng)的一些專業(yè)芯片的驅(qū)動由于其特殊性,將其和應(yīng)用做成Cramfs文件系統(tǒng)格式,在目標(biāo)板的的操作系統(tǒng)啟動時(shí)以module 的形式進(jìn)行加載,方便修改和升級。編寫驅(qū)動程序可以按照Linux 下編寫驅(qū)動程序的規(guī)則來編寫。編寫的驅(qū)動程序應(yīng)該具有以下功能:a)對設(shè)備的初始化和釋放:b)數(shù)據(jù)從內(nèi)核傳到硬件和從硬件讀取數(shù)據(jù):c)讀取應(yīng)用程序傳遞給設(shè)備文件的數(shù)據(jù)和回應(yīng)應(yīng)用程序請求的數(shù)據(jù):d)檢測和處理設(shè)備出現(xiàn)的錯(cuò)誤。
設(shè)備驅(qū)動程序的實(shí)質(zhì)就是中斷處理。Linux 中斷處理程序分為上半部和下半部。上半部即一般的中斷服務(wù)程序, 由硬件中斷觸發(fā),一般運(yùn)行在關(guān)中斷的方式下,應(yīng)當(dāng)盡可能的短小,處理盡可能的快:下半部運(yùn)行在開中斷和任務(wù)串行化的環(huán)境下,處理需要較長時(shí)間的任務(wù)。驅(qū)動程序上半部在處理完實(shí)時(shí)性很強(qiáng)的任務(wù)后,用Queue-task 函數(shù)將下半部處理函數(shù)掛入立即隊(duì)列,用mark-bh 函數(shù)來激活立即隊(duì)列,下半部就可以最優(yōu)先的被執(zhí)行。
3.2 應(yīng)用程序的設(shè)計(jì)
應(yīng)用程序的設(shè)計(jì)可以采用多線程或者多進(jìn)程的方式。多線程的優(yōu)點(diǎn)在于線程比進(jìn)程要小,可以使應(yīng)用更輕量,線程間通訊方便,缺點(diǎn)就在于由于線程使用同一個(gè)地址空間,如果一個(gè)線程出了問題,將可能影響到整個(gè)系統(tǒng);多進(jìn)程各自占有一份內(nèi)存空間,因此可以增強(qiáng)系統(tǒng)的健壯性,但是多進(jìn)程增加了系統(tǒng)的開銷,同時(shí)進(jìn)程間通訊較復(fù)雜。結(jié)合我們系統(tǒng)的實(shí)際,考慮到各個(gè)線程通訊的重要性,我們采取多進(jìn)程多線程的方式,在軟件上增加一個(gè)與主進(jìn)程并行的守護(hù)進(jìn)程,在硬件上設(shè)置看門狗,以增強(qiáng)系統(tǒng)的健壯性。
4 遠(yuǎn)程控制與通信鏈路的建立
本設(shè)計(jì)采用PPP 串行通信接口協(xié)議方式。PPP(PointtoPointProtocal,點(diǎn)對點(diǎn)協(xié)議)協(xié)議中包含3 個(gè)部分:
在串行鏈路上封裝IP 數(shù)據(jù)報(bào)的方法;建立、配置及測試數(shù)據(jù)鏈路的鏈路控制協(xié)議(LCP);不同網(wǎng)絡(luò)層協(xié)議的網(wǎng)絡(luò)控制協(xié)議(NCP)。PPP 具有很多優(yōu)勢;支持循環(huán)冗余檢測、支持通信雙方進(jìn)行IP 地址動態(tài)協(xié)商、對TCP 和IP 報(bào)文進(jìn)行壓縮、認(rèn)證協(xié)議支持(CHAP 和PAP)等。
PPP 的實(shí)現(xiàn)可以通過2 個(gè)后臺任務(wù)來完成,協(xié)議控制任務(wù)和寫任務(wù)。協(xié)議控制任務(wù)控制各種PPP的控制協(xié)議,包括LCP、NCP、CHAP 和PAP.它用來處理連接的建立、連接方式的協(xié)商、連接用戶的認(rèn)證以及連接中止。寫任務(wù)用來控制PPP 設(shè)備的數(shù)據(jù)發(fā)送。數(shù)據(jù)報(bào)的發(fā)送過程,就是通過寫任務(wù)往串行接口設(shè)備寫數(shù)據(jù)的過程,當(dāng)有數(shù)據(jù)報(bào)準(zhǔn)備就緒,PPP 驅(qū)動通過信號燈激活寫任務(wù),使之完成對串行接口設(shè)備的數(shù)據(jù)發(fā)送過程。PPP 接收端程序通過在串行通信設(shè)備驅(qū)動中加入"hook"程序來實(shí)現(xiàn)。在串行通信設(shè)備接收到1 個(gè)數(shù)據(jù)之后,串行設(shè)備的中斷服務(wù)程序(ISR)調(diào)用PPP 的ISR.當(dāng)1 個(gè)正確的PPP數(shù)據(jù)幀接收之后,PPP 的ISR 通過調(diào)度程序調(diào)用PPP輸入程序,然后PPP 輸入程序從串行設(shè)備的數(shù)據(jù)緩存中將整個(gè)PPP 數(shù)據(jù)幀讀出,根據(jù)PPP 的數(shù)據(jù)幀規(guī)則進(jìn)行處理,也就是分別放入IP 輸入隊(duì)列或者協(xié)議控制任務(wù)的輸入隊(duì)列。
5 總結(jié)
我們采用ARM 和DSP 芯片的雙核結(jié)構(gòu)組建了一種網(wǎng)絡(luò)視頻服務(wù)器。以DM642 和S3C2510 分別作為視頻板和主機(jī)板的核心芯片,H.264 作為視頻壓縮方案,操作系統(tǒng)選用了uclinux.本系統(tǒng)充分利用了ARM 和DSP 的各自特點(diǎn),充分發(fā)揮ARM 的事件處理控制能力和DSP 對數(shù)字視頻大吞吐量要求,同時(shí)通過優(yōu)選主要芯片,努力提高整機(jī)性價(jià)比。本系統(tǒng)可同時(shí)輸入16 路視頻信號,在保障視頻質(zhì)量的前提下,適于當(dāng)前不同帶寬的網(wǎng)絡(luò)要求。