引言
隨著信息技術(shù)的發(fā)展,數(shù)字化越來(lái)越多的代替了傳統(tǒng)的模擬系統(tǒng),數(shù)字化使得遠(yuǎn)程視頻監(jiān)控系統(tǒng)不需要專門架設(shè)線路,應(yīng)用現(xiàn)有通訊線路就可以實(shí)現(xiàn)低成本的信息傳遞,與傳統(tǒng)的模擬監(jiān)控系統(tǒng)相比,它的組網(wǎng)成本大大降低、系統(tǒng)體積重量大大減小、運(yùn)行維護(hù)更容易。所使用的通信線路有很多種,如:以太網(wǎng)、ISDN、xDSL、公共電話網(wǎng)、無(wú)線電話網(wǎng)等,根據(jù)線路的帶寬不同,遠(yuǎn)程視頻監(jiān)控系統(tǒng)的圖像質(zhì)量也有很大不同。
本文針對(duì)低設(shè)備成本、低運(yùn)行成本和超遠(yuǎn)距離的視頻監(jiān)控系統(tǒng)應(yīng)用提出了解決方案,使用ARM嵌入式處理器和Linux操作系統(tǒng)構(gòu)建嵌入式系統(tǒng),開(kāi)發(fā)出可實(shí)際應(yīng)用的遠(yuǎn)程視頻監(jiān)控系統(tǒng),適用于低分辨率、低成本、長(zhǎng)距離的監(jiān)控應(yīng)用。
它的特點(diǎn)有:
構(gòu)建了ARM嵌入式處理器開(kāi)發(fā)平臺(tái),具有嵌入式系統(tǒng)的低成本開(kāi)發(fā)流程;
前端使用便宜的一體化高集成數(shù)字化視頻采集模塊,簡(jiǎn)化了系統(tǒng)前端的設(shè)計(jì),大大降低了前端成本;
編寫簡(jiǎn)單的嵌入式操作系統(tǒng)程序,動(dòng)態(tài)加載應(yīng)用程序,加快其執(zhí)行速度;
信號(hào)處理使用由高速、高性能的ARM處理器構(gòu)建的嵌入式系統(tǒng),通過(guò)軟件來(lái)實(shí)現(xiàn)圖像壓縮。
ARM視頻監(jiān)控系統(tǒng)平臺(tái)
本課題要求建立低成本的圖像數(shù)據(jù)采集、實(shí)時(shí)壓縮與遠(yuǎn)程傳送系統(tǒng),而且要求容易進(jìn)行實(shí)驗(yàn)室環(huán)境下的開(kāi)發(fā)與調(diào)試;另外考慮到以后的擴(kuò)展要求,還需要具備內(nèi)存管理單元(MMU)與音頻接口。
Cirrus Logic公司的EP7312正適合要求。它是基于ARM720T內(nèi)核的嵌入式微處理器,運(yùn)行于74MHz時(shí)其性能與100MHz的Intel Pentium芯片基本相當(dāng),且功耗很低,在74MHz工作頻率下,功耗90mW,具有MMU、音頻接口及LCD控制器。
ARM的系統(tǒng)擴(kuò)展槽和設(shè)備擴(kuò)展槽,用于為ARM系統(tǒng)添加如以太網(wǎng)接口、海量數(shù)據(jù)存儲(chǔ)接口和PCMCIA等接口或者用于與其他功能開(kāi)發(fā)板,為ARM系統(tǒng)擴(kuò)展了CMOS圖像獲取功能和VGA顯示功能。其中,VGA接口是通過(guò)電阻網(wǎng)絡(luò)實(shí)現(xiàn)320×240×12bits,即4096色彩色顯示。與SRAM訪問(wèn)相關(guān)的寄存器有:SRAM控制寄存器、讀地址低16位、讀地址高16位、讀出數(shù)據(jù)寄存器、寫地址低16位、寫地址高16位、寫入數(shù)據(jù)寄存器;與CMOS圖像采集有關(guān)的寄存器有CMOS采集控制寄存器、CMOS采集狀態(tài)寄存器;與VGA顯示有關(guān)的是VGA顯示控制寄存器。
ARM控制CMOS圖像采集,然后ARM從圖像緩沖SRAM中讀取圖像數(shù)據(jù)到ARM內(nèi)部的LCD顯示存儲(chǔ)區(qū),顯示到LCD屏上。這也就打通了整個(gè)數(shù)據(jù)前向通道,ARM獲取了圖像后就可以進(jìn)一步做壓縮處理和傳輸。
ARM程序開(kāi)發(fā)
ARM視頻監(jiān)控系統(tǒng)配備512KB的FLASH ROM,用于程序存儲(chǔ)器,所以應(yīng)用程序與原始數(shù)據(jù)的總和必須小于512KB。以下是ARM程序開(kāi)發(fā)流程:
軟件的編寫與調(diào)試
針對(duì)應(yīng)用編寫所需的各種程序,使用ADS(ARM Developer Suite)建立工程文件,把編寫好的匯編程序*.s文件、C語(yǔ)言程序 *.c文件、*.h文件加入到工程中。然后對(duì)編譯參數(shù)進(jìn)行相應(yīng)設(shè)置,編譯工程文件,編譯通過(guò)后生成可執(zhí)行二進(jìn)制代碼。使用ADW調(diào)試已編譯工程,軟件調(diào)試只能調(diào)試ARM指令,無(wú)法仿真外圍設(shè)備;調(diào)試通過(guò)后,準(zhǔn)備下載可執(zhí)行二進(jìn)制代碼,進(jìn)行硬件測(cè)試。
程序下載的實(shí)現(xiàn)
通過(guò)bootloader程序來(lái)實(shí)現(xiàn)對(duì)FLASH程序存儲(chǔ)器的編程,bootloader程序是自己編寫的基于內(nèi)啟動(dòng)方式下的小程序。
(1)首先讓EP7312以內(nèi)啟動(dòng)方式運(yùn)行,PC通過(guò)串口1(9600bps)接收到“〈”標(biāo)志.
(2)然后PC從串口發(fā)送2KB的bootloader程序到EP7312。
(3)這時(shí)bootloader程序開(kāi)始運(yùn)行,PC通過(guò)串口1(115200bps)發(fā)送“0x79”與EP7312再次建立連接,隨后PC發(fā)送“0xFF 0xFA”命令,EP7312返回“Len:”,PC再發(fā)送四字節(jié)的要下載的文件長(zhǎng)度數(shù)據(jù)。接著PC繼續(xù)發(fā)送整個(gè)要下載的程序,發(fā)送完成后將接收到“OK!”,然后編程結(jié)束后將接收到“Done”表明下載編程操作成功完成。
(4)此時(shí)重新以外啟動(dòng)方式啟動(dòng)EP7312就可以運(yùn)行剛下載的程序。
以上是以工程方式來(lái)進(jìn)行ARM應(yīng)用程序開(kāi)發(fā)的基本流程,在實(shí)際使用過(guò)程中如果應(yīng)用到新器件還需要一個(gè)硬件調(diào)試階段,在硬件調(diào)試通過(guò)以后才可以進(jìn)一步開(kāi)發(fā)應(yīng)用程序。
有關(guān)硬件調(diào)試的軟件方法
在沒(méi)有硬件開(kāi)發(fā)工具的情況下,可以通過(guò)串口來(lái)進(jìn)行硬件的調(diào)試,EP7312與外圍硬件的連接基本上有三種方式:直接總線連接、與EP7312的片內(nèi)外設(shè)專用引腳連接、連接EP7312的通用I/O引腳。
以總線方式連接的外設(shè)可以通過(guò)總線讀寫來(lái)訪問(wèn);專用外設(shè)可以通過(guò)內(nèi)部專門的控制寄存器來(lái)訪問(wèn);經(jīng)通用I/O擴(kuò)展的外設(shè)則可以通過(guò)對(duì)內(nèi)部通用I/O設(shè)置寄存器的控制來(lái)訪問(wèn)。由于內(nèi)部專用寄存器都對(duì)應(yīng)固定的總線地址,所以這三種方式都可以通過(guò)ARM的總線操作對(duì)指定地址的訪問(wèn)來(lái)實(shí)現(xiàn)調(diào)試。
軟件設(shè)計(jì)
在ARM處理器硬件復(fù)位以后,需要運(yùn)行匯編啟動(dòng)代碼完成系統(tǒng)初始化,主要包括:中斷向量設(shè)置、各種處理器模式下的堆棧設(shè)置、系統(tǒng)寄存器設(shè)置、SDRAM、LCD等外圍部件的設(shè)置。以下是其部分程序代碼:
ldr r1,=DRAMControlvalue ;設(shè)置SDRAM參數(shù)
ldr r12,=rSDCONF ;rSDCONF = 0x8000.2300
str r1,[r12]
ldr r12,=rSYSCON2
str r0,[r12] ;rSYSCON2 = 0x8000.1100
ldr r1,=DRAMConfigvalue ;設(shè)置SDRAM刷新速度
ldr r12,=rSDRFPR
str r1,[r12] ;rSDRFPR = 0x8000.2340
ldr r1,=0x06 ;設(shè)置系統(tǒng)時(shí)鐘為74MHz
ldr r12,=rSYSCON3
str r1,[r12] ;rSYSCON3 = 0x8000.2200
MemConfig1value EQU 0x0202023c ;nCS0 = NOR FLASH, 8-bit, 0 wait states
MemConfig2value EQU 0x0000023f ;nCS4 = for FPGA
FPGA
現(xiàn)場(chǎng)可編程邏輯門陣列(FPGA, Field Programmable Gate Array),是一個(gè)含有可編輯元件的半導(dǎo)體設(shè)備,可供使用者現(xiàn)場(chǎng)程式化的邏輯門陣列元件。FPGA是在PAL、GAL、CPLD等可編輯器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。 [全文]
, 16-bit, 0 wait states
ldr r1,=MemConfig1value ;配置存儲(chǔ)器位寬格式與等待狀態(tài)
ldr r12,=rMEMCFG1
str r1,[r12] ;MEMCFG1 = 0x8000.0180
ldr r1,=MemConfig2value
ldr r12,=rMEMCFG2
str r1,[r12] ;MEMCFG2 = 0x8000.01c0
ldr sp,=SVCStack ;設(shè)置堆棧
ARM處理器從獲取圖像信息,執(zhí)行壓縮程序,壓縮后的文件通過(guò)公共電話線路傳遞到監(jiān)控主機(jī)端。由于系統(tǒng)采用相同的圖像分辨率和常量表,所以文件頭都相同,為了減少傳輸數(shù)據(jù)量,不傳送文件頭,文件頭在監(jiān)控主機(jī)端由軟件自動(dòng)添加。
本系統(tǒng)還使用調(diào)制解調(diào)器通過(guò)公共電話網(wǎng)來(lái)建立遠(yuǎn)程數(shù)據(jù)連接,在遠(yuǎn)程圖像監(jiān)控終端處的調(diào)制解調(diào)器處于待命狀態(tài),它使用“ATS0=3&D0W&W1”命令設(shè)置為自動(dòng)應(yīng)答方式,在3次振鈴后自動(dòng)摘機(jī),經(jīng)歷“數(shù)據(jù)風(fēng)暴”以后與主叫方建立連接。監(jiān)控中心的調(diào)制解調(diào)器由監(jiān)控軟件控制撥號(hào)建立連接或者掛斷連接。
數(shù)據(jù)聯(lián)接建立好,ARM會(huì)接收到“CONNECT”字符串表明通訊線路連接成功,此時(shí)就可以像使用普通串口一樣使用調(diào)制解調(diào)器建立的遠(yuǎn)程數(shù)據(jù)連接。ARM接收到從監(jiān)控中心發(fā)來(lái)的采集命令后,依次完成圖像采集、壓縮處理,然后通過(guò)串口以ASC碼形式直接發(fā)送圖像數(shù)據(jù)到監(jiān)控中心,完成一次操作后等待下一個(gè)采集命令。
結(jié)語(yǔ)
本文是完全針對(duì)低設(shè)備成本、低運(yùn)行成本和超遠(yuǎn)距離的圖像監(jiān)控系統(tǒng)應(yīng)用提出的解決方案,前端使用便宜的一體化高集成數(shù)字化視頻采集模塊,簡(jiǎn)化了系統(tǒng)前端的設(shè)計(jì),大大降低了前端成本;信號(hào)處理使用由高速、高性能的ARM處理器與FPGA芯片構(gòu)建的嵌入式系統(tǒng),通過(guò)軟件來(lái)實(shí)現(xiàn)圖像壓縮;最后經(jīng)由公共電話網(wǎng)來(lái)實(shí)現(xiàn)同城范圍內(nèi)的全數(shù)字化遠(yuǎn)程圖像監(jiān)控。在降低系統(tǒng)成本的同時(shí),提高了系統(tǒng)的靈活性。