亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ARM和FPGA的紅外系統(tǒng)數(shù)據(jù)交換驅(qū)動(dòng)設(shè)計(jì)

        2014-12-02 02:43:26王小平
        電視技術(shù) 2014年11期
        關(guān)鍵詞:系統(tǒng)

        王小平,吳 偉

        (1.重慶城市管理職業(yè)學(xué)院,重慶401331;2.重慶郵電大學(xué)信號(hào)與信息處理重慶市重點(diǎn)實(shí)驗(yàn)室,重慶400065)

        責(zé)任編輯:薛 京

        紅外輻射測(cè)溫技術(shù)作為一種非接觸溫度測(cè)量方法,廣泛應(yīng)用于軍事和民用領(lǐng)域。紅外成像儀通過(guò)該技術(shù)將溫度的差異轉(zhuǎn)換成實(shí)時(shí)的視頻顯示在監(jiān)視器上[1]。它能全天24 h工作,即使在最黑的夜晚、濃霧、下雪和煙霧條件下也能進(jìn)行觀看,它能快速探測(cè)所存在的威脅并快速做出反應(yīng)以保護(hù)人員、財(cái)產(chǎn)和基礎(chǔ)設(shè)施的安全。同時(shí),本文關(guān)于數(shù)據(jù)采集的方法具有一般性,在電視信號(hào)的數(shù)字化、視頻監(jiān)控、交互式網(wǎng)絡(luò)電視數(shù)據(jù)采集等方面都具有廣泛的應(yīng)用。

        1 系統(tǒng)設(shè)計(jì)整體架構(gòu)

        本文主要介紹一種基于ARM(Advanced RISC Machines)和FPGA(Field Programmable Gata Array)的紅外監(jiān)控系統(tǒng)。ARM模塊實(shí)現(xiàn)對(duì)各個(gè)單元模塊的初始化、控制和管理,F(xiàn)PGA模塊為前端圖像采集模塊提供驅(qū)動(dòng)時(shí)序,對(duì)圖像數(shù)據(jù)進(jìn)行處理,為ARM系統(tǒng)進(jìn)行數(shù)據(jù)交互。本系統(tǒng)FPGA芯片選用ACTEL公司推出的ProASIC3系列芯片,它具有百萬(wàn)系統(tǒng)門(mén),采用1.2 V直流電壓供電,0.5 nm COMS工藝[2];ARM處理芯片選用SAMSUNG公司推出的16/32位RISC微處理器S3C2440A,功耗低、外圍接口豐富,具有32根地址線,支持4 Gbyte存儲(chǔ)空間。設(shè)計(jì)時(shí)充分利用ARM易操控性和FPGA處理數(shù)據(jù)的并行性。

        系統(tǒng)中FPGA模塊首先為前端圖像數(shù)據(jù)采集模塊提供時(shí)序控制,將輸出的模擬圖像信號(hào)通過(guò)模數(shù)轉(zhuǎn)化變?yōu)閿?shù)字信號(hào),為彌補(bǔ)探測(cè)器硬件的缺陷,F(xiàn)PGA對(duì)圖像數(shù)據(jù)進(jìn)行盲元補(bǔ)償、非均勻性校正、濾波等算法處理,通過(guò)乒乓的操作方式,對(duì)數(shù)據(jù)進(jìn)行內(nèi)存映射,將數(shù)據(jù)通過(guò)4路FIFO緩存到SRAM內(nèi),當(dāng)采集一幀數(shù)據(jù)后向ARM模塊發(fā)出中斷信號(hào)。ARM模塊通過(guò)驅(qū)動(dòng)程序響應(yīng)FPGA發(fā)出的中斷信號(hào),觸發(fā)片選信號(hào),將ARM的地址總線映射到該SRAM芯片內(nèi),觸發(fā)DMA中斷,通過(guò)DMA方式將數(shù)據(jù)映射到內(nèi)存空間,最后通過(guò)網(wǎng)口將圖像數(shù)據(jù)上傳到PC。系統(tǒng)整體設(shè)計(jì)框圖如圖1所示[3]。

        2 數(shù)據(jù)接口硬件設(shè)計(jì)

        圖1 高速紅外監(jiān)控系統(tǒng)設(shè)計(jì)框圖

        對(duì)于高速圖像采集系統(tǒng),兩個(gè)模塊的數(shù)據(jù)交互接口非常重要,極有可能成為高速圖像傳輸性能的瓶頸。根據(jù)系統(tǒng)對(duì)處理數(shù)據(jù)的分析,考慮到系統(tǒng)向上和向下的兼容性,SRAM選型時(shí)均考慮處理數(shù)據(jù)的最大值情況,前端非制冷焦平面微熱輻射計(jì)型探測(cè)器選用系統(tǒng)兼容最大可能的384×288像素,處理后的圖像數(shù)據(jù)16位寬度,得到未經(jīng)過(guò)壓縮的單幀圖像數(shù)據(jù)量為2.16 Mbyte。考慮到圖像處理運(yùn)算過(guò)程中需要大約10幀的圖像緩存空間。

        鑒于以上對(duì)系統(tǒng)中傳輸數(shù)據(jù)的分析,本系統(tǒng)選用ISSI公司的IS61LV51216,高性能CMOS制造工藝,存儲(chǔ)容量為512×16 kbit,內(nèi)部8 Mbyte容量,存取時(shí)間最低可達(dá)8 ns,全靜態(tài)操作不需要時(shí)鐘或刷新,輸入輸出兼容TTL標(biāo)準(zhǔn),高字節(jié)數(shù)據(jù)和低字節(jié)數(shù)據(jù)可分別控制,最高運(yùn)行頻率為133 MHz,常見(jiàn)的封裝為44腳TSOP,兼容LVTTL接口。具有簡(jiǎn)單的讀寫(xiě)和片選控制引腳,在與FPGA和ARM連接時(shí),只需將SRAM的控制端、數(shù)據(jù)端及地址端直接與FPGA和ARM分配的相應(yīng)端口連接,并在FPGA和ARM中設(shè)計(jì)SRAM接口控制模塊,便可實(shí)現(xiàn)SRAM的讀寫(xiě)操作[4]。ARM與 FPGA接口電路設(shè)計(jì)框圖如圖2所示。

        圖2 ARM與FPGA接口電路設(shè)計(jì)框圖

        FPGA模塊首先將前端處理后的高速數(shù)據(jù)分為4路低速數(shù)據(jù)寫(xiě)到構(gòu)建的4個(gè)FIFO中,采用乒乓操作的方式將經(jīng)過(guò)算法處理的32 bit數(shù)據(jù)存到4個(gè)FIFO中[5]。經(jīng)過(guò)對(duì)SRAM的時(shí)鐘控制,將4個(gè)FIFO的數(shù)據(jù)分別存儲(chǔ)到4個(gè)地址區(qū)域,將8 Mbyte的SRAM分為4個(gè)地址空間,由于SRAM的寫(xiě)時(shí)鐘信號(hào)和FIFO的時(shí)鐘信號(hào)為同頻,所以FIFO時(shí)鐘與輸出之間必然會(huì)產(chǎn)生時(shí)間延時(shí),本文采用將FIFO的時(shí)鐘相位做相應(yīng)的偏移,然后作為SRAM的寫(xiě)時(shí)鐘信號(hào)方法,有效地避免了競(jìng)爭(zhēng)冒險(xiǎn)。

        存入的數(shù)據(jù)采用小端存儲(chǔ)方式,數(shù)據(jù)存儲(chǔ)的控制模塊采用中斷控制方式對(duì)數(shù)據(jù)流進(jìn)行相應(yīng)控制,當(dāng)FIFO中的數(shù)據(jù)達(dá)到系統(tǒng)設(shè)計(jì)的一幀閾值時(shí),控制模塊將FIFO中的數(shù)據(jù)存儲(chǔ)到SRAM中,當(dāng)SRAM中的數(shù)據(jù)達(dá)到一幀數(shù)據(jù)時(shí),控制模塊向ARM端口發(fā)出中斷信號(hào),ARM通過(guò)片選總線獲取數(shù)據(jù)。

        3 驅(qū)動(dòng)程序設(shè)計(jì)

        系統(tǒng)以ARM模塊為核心對(duì)各個(gè)模塊進(jìn)行控制,其操作系統(tǒng)選用具有開(kāi)源、免費(fèi)、安全、穩(wěn)定、高性能等優(yōu)點(diǎn)的Linux系統(tǒng),應(yīng)開(kāi)發(fā)商要求本系統(tǒng)選用Linux-2.6.30穩(wěn)定版本。

        在整個(gè)系統(tǒng)中,驅(qū)動(dòng)程序主要工作為:消息隊(duì)列函數(shù)等待響應(yīng)中斷信號(hào),軟件觸發(fā)DMA中斷,數(shù)據(jù)進(jìn)行內(nèi)部映射,DMA方式獲取紅外圖像信號(hào)。驅(qū)動(dòng)程序主要處理過(guò)程為:

        1)初始化前端SRAM模塊,注冊(cè)設(shè)備號(hào),申請(qǐng)外部中斷和DMA中斷,申請(qǐng)兩個(gè)阻塞等待隊(duì)列;

        2)判斷FPGA模塊發(fā)出的中斷信號(hào),喚醒等待隊(duì)列1,并進(jìn)行中斷響應(yīng);

        3)通過(guò)片選nGCS1,將地址線、數(shù)據(jù)線獲取片外SRAM數(shù)據(jù);

        4)喚醒等待隊(duì)列2,響應(yīng)DMA中斷,通過(guò)DMA方式對(duì)數(shù)據(jù)進(jìn)行內(nèi)存映射;

        5)將SRAM的存儲(chǔ)空間映射到用戶(hù)進(jìn)程空間。

        驅(qū)動(dòng)設(shè)計(jì)的主要流程如圖3所示,驅(qū)動(dòng)程序主要分為下面幾個(gè)部分進(jìn)行介紹。

        圖3 ARM驅(qū)動(dòng)設(shè)計(jì)流程圖

        3.1 模塊初始化

        每個(gè)字符設(shè)備驅(qū)動(dòng)中都需要一個(gè)file_operations結(jié)構(gòu),便于內(nèi)核與驅(qū)動(dòng)程序的操作對(duì)應(yīng),file_operations結(jié)構(gòu)是定義在<Linux/fs.h>中的函數(shù)指針數(shù)組,結(jié)構(gòu)體中的每一個(gè)域?qū)?yīng)著驅(qū)動(dòng)內(nèi)核模塊用來(lái)處理某個(gè)被請(qǐng)求事件的函數(shù)首地址,在驅(qū)動(dòng)編寫(xiě)時(shí)均用dma作為函數(shù)名[6]。

        本次設(shè)計(jì)中SRAM驅(qū)動(dòng)模塊初始化定義如下:

        在該結(jié)構(gòu)體中,每個(gè)函數(shù)的參數(shù)都有1個(gè)指向特定file結(jié)構(gòu)的指針,第2個(gè)參數(shù)在驅(qū)動(dòng)程序中都有對(duì)應(yīng)的硬件操作程序,每個(gè)參數(shù)都有特定的功能。

        對(duì)驅(qū)動(dòng)程序的初始化是在dma_init()函數(shù)中完成的,其中包括設(shè)備號(hào)的申請(qǐng)、外部中斷的初始化、對(duì)外部地址映射空間的初始化等。

        3.2 驅(qū)動(dòng)設(shè)備號(hào)申請(qǐng)函數(shù)

        本文設(shè)計(jì)的驅(qū)動(dòng)函數(shù)采用動(dòng)態(tài)分配設(shè)備號(hào),調(diào)用函數(shù) alloc_chrdev_region(dev_t*dev,unsigned int-firstminor,unsigned int-count,char*name),其中 dev 為手動(dòng)給定的設(shè)備號(hào),count為所請(qǐng)求的連續(xù)設(shè)備號(hào)的個(gè)數(shù),而name為與該設(shè)備號(hào)范圍關(guān)聯(lián)的設(shè)備名稱(chēng),它將出現(xiàn)在/proc/devices和sysfs中。采用動(dòng)態(tài)申請(qǐng)可以避免手動(dòng)指定設(shè)備號(hào)帶來(lái)的缺點(diǎn),即:

        3.3 中斷申請(qǐng)初始化

        由于Linux內(nèi)核要與外部硬件設(shè)備進(jìn)行通信管理,但處理器的處理速度與外圍設(shè)備速度不處于一個(gè)等級(jí),不能采用浪費(fèi)處理器資源的輪詢(xún)方式進(jìn)行處理,因此驅(qū)動(dòng)程序中通過(guò)注冊(cè)中斷號(hào)并且激活一個(gè)中斷處理函數(shù)來(lái)對(duì)數(shù)據(jù)進(jìn)行處理。中斷注冊(cè)函數(shù)如下所示:

        request_irq(unsigned int irq,irq_handler_t handler,unsigned long flags,const char* name,void* dev)

        其中第1個(gè)參數(shù)irq表示分配的中斷號(hào),第2個(gè)參數(shù)handler是指向中斷處理函數(shù)的指針,中斷一旦來(lái)臨轉(zhuǎn)到處理中斷處理函數(shù),第3個(gè)參數(shù)flags指定了快速中斷或中斷共享等中斷處理屬性,第4個(gè)是設(shè)備驅(qū)動(dòng)程序的名稱(chēng),第5個(gè)是中斷名稱(chēng)。與之對(duì)應(yīng)的中斷注銷(xiāo)函數(shù)為free_irq(unsigned int irq,void*dev_id),一般在退出和出現(xiàn)特殊情況時(shí)調(diào)用。

        本系統(tǒng)選用的是外部中斷4(IRQ_EINT4)與DMA中斷,選用軟件觸發(fā)的DMA3通道(IRQ_DMA3)。具體程序代碼如下:

        s3c2410_gpio_cfgpin(S3C2410_GPF4,S3C2410_GPF4_EINT4);//定義I/O口為中斷

        set_irq_type(IRQ_EINT4,IRQF_TRIGGER_RISING);//設(shè)置中斷4觸發(fā)方式

        ret=request_irq(IRQ_EINT4,irq_int4_handler,IRQF_SHARED,"irq_int4",1);//中斷 4

        request_irq(IRQ_DMA3,dma_finish_handler,0,"dma_irq",NULL);//DMA3中斷

        3.4 等待隊(duì)列

        等待隊(duì)列屬于阻塞式的訪問(wèn)模式,阻塞方式是驅(qū)動(dòng)在對(duì)設(shè)備進(jìn)行操作時(shí),如果始終沒(méi)有獲取中斷信號(hào),進(jìn)程將會(huì)被掛起直到中斷信號(hào)來(lái)臨滿(mǎn)足條件后再進(jìn)行操作;非阻塞式是不對(duì)設(shè)備進(jìn)行操作時(shí),不斷地查詢(xún)或者放棄控制設(shè)備,這樣將大大降低系統(tǒng)性能。本驅(qū)動(dòng)選用阻塞式等待隊(duì)列,當(dāng)應(yīng)用程序?qū)υO(shè)備進(jìn)行讀操作時(shí),會(huì)調(diào)用一個(gè)程序,將系統(tǒng)的控制權(quán)交給內(nèi)核并進(jìn)入等待狀態(tài),當(dāng)系統(tǒng)執(zhí)行程序完畢后向應(yīng)用程序返回響應(yīng),得到響應(yīng)后系統(tǒng)將退出阻塞狀態(tài)繼續(xù)后面的工作。

        下面簡(jiǎn)要介紹等待隊(duì)列的基本操作。

        1)定義等待隊(duì)列頭并初始化

        DECLARE_WAIT_QUEUE_HEAD(dma_waitq);

        DECLARE_WAIT_QUEUE_HEAD(int4_comeq);

        系統(tǒng)主要是在等待兩個(gè)中斷時(shí)進(jìn)行阻塞,分別取名為 dma_waitq,int4_comeq。

        2)等待事件函數(shù)

        wait_event_interruptible(int4_comeq,int4_come==1);

        wait_event_interruptible(dma_waitq,dma_finish==1);

        首先wait_event_interruptible將當(dāng)前進(jìn)程的狀態(tài)設(shè)置為T(mén)ASK_INTERRUPTIBLE(可中斷的睡眠狀態(tài)),然后調(diào)用schedule()(進(jìn)程調(diào)度)函數(shù),schedule()會(huì)將位于TASK_INTERRUPTIBLE狀態(tài)的當(dāng)前進(jìn)程從運(yùn)行的等待隊(duì)列中刪除,當(dāng)前進(jìn)程不再參與調(diào)度,最后調(diào)用wake_up_interruptible()函數(shù)將當(dāng)前進(jìn)程重新放入到運(yùn)行的等待隊(duì)列中。

        3)響應(yīng)函數(shù)

        當(dāng)變量int4_come1和dma_finish1的值不等于1,進(jìn)程將自動(dòng)再次被設(shè)置為T(mén)ASK_INTERRUPTIBLE狀態(tài),然后執(zhí)行schedule()函數(shù),進(jìn)程將從正在運(yùn)行的隊(duì)列中刪除,這時(shí)就需要再次通過(guò)wake_up_interruptible()函數(shù)將當(dāng)前進(jìn)程重新放入到運(yùn)行的等待隊(duì)列中。兩個(gè)等待時(shí)間響應(yīng)節(jié)點(diǎn)函數(shù)設(shè)置在對(duì)設(shè)備的讀操作(read()函數(shù))中,只有當(dāng)變量int4_come1和dma_finish1的值等于1時(shí)才退出阻塞,進(jìn)行下面的動(dòng)作。設(shè)置滿(mǎn)足變量條件的函數(shù)即int4_come1=1;dma_finish1=1和wake_up_interruptible()在中斷響應(yīng)函數(shù)中實(shí)現(xiàn)。中斷響應(yīng)函數(shù)代碼如下:

        3.5 存儲(chǔ)器控制初始化

        S3C2440A存儲(chǔ)器控制器為訪問(wèn)外部存儲(chǔ)器提供控制信號(hào),控制器包括以下特性:支持軟件大/小端控制,共1 Gbyte的存儲(chǔ)空間分為8個(gè)Bank,每個(gè)Bank有128 Mbyte的空間,其中 Bank6~Bank7存儲(chǔ)器為 ROM,SRAM,SDRAM提供控制,Bank0~Bank5為ROM,SRAM提供控制。具有7個(gè)固定的Bank地址,1個(gè)可變的存儲(chǔ)器Bank地址,所有的存儲(chǔ)器訪問(wèn)周期都可以編程控制,并且支持SDRAM自刷新和掉電模式。S3C2440A內(nèi)部存儲(chǔ)空間地址分配如圖4所示。

        系統(tǒng)選用的SRAM芯片為IS61LV51216,芯片總線寬度為16位。該外部存儲(chǔ)器SRAM映射到Bank1上,物理地址0x08000000上,需要對(duì)控制寄存器進(jìn)行相應(yīng)的設(shè)置,首先是總線寬度和等待控制寄存器BWSCON,該寄存器的物理地址為0x48000000,只需對(duì)Bank1的控制位進(jìn)行相應(yīng)設(shè)置。SRAM不使用UB/LB,禁止WAIT狀態(tài),數(shù)據(jù)總線寬度根據(jù)芯片所知為16位,BWSCON中Bank1的控制信息詳見(jiàn)S3C2440A芯片手冊(cè)。

        圖4 S3C2440A內(nèi)部存儲(chǔ)空間地址分配

        由于采用的是 Bank1,對(duì) Bank1的控制寄存器(BANKCON1)進(jìn)行相應(yīng)設(shè)置。根據(jù)S3C2440A芯片手冊(cè),該寄存器物理地址為0x48000008,對(duì)寄存器每一位進(jìn)行相應(yīng)設(shè)置,根據(jù)圖5對(duì)SRAM控制時(shí)序?qū)拇嫫鬟M(jìn)行相應(yīng)配置。

        圖5 SRAM控制時(shí)序圖

        圖5中,Tacs為nGCS n前的地址建立時(shí)間選擇0個(gè)時(shí)鐘;Tcos為nOE前的片選建立時(shí)間選擇0個(gè)時(shí)鐘;Tacc為訪問(wèn)周期選擇14個(gè)時(shí)鐘;Tcoh為nOE后的片選保持時(shí)間選擇0個(gè)時(shí)鐘;Tcah為片選信號(hào)nGCS1后的地址保持時(shí)間選擇0個(gè)時(shí)鐘;Tacp為Page模式下的訪問(wèn)周期選擇0時(shí)鐘;PMC為Page模式配置選擇正常模式一個(gè)數(shù)據(jù)。這些參數(shù)都在BANKCON1寄存器中進(jìn)行配置。具體代碼如下:

        #define BWSCON 0x48000000

        #define BANKCON1 0X48000008

        rBWSCON=ioremap_nocache(BWSCON,4);

        r BANKCON1=ioremap_nocache(BANKCON1,4);

        3.2 量表信度 Cronbach′s α系數(shù) 它用于評(píng)價(jià)問(wèn)卷的內(nèi)部一致性,其取值范圍為0~1,取值越大,問(wèn)卷的內(nèi)部一致性越好。一般而言,系數(shù)為0.7以上表明問(wèn)卷的信度較好[12]。本研究顯示,中文版N-QOL兩個(gè)維度及總量表的Cronbach′s α系數(shù)分別為0.763、0.734、0.782,表明本量表具有較高的內(nèi)部一致性信度。2個(gè)維度與總量表的相關(guān)性分析結(jié)果提示,量表各維度與總量表的相關(guān)性均較好。

        *rBWSCON =(*rBWSCON&~(0xf<<4))|(2<<4);

        *rBANKCON1=*BANKCON1& ~(0x7f< <4)|(7< <8);

        3.6 DMA寄存器初始化

        S3C2440A支持處于系統(tǒng)總線和外設(shè)總線的4個(gè)DMA通道,DMA控制器的每個(gè)通道都可以無(wú)限制地執(zhí)行系統(tǒng)總線和外設(shè)總線之間設(shè)備的數(shù)據(jù)移動(dòng),每個(gè)DMA通道都可以執(zhí)行下面4種情況[7]:

        1)源地址和目標(biāo)地址都在系統(tǒng)總線上;

        2)源地址在系統(tǒng)總線上,目標(biāo)地址在外設(shè)總線上;

        3)源地址在外設(shè)總線上,目標(biāo)地址在系統(tǒng)總線上;

        4)源地址和目標(biāo)地址都在外設(shè)總線上。

        DMA可以在沒(méi)有CPU的干擾之下進(jìn)行數(shù)據(jù)傳輸,大大提高處理器的效率,DMA的運(yùn)行還可以由軟件進(jìn)行控制,也可以由來(lái)自?xún)?nèi)部或者外部的引腳請(qǐng)求進(jìn)行。本系統(tǒng)選用DMA3通道,采用軟件觸發(fā)的方式進(jìn)行,驅(qū)動(dòng)程序需要對(duì)DMA中的相關(guān)寄存器進(jìn)行配置。

        源地址控制寄存器DISRCC3,物理地址為0x4B0000C4,源地址在系統(tǒng)總線(AHB)上,每次進(jìn)行單次和突發(fā)模式傳輸后數(shù)據(jù)大小選擇增加。

        目的地址寄存器DIDST3,物理地址為0x4B0000C8,分配目的地址時(shí)要注意,由于采用DMA方式,內(nèi)存中獲取的目的虛擬地址數(shù)據(jù)與cache中數(shù)據(jù)不一致將會(huì)出現(xiàn)內(nèi)存錯(cuò)誤,所以在進(jìn)行地址申請(qǐng)時(shí)要禁止C(Cacheable)域,C域代表是否使用高速緩沖存儲(chǔ)器。也就是cache。所以在進(jìn)行目的地址申請(qǐng)時(shí)采用dma_alloc_writecombine()。

        目的地址控制寄存器 DIDSTC3,物理地址為0x4B0000CC,因?yàn)镾RAM也外設(shè)在系統(tǒng)總線上,所以與源地址控制寄存器配置相同。

        DMA控制寄存器DCON3,物理地址為0x4B0000D0,該寄存器有32位,配置非常重要,針對(duì)外接SRAM的特性,軟件觸發(fā)的方式。最后對(duì)DMA觸發(fā)屏蔽寄存器(DMASKTRIG3)進(jìn)行配置,主要設(shè)置為軟件觸發(fā)方式。如要詳細(xì)了解配置原因詳見(jiàn)芯片手冊(cè)。

        #define DMA3_REGS_BASE 0x4b0000c0

        struct dma_regs{

        volatile unsigned long disrc;

        volatile unsigned long disrcc;

        volatile unsigned long didst;

        volatile unsigned long didstc;

        volatile unsigned long dcon;

        volatile unsigned long dstat;

        volatile unsigned long dcsrc;

        volatile unsigned long dcdst;

        volatile unsigned long dmasktrig;

        };

        dma_regs=ioremap_nocache(DMA3_REGS_BASE,sizeof(struct dma_regs));

        dest=dma_alloc_writecombine(NULL,BUSIZE,&dest_phy,GFP_KERNEL);

        dma_finish=0;

        dma_regs->disrc=FPGA_DATA_BASE;

        dma_regs->disrcc=0;

        dma_regs->didst=dest_phy;

        dma_regs->didstc=0;

        //AHB|interrupt|burst|holemode|reload

        dma_regs->dcon=(1<<30)|(1<<29)|(1<<28)|(1<<27)|(1<<22)|(BUSIZE/4);

        dma_regs- >dmasktrig=(1<<1)|(1);

        4 應(yīng)用程序設(shè)計(jì)

        系統(tǒng)對(duì)實(shí)時(shí)性要求較高,以突出高性能為主,因此應(yīng)用程序規(guī)模較小,在設(shè)計(jì)時(shí)采用面向過(guò)程的開(kāi)發(fā)方式。本系統(tǒng)的主要開(kāi)發(fā)流程如圖6所示。

        圖6 應(yīng)用程序流程

        本系統(tǒng)的主要應(yīng)用程序較簡(jiǎn)單,主要是將圖像數(shù)據(jù)上傳到PC機(jī),本系統(tǒng)選用UDP的方式進(jìn)行數(shù)據(jù)傳輸。

        上傳數(shù)據(jù)包括兩個(gè)部分,一個(gè)是圖像數(shù)據(jù),另一個(gè)是傳感器信息。由于傳輸數(shù)據(jù)中包括了實(shí)時(shí)媒體流數(shù)據(jù),因此該網(wǎng)絡(luò)傳輸協(xié)議采用了RTP/RTCP實(shí)時(shí)傳輸協(xié)議和實(shí)時(shí)傳輸控制協(xié)議。傳輸數(shù)據(jù)包括標(biāo)簽數(shù)據(jù)和視頻壓縮數(shù)據(jù),進(jìn)行分時(shí)傳輸,但由于標(biāo)簽數(shù)據(jù)重要性高,因此具有更高的優(yōu)先級(jí),即保證一個(gè)傳輸周期內(nèi)標(biāo)簽數(shù)據(jù)可靠傳輸完成后,再進(jìn)行視頻數(shù)據(jù)流的傳輸。

        RTP/RTCP下層使用的網(wǎng)絡(luò)層協(xié)議為UDP,因?yàn)镽TP/RTC協(xié)議已經(jīng)完成了差錯(cuò)控制和擁塞控制等傳輸控制,不需要使用復(fù)雜的TCP協(xié)議來(lái)實(shí)現(xiàn),而是選擇簡(jiǎn)單的UDP 協(xié)議[7]。

        數(shù)據(jù)按照RTP格式封裝完成后,使用UDP協(xié)議通信,UDP不要求保持一個(gè)連接,沒(méi)有因接收方認(rèn)可收到數(shù)據(jù)包而帶來(lái)的開(kāi)銷(xiāo),需要的網(wǎng)絡(luò)帶寬比TCP更小。UDP通信的程序設(shè)計(jì)流程圖如圖7所示。

        圖7 網(wǎng)口數(shù)據(jù)傳輸協(xié)議

        5 實(shí)驗(yàn)結(jié)果分析

        對(duì)采集的原始圖像,在FPGA做相應(yīng)的盲元補(bǔ)償、濾波、非均勻校正等算法處理。通過(guò)實(shí)驗(yàn)室中黑體映射進(jìn)行溫度標(biāo)定,建立溫度與灰度的映射表,ARM系統(tǒng)中采用DMA方式對(duì)圖像進(jìn)行傳輸存取,每幀圖像分辨率為384×288,每點(diǎn)的圖像數(shù)據(jù)位16 bit,在進(jìn)行圖像顯示時(shí)只需選取高8位輪廓進(jìn)行顯示就能達(dá)到要求,經(jīng)測(cè)試傳輸速度為15 f/s(幀/秒),網(wǎng)口模塊需要在系統(tǒng)中達(dá)到20 Mbit/s的帶寬,經(jīng)過(guò)測(cè)試本系統(tǒng)網(wǎng)口模塊能達(dá)到傳輸要求。最后PC機(jī)對(duì)上傳的灰度數(shù)據(jù)經(jīng)過(guò)編碼顯示。系統(tǒng)實(shí)物圖和PC機(jī)接收到烙鐵紅外圖像如圖8所示。測(cè)試表明本文設(shè)計(jì)的各組模塊均能達(dá)到紅外監(jiān)控系統(tǒng)的要求。

        6 總結(jié)

        本文設(shè)計(jì)出基于ARM和FPGA紅外系統(tǒng)數(shù)據(jù)交換驅(qū)動(dòng)程序,詳細(xì)介紹驅(qū)動(dòng)設(shè)計(jì)的流程,在傳統(tǒng)數(shù)據(jù)的內(nèi)存映射傳輸方式上,提出軟件觸發(fā)DMA方式實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的搬移,極大提高了系統(tǒng)傳輸效率。

        圖8 系統(tǒng)實(shí)物圖和PC機(jī)接受到烙鐵紅外圖像

        [1]周慶福,楊永軍,呂國(guó)義.紅外輻射測(cè)溫儀及校準(zhǔn)方法探討[J].計(jì)測(cè)技術(shù),2008,28(1):33-35.

        [2]王劍飛.基于FPGA和DSP的多路信號(hào)采集系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2013,37(23):57-60.

        [3]宋玲,裴志強(qiáng),劉寶娟.Actel FPGA芯片APA150研究與應(yīng)用[J].微處理機(jī),2008(3):22-23.

        [4]許川佩,孫義軍,吳玉龍.基于ARM和FPGANoC資源網(wǎng)絡(luò)接口驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2013,32(13):83-86.

        [5]吳華,謝禮瑩,徐澤宇.基于 ARM9的紅外熱像儀設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(16):234-236.

        [6]楊柱,劉健.先入先出數(shù)據(jù)緩存的方法及全滿(mǎn)空間訪問(wèn)先入先出存儲(chǔ)器,中國(guó):CN200510083155.7[P].2006-02-08.

        [7]屈曉平,劉濤.嵌入式Linux操作系統(tǒng)設(shè)備驅(qū)動(dòng)程序程序設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算技術(shù)與自動(dòng)化,2008(10):45-46.

        [8]姚錫忠.基于S3C2440的FlexRay總線設(shè)計(jì)[J].淮海工學(xué)院學(xué)報(bào):自然科學(xué)版,2010,19(3):25-27.

        猜你喜歡
        系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開(kāi)發(fā)
        半沸制皂系統(tǒng)(下)
        FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        一德系統(tǒng) 德行天下
        PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
        日韩女同精品av在线观看| 伊人久久综在合线亚洲不卡| 国产性一交一乱一伦一色一情| 国产av三级精品车模| 偷拍一区二区视频播放器| 国产av永久无码天堂影院| 国产精品自在线免费| 国产内射视频在线观看| 极品粉嫩小仙女高潮喷水操av| 日韩精品久久久久久久电影蜜臀| 7777精品久久久大香线蕉| 亚洲AV手机专区久久精品| 美女被黑人巨大入侵的的视频 | AV无码系列一区二区三区| 日本乱熟人妻中文字幕乱码69| 亚洲精品无码av人在线观看| 久久精品国产亚洲av忘忧草18| 国产精品18久久久久久首页| 亚洲av熟女传媒国产一区二区| 欧美成人看片一区二区三区尤物| 99精品视频在线观看| 一区二区三区四区亚洲综合| 开心五月激情五月五月天| a级毛片免费完整视频| 国产成人免费a在线视频| 人妻系列少妇极品熟妇| 欧美xxxxx在线观看| 国产高潮国产高潮久久久| 亚洲AV手机专区久久精品| 久久蜜桃资源一区二区| 色avav色av爱avav亚洲色拍| 国产婷婷丁香五月麻豆| 亚洲五月天中文字幕第一页| 国产区精品一区二区不卡中文| 国产av无码专区亚洲av| 国产一区二区三区视频免费在线| 亚洲第一幕一区二区三区在线观看| 亚洲国产成人无码av在线影院| 亚洲日韩精品久久久久久| 国产黄色一区二区三区av| 娜娜麻豆国产电影|