劉竹林
(十堰職業(yè)技術(shù)學(xué)院電子工程系,湖北十堰442000)
隨著嵌入式技術(shù)的迅猛發(fā)展和視頻圖像處理技術(shù)的廣泛應(yīng)用,各種嵌入式芯片如DSP、ARM、SOC等被廣泛應(yīng)用于數(shù)碼、安防、交通信號采集等領(lǐng)域。此外,射頻技術(shù)日益成熟,采用射頻技術(shù)進(jìn)行無線通信設(shè)計為短距離無線數(shù)據(jù)傳輸提供了較好的解決辦法,是開發(fā)低成本、低功耗的無線通信應(yīng)用系統(tǒng)的較好選擇。本文通過對系統(tǒng)的深入的分析和理解,將嵌入式技術(shù)、視頻采集處理技術(shù)和射頻技術(shù)相結(jié)合,設(shè)計了一種基于ARM7芯片的嵌入式的移動視頻采集處理系統(tǒng)。
本系統(tǒng)以LPC2210為控制核心,通過CMOS攝像頭采集的模擬視頻信號首先通過SAA7113H轉(zhuǎn)換成標(biāo)準(zhǔn)的YUV4:2:2格式數(shù)字信號;然后由GO7007SB進(jìn)行MPEG-4壓縮,壓縮后的數(shù)據(jù)被GO7007SB的HPI控制器送往HPI接口的數(shù)據(jù)緩沖器中;最后LPC2210從HPI接口讀取數(shù)據(jù),并通過NewMsg-RF1100模塊進(jìn)行傳輸。嵌入式的視頻采集處理系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
圖1 視頻采集處理系統(tǒng)硬件結(jié)構(gòu)
IIC總線上掛接的器件是視頻轉(zhuǎn)換芯片—SAA7113H,LPC2210的P0.2和P0.3引腳分別連接SAA7113H的SCL和SDA引腳。LPC2210作為主機,SAA7113H作為從機,由LPC2210產(chǎn)生起始和停止信號,向SAA7113H發(fā)送命令,控制芯片工作。配置如圖2所示。
圖2 IIC總線配置
HPI(Host-Post Interface)接口是主機與視頻壓縮模塊相連接的一個并行通信口,是構(gòu)建主從式系統(tǒng),實現(xiàn)主機與從機通信的重要接口。
由于視頻壓縮后的數(shù)據(jù)量仍然很大,而且需要更快捷的方式進(jìn)行數(shù)據(jù)交換,為了解決速度這個瓶頸問題,本系統(tǒng)利用LPC2210配置打印機并口與外設(shè)進(jìn)行通信。主機通過HPI可以訪問視頻壓縮芯片內(nèi)全部的存儲空間及地址空間映射的外設(shè),進(jìn)而控制壓縮芯片,實現(xiàn)數(shù)據(jù)交換。通過配置LPC2210的I/O口形成HPI通信接口,工作方式為HPI16,即復(fù)用的數(shù)據(jù)和地址總線為16位。LPC2210配置HPI接口方式如圖3所示。WR、RD和ALE分別為總線方式的寫、讀和鎖存位,INT為外部中斷位,壓縮模塊壓縮完一幀圖像后,通過INT引腳產(chǎn)生中斷,通知LPC2210讀取數(shù)據(jù),LPC210通過HPI接口可訪問GO7007SB的內(nèi)部RAM。
圖3 HPI總線配置方式
為了本系統(tǒng)的正常運行,在設(shè)計中配置了一塊16位、2MByte的Nor Flash芯片SST39VF160作為系統(tǒng)啟動ROM存儲器。存儲器連接使用了16位總線方式,根據(jù)LPC2210芯片的說明,對于16位數(shù)據(jù)總線其地址線從A1開始。因此,本文中FLASH的地址總線[A19~A0]與LPC2210的地址總線[A20~A1]相連。16位數(shù)據(jù)總線[DQ15~DQ0]與LPC2210低16位數(shù)據(jù)總線[D0~D15]相連。而將Bank1的選通信號CS1接至FLASH的/CE端。/OE端接至LPC2210的nOE端;/WE端接至LPC2210的nWE端。連線如圖4所示。
圖4 SST39VF160存儲系統(tǒng)電路圖
系統(tǒng)主存使用一種高速CMOS動態(tài)隨機存取存儲器MT45W4M16,該芯片是一個4Megx16位的64MB器件,含有低功耗SRAM或偽SRAM的工業(yè)標(biāo)準(zhǔn)異步接口。MT45W4M16與LPC2210的Bank0連接,SDRAM由片選信號CS0選通,其LB和UB分別與LPC2210的BLS0和BLS1相連。MT45W4M16被放置在空間Bank0(0x80000000-0x807FFFFF)。如圖5所示。
圖5 MT45W4M16存儲系統(tǒng)電路圖
視頻采集模塊由CMOS感光元件、視頻A/D轉(zhuǎn)換芯片等部分組成。為了簡化設(shè)計和降低成本,系統(tǒng)選用了CMOS模擬攝像頭和視頻轉(zhuǎn)換芯片SAA7113H來搭建出視頻采集系統(tǒng)的硬件電路。視頻采集處理電路能將模擬視頻信號轉(zhuǎn)換成標(biāo)準(zhǔn)的YUV4:2:2格式數(shù)字視頻信號,通過VPO接口傳送到GO7007SB[1]并進(jìn)行MPEG-4壓縮,極大的方便圖像的傳輸利用。視頻采集處理模塊電路示意圖如圖6所示。
圖6 視頻采集壓縮模塊電路示意圖
視頻傳輸電路是本系統(tǒng)的主要部分之一,該模塊把壓縮后的視頻數(shù)據(jù)以無線的形式傳輸給終端,是視頻處理系統(tǒng)必不可少的環(huán)節(jié)。無線傳輸部分主要由LPC2210和NewMsg-RF1100模塊構(gòu)成。其中NewMsg-RF1100是基于CC1100芯片的射頻傳輸模塊,通過對其寄存器的配置,能夠滿足不同的數(shù)據(jù)傳輸要求,可以很方便地進(jìn)行數(shù)據(jù)傳輸。模塊電路示意圖如圖7所示。
圖7 無線傳輸模塊電路示意圖
軟件系統(tǒng)設(shè)計主要包括嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在ARM上的移植和在此操作系統(tǒng)下的編程。深入研究μC/OS-Ⅱ的任務(wù)調(diào)度機制以及認(rèn)真規(guī)劃采集處理系統(tǒng)的工作流程后根據(jù)視頻采集處理系統(tǒng)的特點,本系統(tǒng)設(shè)計了兩個主要任務(wù),分別是“啟動任務(wù)”和“數(shù)據(jù)發(fā)送任務(wù)”。視頻采集處理系統(tǒng)通過μC/OS-II操作系統(tǒng)對這些任務(wù)的調(diào)度來實現(xiàn)[2]。軟件總體結(jié)構(gòu)如圖8所示。
圖8 軟件系統(tǒng)總體結(jié)構(gòu)圖
系統(tǒng)啟動后,操作系統(tǒng)將調(diào)用啟動任務(wù),進(jìn)行IIC、SPI、定時器和相關(guān)中斷的初始化,發(fā)送命令到視頻采集模塊和視頻壓縮模塊,使其開始工作,同時創(chuàng)建郵箱,創(chuàng)建數(shù)據(jù)發(fā)送任務(wù)。啟動任務(wù)的優(yōu)先級級別比數(shù)據(jù)發(fā)送任務(wù)低。啟動任務(wù)運行后,操作系統(tǒng)將調(diào)用數(shù)據(jù)發(fā)送任務(wù)。視頻數(shù)據(jù)的采集由行同步、場同步和點時鐘控制,采集的數(shù)據(jù)在時鐘控制下自動送往視頻壓縮模塊。壓縮的圖像數(shù)據(jù)被送往數(shù)據(jù)緩沖器中,當(dāng)緩沖器滿時,HPI產(chǎn)生緩沖器滿中斷通知ARM讀取此數(shù)據(jù),中斷服務(wù)子程序讀取數(shù)據(jù),然后將數(shù)據(jù)發(fā)送給郵箱,使數(shù)據(jù)發(fā)送任務(wù)就緒,讀取郵箱數(shù)據(jù)后進(jìn)行數(shù)據(jù)發(fā)送。
ARM上電復(fù)位后,首先執(zhí)行的FLASH中的啟動代碼部分,對其內(nèi)部寄存器和外圍設(shè)備等進(jìn)行初始。在初始化完成后,程序?qū)⑦M(jìn)入main()函數(shù),初始化相關(guān)硬件,比如時鐘、IIC總線、SPI總線等。然后,初始化μC/OS-II操作系統(tǒng),接著創(chuàng)建任務(wù)間通信的郵箱、信號量等全局變量和創(chuàng)建任務(wù)。最后,啟動操作系統(tǒng),進(jìn)入μC/OS-II多任務(wù)調(diào)度環(huán)境,開始運行優(yōu)先級最高的處理任務(wù)。整體流程見圖9。
圖9 軟件系統(tǒng)的整體工作流程圖
本系統(tǒng)設(shè)計了兩個主要任務(wù),分別是“啟動任務(wù)(TaskStart())”和“數(shù)據(jù)發(fā)送任務(wù)(TaskSend())”,數(shù)據(jù)的讀取由中斷服務(wù)子程序完成。這兩個任務(wù)中數(shù)據(jù)發(fā)送任務(wù)的優(yōu)先級高于啟動任務(wù)。
啟動任務(wù)主要用來初始化定時器、相關(guān)中斷和所用的各總線控制器;初始化SAA7113H、GO7007SB和NewMsg-RF1100模塊;并且創(chuàng)建郵箱和數(shù)據(jù)發(fā)送任務(wù)。然后等待HPI中斷。
主模式IIC的數(shù)據(jù)發(fā)送程序流程圖如圖10。
圖10 IIC主發(fā)送模式程序流程圖
數(shù)據(jù)發(fā)送任務(wù)為調(diào)用OSMboxPend()函數(shù)請求郵箱中的消息,如果郵箱中有消息,則該任務(wù)處于就緒狀態(tài),將從郵箱中取出消息,并調(diào)用函數(shù)發(fā)送數(shù)據(jù),發(fā)送完畢后該任務(wù)掛起。任務(wù)流程圖如下:
圖11 數(shù)據(jù)發(fā)送任務(wù)流程圖
本文以高性能處理器LPC2210為核心,構(gòu)建了一種集視頻采集、壓縮和傳輸為一體的嵌入式應(yīng)用系統(tǒng),可用于中短距離的無線監(jiān)控、機器人視覺、醫(yī)療內(nèi)窺鏡等多個領(lǐng)域。該系統(tǒng)的軟件是基于μC/OS-Ⅱ的多任務(wù)應(yīng)用,這里只實現(xiàn)了多任務(wù)切換,需在基于μC/OS-Ⅱ的網(wǎng)絡(luò)協(xié)議棧、消息隊列的使用和文件系統(tǒng)實現(xiàn)方面作進(jìn)一步的研究,使通信更加合理;并且在低功耗實現(xiàn)上需作進(jìn)一步研究。
[1]范學(xué)海,胡 佼,金煒東.基于GO7007SB的嵌入式MPEG-4遠(yuǎn)程視頻監(jiān)控系統(tǒng) [J].黑龍江科技學(xué)院學(xué)報,2005(2):126-128.
[2]晨 風(fēng).嵌入式實時多任務(wù)軟件開發(fā)基礎(chǔ)[M].北京:清華大學(xué)出版社,2004:9.