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

        ?

        基于ARM+FPGA的影像交互與顯示系統(tǒng)設(shè)計(jì)

        2015-10-22 08:03:56李丙玉王曉東
        液晶與顯示 2015年6期
        關(guān)鍵詞:界面設(shè)備系統(tǒng)

        吳 迪,李丙玉,王曉東

        (中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,吉林長(zhǎng)春130033)

        基于ARM+FPGA的影像交互與顯示系統(tǒng)設(shè)計(jì)

        吳 迪?,李丙玉,王曉東

        (中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,吉林長(zhǎng)春130033)

        為促進(jìn)航空測(cè)繪信息獲取的數(shù)字化、一體化、實(shí)時(shí)化,本文利用FPGA(Field-Programmable Gate Array,即現(xiàn)場(chǎng)可編程門(mén)陣列)并行處理的優(yōu)勢(shì)結(jié)合ARM處理器低功耗高性能的特點(diǎn),基于ARM+FPGA的雙核硬件架構(gòu)實(shí)現(xiàn)了影像的交互與顯示.該系統(tǒng)以Linux操作系統(tǒng)為軟件開(kāi)發(fā)平臺(tái),以ARM11嵌入式處理器為硬件核心、FPGA作為協(xié)處理器,采用FPGA片內(nèi)FIFO(First Input First Output,即先進(jìn)先出存儲(chǔ)器)作為ARM處理器與FPGA之間的高速通信橋梁,針對(duì)Linux 2.6.36內(nèi)核完成了對(duì)FPGA設(shè)備的驅(qū)動(dòng)設(shè)計(jì),并基于Qt圖形用戶(hù)界面實(shí)現(xiàn)了影像的實(shí)時(shí)顯示.測(cè)試結(jié)果表明,ARM處理器與FPGA之間能夠?qū)崿F(xiàn)VGA(640×480)圖像的高速交互,幀率可達(dá)26幀/s,最大傳輸帶寬為182 Mbps.該系統(tǒng)不僅體積小、功耗低、成本低,而且穩(wěn)定性好、功能強(qiáng),能夠滿(mǎn)足航空遙感攝影系統(tǒng)的實(shí)時(shí)性要求.

        ARM;嵌入式Linux;FPGA;設(shè)備驅(qū)動(dòng);影像顯示

        1 引 言

        目前,隨著嵌入式技術(shù)與數(shù)字技術(shù)的高速發(fā)展,ARM+FPGA雙核硬件架構(gòu)倍受青睞,該架構(gòu)不僅功能分明而且結(jié)構(gòu)緊湊.結(jié)合ARMLinux和FPGA各自特點(diǎn)的系統(tǒng)在數(shù)字系統(tǒng)設(shè)計(jì)中得到了廣泛應(yīng)用.

        FPGA能夠?qū)崿F(xiàn)復(fù)雜的高速邏輯.它克服了定制電路的不足,可以在不更改外圍電路的情況下,通過(guò)對(duì)FPGA的軟件編程實(shí)現(xiàn)特定的系統(tǒng)功能.但FPGA在分析控制及驅(qū)動(dòng)等方面較為薄弱. ARM處理器彌補(bǔ)了FPGA的上述不足,它是目前嵌入式領(lǐng)域使用最廣泛的處理器,具有專(zhuān)用性強(qiáng)、功耗低等優(yōu)勢(shì),且嵌入式Linux操作系統(tǒng)具有開(kāi)放源代碼、穩(wěn)定性強(qiáng)、可裁剪等優(yōu)點(diǎn),能夠完成對(duì)大規(guī)模復(fù)雜程序的分配調(diào)度和協(xié)調(diào)控制.

        該架構(gòu)中FPGA主要負(fù)責(zé)高速數(shù)據(jù)處理,ARM處理器負(fù)責(zé)實(shí)現(xiàn)人機(jī)交互、界面顯示及外部通信功能[1].傳統(tǒng)的I2C、SPI等串行總線通信僅能實(shí)現(xiàn)ARM與FPGA之間的低速通信,本系統(tǒng)采用FPGA片內(nèi)FIFO實(shí)現(xiàn)二者之間的高速數(shù)據(jù)通信,且Linux 2.6.36版本內(nèi)核在內(nèi)存管理和設(shè)備驅(qū)動(dòng)方面表現(xiàn)得十分出色.本文基于ARMLinux軟硬件架構(gòu)完成了與FPGA數(shù)據(jù)通信的接口設(shè)計(jì)與驅(qū)動(dòng)設(shè)計(jì),并采用Qt GUI設(shè)計(jì)了人機(jī)交互圖形界面,最終實(shí)現(xiàn)高速影像信息的實(shí)時(shí)顯示.

        2 系統(tǒng)硬件架構(gòu)

        2.1ARM+FPGA雙核架構(gòu)

        系統(tǒng)以ARM11處理器S3C6410為硬件核心,負(fù)責(zé)影像的交互與顯示.采用DDR RAM和NAND Flash作為系統(tǒng)存儲(chǔ)器、SD卡存儲(chǔ)圖像文件,1.2 V外部電源供電,最大主頻667 MHz,且內(nèi)置圖像加速器并擴(kuò)展了SIDI功能,能夠滿(mǎn)足較高圖像處理性能的要求,4.3 in LCD液晶屏用以顯示實(shí)時(shí)影像,并配備了方便人機(jī)交互的觸摸屏.

        FPGA采用Altera公司的Cyclone IV系列的EP4CE40F23C8芯片.它采用FBGA封裝,具有484個(gè)引腳、39 600個(gè)LEs(Logic Elements,邏輯單元)、126個(gè)18×18乘法器、總RAM位數(shù)1 161 216 bits、329個(gè)用戶(hù)I/O,是一款高性能、低功耗、低成本的現(xiàn)場(chǎng)可編程門(mén)陣列,能夠滿(mǎn)足本系統(tǒng)對(duì)影像處理的要求[2].

        嵌入式ARM處理器接收FPGA從Camera Link接口獲取并處理的影像,并將該影像實(shí)時(shí)顯示在LCD液晶屏上.系統(tǒng)硬件架構(gòu)如圖1所示.

        圖1 系統(tǒng)硬件架構(gòu)圖Fig.1 Structure diagram of the system hardware

        2.2ARM與FPGA接口設(shè)計(jì)

        ARM處理器與FPGA之間的數(shù)據(jù)通信主要采用串行傳輸和并行傳輸兩種方式.采用I2C接口或者SPI接口的串行通信方式傳輸速度較慢;而并行方式通過(guò)總線連接,在ARM端口配置地址總線、數(shù)據(jù)總線和控制總線,并和FPGA相應(yīng)的信號(hào)相連,這種傳輸方式具有速度快且傳輸穩(wěn)定的優(yōu)勢(shì).本系統(tǒng)采用總線方式連接EP4CE40F23C8和S3C6410,二者的硬件連接圖如圖2所示.

        圖2 ARM與FPGA硬件連接圖Fig.2 Diagram of ARM and FPGA hardware connection

        在圖2中,EP4CE40F23C8作為外部存儲(chǔ)器掛載在S3C6410的存儲(chǔ)器總線上.將S3C6410的數(shù)據(jù)總線LDATA[7∶0]連接到FPGA片內(nèi)FIFO,F(xiàn)IFO常用作數(shù)據(jù)緩存,和RAM不同的是,F(xiàn)IFO不需要關(guān)心讀寫(xiě)地址,從而簡(jiǎn)化操作.此外,還需將S3C6410的地址總線、片選信號(hào)線、讀/寫(xiě)使能信號(hào)線及時(shí)鐘信號(hào)線分別與EP4CE40F23C8的相應(yīng)引腳相連.

        3 Linux系統(tǒng)下的FPGA驅(qū)動(dòng)設(shè)計(jì)

        由于Linux內(nèi)核中并沒(méi)有FPGA片內(nèi)FIFO的設(shè)備驅(qū)動(dòng),因此,為實(shí)現(xiàn)ARM處理器與FPGA之間的數(shù)據(jù)通信,須在Linux系統(tǒng)下完成對(duì)FPGA片內(nèi)FIFO的驅(qū)動(dòng)開(kāi)發(fā).

        Linux設(shè)備驅(qū)動(dòng)程序是連接底層設(shè)備和上層應(yīng)用程序的紐帶.Linux系統(tǒng)將設(shè)備以設(shè)備文件的形式掛載在根文件系統(tǒng)的/dev目錄下,系統(tǒng)對(duì)設(shè)備的操作可簡(jiǎn)化成對(duì)設(shè)備文件的操作,如打開(kāi)open()、關(guān)閉close()、讀read()和寫(xiě)write()等[3].驅(qū)動(dòng)設(shè)計(jì)的層次結(jié)構(gòu)圖如圖3所示.

        圖3 驅(qū)動(dòng)設(shè)計(jì)的層次結(jié)構(gòu)圖Fig.3 Diagram of the driver hierarchy

        Linux系統(tǒng)具有以下3種設(shè)備:包括字符設(shè)備、塊設(shè)備及網(wǎng)絡(luò)設(shè)備[4].Linux把FPGA的片內(nèi)FIFO視為特殊的字符型設(shè)備,即雜項(xiàng)設(shè)備.由于硬件連接上將FPGA掛載在S3C6410的存儲(chǔ)器總線上,用戶(hù)空間通過(guò)內(nèi)存映射方式實(shí)現(xiàn)對(duì)FPGA的訪問(wèn).因此,上層應(yīng)用程序可以直接訪問(wèn)設(shè)備內(nèi)存,從而大大提高數(shù)據(jù)傳輸速度.

        本文在Linux系統(tǒng)下實(shí)現(xiàn)了FPGA的設(shè)備驅(qū)動(dòng),總結(jié)得到以下步驟:

        (1)編寫(xiě)設(shè)備驅(qū)動(dòng)程序,并添加到內(nèi)核源碼目錄;

        (2)在Kconfig文件中添加上述設(shè)備驅(qū)動(dòng)程序所對(duì)應(yīng)的編譯配置選項(xiàng);

        (3)通過(guò)內(nèi)核配置工具menuconfig,將該硬件配置編譯為模塊;

        (4)把內(nèi)核配置選項(xiàng)和真正的硬件驅(qū)動(dòng)聯(lián)系起來(lái),在Makefile文件中添加相應(yīng)的編譯條目;

        (5)執(zhí)行#make modules編譯生成動(dòng)態(tài)加載模塊;

        (6)將編譯好的驅(qū)動(dòng)模塊下載到目標(biāo)機(jī),執(zhí)行命令#insmod mini6410_fpga.ko動(dòng)態(tài)加載驅(qū)動(dòng)模塊;

        (7)交叉編譯測(cè)試程序,驗(yàn)證驅(qū)動(dòng)設(shè)計(jì)是否成功.

        3.1文件操作接口

        Linux系統(tǒng)開(kāi)機(jī)啟動(dòng)后FPGA設(shè)備驅(qū)動(dòng)的加載流程如圖4所示.

        圖4 FPGA驅(qū)動(dòng)加載流程圖Fig.4 Flowchart of FPGA driver loading

        首先,定義file_operations類(lèi)型的結(jié)構(gòu)體變量fpga_fops用于存儲(chǔ)內(nèi)核驅(qū)動(dòng)模塊對(duì)設(shè)備操作的函數(shù)指針,包括open、release、read、write以及ioctl,分別對(duì)應(yīng)用戶(hù)空間的接口函數(shù)[5].

        然后,定義雜項(xiàng)設(shè)備(即主設(shè)備號(hào)為10的特殊字符型設(shè)備)結(jié)構(gòu)體變量fpga_misc,

        其中主要包括3個(gè)域:分別是次設(shè)備號(hào)、設(shè)備名稱(chēng)與file_operations類(lèi)型結(jié)構(gòu)體變量的引用,為增加程序的可讀性和可移植性,這里將設(shè)備名定義為宏:#define DEVICE_NAME“fpga”.

        3.2設(shè)備驅(qū)動(dòng)的初始化

        設(shè)備驅(qū)動(dòng)的初始化包括三部分:S3C6410外部存儲(chǔ)器硬件寄存器的初始化、將設(shè)備由物理空間映射到Linux內(nèi)核虛擬空間及向內(nèi)核注冊(cè)雜項(xiàng)設(shè)備.

        3.2.1硬件寄存器初始化

        由于EP4CE40F23C8芯片被當(dāng)作外部存儲(chǔ)器連接在S3C6410的存儲(chǔ)器總線上,對(duì)硬件寄存器的初始化可以通過(guò)對(duì)SROM_BW總線寬度等待控制寄存器進(jìn)行配置實(shí)現(xiàn).Linux系統(tǒng)必須先調(diào)用ioremap()函數(shù)將物理地址映射到虛擬地址空間,該函數(shù)原型為:void?ioremap(unsigned long phys_addr,unsigned long size)[6];

        其中,phys_addr為要映射的外設(shè)I/O起始物理地址;size表示要映射的空間大小,其返回值為對(duì)應(yīng)的內(nèi)核虛擬地址.這里調(diào)用如下代碼實(shí)現(xiàn)地址映射:memcfg_addr_vir=ioremap(0x7000000 0,0x20);其中,0x70000000是SROM_BW總線寬度等待控制寄存器的物理地址,返回值memcfg_ addr_vir是它在Linux內(nèi)核空間對(duì)應(yīng)的虛擬地址.

        將SROM_BW的8~11位(對(duì)應(yīng)BANK2)設(shè)置為0101,表示不使用BU/LB,WAIT信號(hào)使能,并將BANK2的數(shù)據(jù)總線寬度設(shè)置為16位[7]. 3.2.2 將設(shè)備由物理空間映射到內(nèi)核虛擬空間

        由于ARM處理器并沒(méi)有為已知外設(shè)I/O內(nèi)存資源的物理地址預(yù)定義虛擬地址,因此,驅(qū)動(dòng)程序并不能直接通過(guò)物理地址訪問(wèn)I/O內(nèi)存資源,而必須將它們映射到內(nèi)核虛擬空間.

        FPGA的I/O內(nèi)存資源的物理地址由硬件決定.本架構(gòu)選擇S3C6410的nCS2(即BANK2),起始地址為0x20000000.這里將FPGA映射到linux內(nèi)核的虛擬地址定義為fpga_addr_vir,然后調(diào)用ioremap()將SROMC BANK2的地址映射到Linux內(nèi)核,映射空間大小為128M,代碼如下:fpga_addr_vir=ioremap(0x20000000,0x07FFFFFF);

        3.2.3向內(nèi)核注冊(cè)雜項(xiàng)設(shè)備

        在模塊加載函數(shù)module_init()中通過(guò)調(diào)用misc_resigter()實(shí)現(xiàn)向Linux內(nèi)核注冊(cè)該雜項(xiàng)設(shè)備.

        因此,在使用insmod模塊加載命令時(shí),即可自動(dòng)地調(diào)用該函數(shù),完成該設(shè)備向內(nèi)核的注冊(cè).

        3.3設(shè)備的讀寫(xiě)

        在設(shè)備讀/寫(xiě)函數(shù)中,通過(guò)系統(tǒng)內(nèi)核函數(shù)copy_to_user()和copy_from_user()分別實(shí)現(xiàn)從內(nèi)核空間到用戶(hù)空間和從用戶(hù)空間到內(nèi)核空間的數(shù)據(jù)拷貝功能.

        3.3.1從FPGA FIFO中讀取數(shù)據(jù)

        在讀函數(shù)fpga_read(struct file?filp,char_ user?buf,size_t size,loff_t?ppos)中,首先調(diào)用ioread16()函數(shù)將數(shù)據(jù)從FPGA中讀出,代碼如下:

        其中fpga_addr_vir為FPGA的虛擬地址,fpga_buf為unsigned int指針類(lèi)型,將其轉(zhuǎn)換成char類(lèi)型指針后,調(diào)用copy_to_user()將從FPGA中讀取的數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間,主要代碼如下:

        3.3.2向FPGA FIFO中寫(xiě)數(shù)據(jù)

        在fpga_write(struct file?filp,const char__ user?buf,size_t size,loff_t?ppos)函數(shù)中,首先,調(diào)用copy_from_user()函數(shù)將數(shù)據(jù)從用戶(hù)空間拷貝到內(nèi)核空間中,這里char類(lèi)型指針變量temp指向內(nèi)核空間;然后,將該緩沖區(qū)中的數(shù)據(jù)復(fù)制到fpga_buf緩沖區(qū),并調(diào)用iowrite16()將其寫(xiě)入到FPGA的FIFO中,主要代碼如下:

        3.3.3讀寫(xiě)進(jìn)程互斥功能的實(shí)現(xiàn)

        多個(gè)進(jìn)程同時(shí)對(duì)FPGA進(jìn)行讀寫(xiě)操作時(shí),會(huì)造成FPGA FIFO中數(shù)據(jù)的不確定性.因此,在驅(qū)動(dòng)程序的FPGA讀寫(xiě)函數(shù)中,采用信號(hào)量實(shí)現(xiàn)讀/寫(xiě)進(jìn)程的互斥,從而保證同一時(shí)間內(nèi)只有一個(gè)進(jìn)程對(duì)FPGA FIFO進(jìn)行讀或?qū)懖僮鳎?].

        首先,在驅(qū)動(dòng)程序中定義一個(gè)信號(hào)量struct semaphore sem;然后,在設(shè)備驅(qū)動(dòng)初始化函數(shù)中調(diào)用sema_init(&sem,1)將該信號(hào)量初始化為1;在執(zhí)行讀/寫(xiě)功能前要先獲取信號(hào)量,再調(diào)用函數(shù)down_interruptible(&sem);最后,讀/寫(xiě)操作完成,調(diào)用up(&sem)釋放信號(hào)量,告知Linux操作系統(tǒng)的其他進(jìn)程使用FPGA的FIFO.

        3.4驅(qū)動(dòng)配置與移植

        首先,將編寫(xiě)好的驅(qū)動(dòng)程序復(fù)制到內(nèi)核源碼/ home/linux-2.6.36/drivers/char/目錄下,并修改Kconfig文件,添加FPGA驅(qū)動(dòng)的編譯配置選項(xiàng):

        其次,進(jìn)入圖形化的內(nèi)核配置界面,在Device Drivers→Character devices頁(yè)面下選中Kconfig文件所添加的模塊.FPGA驅(qū)動(dòng)配置如圖5所示.

        圖5 FPGA驅(qū)動(dòng)配置圖Fig.5 Diagram of FPGA driver configuration

        再次,在Makefile中添加如下語(yǔ)句,把內(nèi)核配置選項(xiàng)和真正的FPGA驅(qū)動(dòng)源代碼聯(lián)系起來(lái): obj-$(CONFIG_MINI6410_FPGA)+=mini6410_fpga.o,并執(zhí)行#make modules命令編譯得到mini6410_fpga.ko動(dòng)態(tài)加載模塊.

        最后,將編譯好的動(dòng)態(tài)模塊復(fù)制到ARM板根文件系統(tǒng)/lib/modules/2.6.36目錄下,并執(zhí)行#insmod mini6410_fpga.ko命令完成模塊的動(dòng)態(tài)加載,在/dev目錄下可以看到該設(shè)備文件的掛載點(diǎn),如圖6所示.

        圖6 FPGA設(shè)備掛載點(diǎn)Fig.6 Diagram of FPGA device node

        3.5驅(qū)動(dòng)測(cè)試

        執(zhí)行#modinfo命令查看kernel模塊信息,包括模塊開(kāi)發(fā)者、許可證及內(nèi)核版本信息,如圖7所示.

        圖7 FPGA設(shè)備驅(qū)動(dòng)信息圖Fig.7 Diagram of FPGA device driver information

        圖8 設(shè)備驅(qū)動(dòng)測(cè)試圖Fig.8 Diagram of device driver testing

        向內(nèi)核加載FPGA設(shè)備驅(qū)動(dòng)模塊成功后,執(zhí)行設(shè)備驅(qū)動(dòng)測(cè)試程序,圖8(a)實(shí)現(xiàn)了ARM處理器向FPGA FIFO中連續(xù)寫(xiě)入從鍵盤(pán)輸入的數(shù)據(jù),圖8(b)實(shí)現(xiàn)了ARM處理器從FPGA FIFO中讀取寫(xiě)入數(shù)據(jù)的操作.結(jié)果表明,S3C6410能夠?qū)崿F(xiàn)對(duì)FPGA FIFO的正確讀寫(xiě),保證了數(shù)據(jù)交互的正確性與穩(wěn)定性.

        4 Qt GUI圖形界面設(shè)計(jì)

        系統(tǒng)將處理后的圖像數(shù)據(jù)寫(xiě)入FPFA片內(nèi)FIFO,然后ARM處理器讀取該圖像數(shù)據(jù),并基于Qt GUI設(shè)計(jì)了人機(jī)交互界面,實(shí)現(xiàn)影像數(shù)據(jù)在LCD液晶屏上的實(shí)時(shí)顯示.

        Qt GUI圖形界面的設(shè)計(jì)步驟如圖9所示.

        圖9 圖形界面的設(shè)計(jì)步驟Fig.9 Design steps of the graphical interface

        本設(shè)計(jì)的人機(jī)交互界面包括終端登錄界面和影像顯示界面兩部分,主要使用了Qt API的QLabel類(lèi)、QPixmap類(lèi)以及QPushButton類(lèi),并為終端添加了開(kāi)機(jī)啟動(dòng)界面.程序設(shè)計(jì)完成后,將編譯好的Qt程序下載到ARM板,并將執(zhí)行該程序的SHELL命令寫(xiě)入開(kāi)機(jī)啟動(dòng)腳本中,從而實(shí)現(xiàn)終端的開(kāi)機(jī)自啟動(dòng)功能,登錄界面如圖10所示.

        圖10 終端登錄界面Fig.10 Terminal login interface

        終端登錄界面類(lèi)被定義為L(zhǎng)og.在該界面的設(shè)計(jì)中,將圖10中“Welcome Log in”對(duì)應(yīng)的按鈕QPushButton?logbut的SIGNAL(clicked())信號(hào)與槽函數(shù)SLOT(test())相關(guān)聯(lián),并在槽函數(shù)test()中執(zhí)行當(dāng)前對(duì)象的隱藏函數(shù)hide()和影像顯示界面的顯示函數(shù)show(),即實(shí)現(xiàn)了從登陸界面到影像顯示界面的切換,主要代碼如下:

        影像顯示界面類(lèi)被定義為Img.為實(shí)現(xiàn)系統(tǒng)實(shí)時(shí)獲取測(cè)繪信息的后續(xù)查看功能,ARM處理器將接收的影像保存為適合QLabel類(lèi)加載的.bmp格式文件,將該文件重命名為當(dāng)前系統(tǒng)時(shí)間,并保存在SD Card中.因而后續(xù)查看時(shí)不僅可以獲得圖像信息還可以獲取記錄該影像的時(shí)間信息.在該界面的設(shè)計(jì)中,ARM處理器將從FPGA接收到的影像數(shù)據(jù)加載在QLabel上,并采用定時(shí)器事件不斷刷新加載到QLabel上的影像數(shù)據(jù),從而實(shí)現(xiàn)基于Qt GUI的影像顯示.由于人眼視覺(jué)暫留特性,當(dāng)連續(xù)的圖像以大于25幀/s的速率顯示時(shí),即可達(dá)到人眼對(duì)平滑流暢視覺(jué)效果的要求[9].影像顯示界面的實(shí)現(xiàn)流程如圖11所示.

        該界面實(shí)現(xiàn)的具體步驟如下:

        首先,在頭文件中定義影像顯示界面類(lèi)Img成員變量,如下:

        QPushButton?recvbutton;//接收按鈕

        QPush Button?stopbutton;//停止顯示按鈕

        QLabel?label;//用于加載實(shí)時(shí)影像

        QPixmap pm;

        然后,在影像顯示子界面類(lèi)Img實(shí)現(xiàn)源文件中將接收按鈕recvbutton的SIGNAL(clicked())信號(hào)和槽函數(shù)SLOT(mytimer())相關(guān)聯(lián),代碼

        圖11 影像顯示界面的實(shí)現(xiàn)流程圖Fig.11 Flowchart of image display interface

        如下:

        在槽函數(shù)mytimer()中調(diào)用start Timer()函數(shù)來(lái)開(kāi)啟定時(shí)器,并設(shè)定定時(shí)器定時(shí)間隔為30 ms.start Timer()函數(shù)將返回一個(gè)int類(lèi)型的定時(shí)器ID,即全局變量int my TimerId,代碼如下:

        當(dāng)定時(shí)時(shí)間達(dá)到30 ms時(shí),全局變量my Timer Id和QTimer Event?event->timer Id()相等,即觸發(fā)定時(shí)器事件的發(fā)生.在Img類(lèi)的timer Event()槽函數(shù)中,首先調(diào)用QPixmap->load()加載圖像,然后調(diào)用QLabel->setPixmap()選擇一個(gè)QPixmap類(lèi)對(duì)象顯示,實(shí)現(xiàn)代碼如下:

        在stopbutton停止顯示按鈕的槽函數(shù)stop Event()中調(diào)用kill Timer()函數(shù)停止定時(shí)器,并將全局變量my TimerId設(shè)置為0,因此定時(shí)器事件將不再被觸發(fā),此后停止刷新加載在label上的影像,將控制權(quán)交給Qt.影像顯示界面如圖12所示.

        圖12 影像顯示界面Fig.12 Image display interface

        5 結(jié) 論

        為實(shí)現(xiàn)航空測(cè)繪信息獲取的數(shù)字化、實(shí)時(shí)化,本文結(jié)合嵌入式處理器S3C6410與FPGA的各自?xún)?yōu)勢(shì),提出了一種基于ARM+FPGA雙核硬件架構(gòu)的高速影像交互與顯示系統(tǒng)的解決方案[10].該系統(tǒng)采用并行總線方式實(shí)現(xiàn)ARM與FPGA之間的高速數(shù)據(jù)通信,利用Linux 2.6.36內(nèi)核完成了對(duì)FPGA設(shè)備的驅(qū)動(dòng)設(shè)計(jì),實(shí)現(xiàn)了高速影像數(shù)據(jù)交互;并在ARM-Linux平臺(tái)上設(shè)計(jì)了基于Qt的人機(jī)交互界面,用以實(shí)現(xiàn)高速影像的實(shí)時(shí)顯示.測(cè)試結(jié)果表明,該系統(tǒng)實(shí)現(xiàn)了VGA(640×480)格式的高速影像交互,幀率最大可達(dá)26幀/s,傳輸帶寬最大為182 Mbps.該系統(tǒng)不僅體積小、功耗低、成本低,而且結(jié)構(gòu)緊湊、專(zhuān)用性強(qiáng)、穩(wěn)定性好、性能佳,能夠滿(mǎn)足測(cè)繪信息獲取的實(shí)時(shí)性要求.

        [1] 徐正平,許永森.S3C2440A在步進(jìn)電機(jī)控制器人機(jī)交互中的應(yīng)用[J].液晶與顯示,2015,30(1):70-76.

        Xu Z P,Xu Y S.Application of S3C2440A in human-computer interaction of stepping motor controller[J].Chinese Journal of Liquid Crystals and Display,2015,30(1):70-76.(in Chinese)

        [2] 宋亞軍,許廷發(fā),倪國(guó)強(qiáng),等.基于Virtex-4 FPGA的低功耗圖像融合系統(tǒng)[J].光學(xué)精密工程,2007,15(6):935-940.

        Song Y J,Xu T F,Ni G Q,et al.Low power image fusion system based on Virtex-4 FPGA[J].Opt.Precision Eng.,2007,15(6):935-940.(in Chinese)

        [3] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2008.

        Song B H.Details for Embedded Linux Device Drivers Development[M].Beijing:The People's Posts and Telecommunications Press,2008.(in Chinese)

        [4] 王亞庭.基于ARM與FPGA的高速數(shù)據(jù)采集技術(shù)研究[D].北京:北京交通大學(xué),2007.

        Wang Y T.Research on High speed data acquisition technology based on ARM&FPGA[D].Beijing:Beijing Jiaotong University,2007.(in Chinese)

        [5] 趙同樣.嵌入式Linux系統(tǒng)驅(qū)動(dòng)研究與開(kāi)發(fā)[D].哈爾濱:中國(guó)地震局工程力學(xué)研究所,2012.

        Zhao T X.Study and development of embedded Linux system driver[D].Harbin:Institute of Engineering Mechanics,China Earthquake Administration.2012.(in Chinese)

        [6] Mitchell M,Oldham J,Samuel A.Advanced Linux Programming[M].America:New Riders Publishing,2001.

        [7] Samsung Electronics.User's Manual S3C6410X RISC Microprocessor[R].Korea:Samsung Electronics,Inc.,2008.

        [8] 汪益立,胡旭東,黃斌.Linux內(nèi)核中雙口RAM驅(qū)動(dòng)開(kāi)發(fā)及在大圓機(jī)控制系統(tǒng)中的應(yīng)用[J].現(xiàn)代紡織技術(shù),2014(4):13-17.

        Wang Y L,Hu X D,Huang B.Development of dual-port RAM driver in Linux kernel and application in control system of circular machine[J].Advanced Textile Technology,2014(4):13-17.(in Chinese)

        [9] 華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心.嵌入式Linux應(yīng)用程序開(kāi)發(fā)標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2009.

        Huaqing Vision Embedded Training Center.Details for Embedded Linux Application Program Development[M]. Beijing:The People's Posts and Telecommunications Press,2009.(in Chinese)

        [10] 盧振華,郭永飛,李云飛,等.利用CCD拼接實(shí)現(xiàn)推掃式遙感相機(jī)的自動(dòng)調(diào)焦[J].光學(xué)精密工程,2012,20(7): 1559-1565.

        Lu Z H,Guo Y F,Li Y F,et al.Realization of auto-focus on APRC using CCD stitching[J].Opt.Precision Eng.,2012,20(7):1559-1565.(in Chinese)

        Design of image interaction and display system based on ARM+FPGA

        WU Di?,LI Bing-yu,WANG Xiao-dong

        (Changchun Institute of Optics,F(xiàn)ine Mechanics and Physics,Chinese Academy of Sciences,Changchun 130033,China)

        To promote the integration of mapping information obtained,image interaction and display are realized based on the dual-core ARM+FPGA hardware architecture in this paper by taking full advantage of the parallel processor FPGA(Field-Programmable Gate Array)and the high-performance ARM processor.The real-time image display is realized based on Qt graphical interface and the driven design of FPGA FIFO(First Input First Output)is completed in the Linux 2.6.36 kernel which uses Linux operating system as the software platform,ARM11 as the core of embedded hardware processor and FPGA as the coprocessor.The test results show that it could achieve high speed VGA(640×480)format image interaction between ARM and FPGA with the maximum frame rate of 26 fps and the maximum transmission bandwidth of 182 Mbps.This system not only has the advantages of small volume,low power consumption,low cost,but also has good performance of stability and functionality.Moreover,it could meet the real-time requirements for the aerial remote sensing system. Key words:ARM;embedded Linux;FPGA;device driver;image display

        TP368

        A doi:10.3788/YJYXS20153006.0979

        1007-2780(2015)06-0979-08

        吳迪(1988-),女,吉林長(zhǎng)春人,碩士,研究實(shí)習(xí)員,主要從嵌入式系統(tǒng)設(shè)計(jì)及信息處理方面的研究. E-mail:wudihope@163.com

        李丙玉(1980-),男,河北滄州人,碩士,助理研究員,主要從事空間圖像傳感器成像控制與信息處理技術(shù)研究.E-mail:liby0125@126.com

        2015-03-23;

        2015-04-22.

        國(guó)家重大科學(xué)儀器設(shè)備開(kāi)發(fā)專(zhuān)項(xiàng)(No.2012YQ160185)

        Supported by National Key Scientific Instrument and Equipment Development Projects of China(No. 2012YQ160185)

        ?通信聯(lián)系人,E-mail:wudihope@163.com

        王曉東(1970-),男,吉林長(zhǎng)春人,博士,研究員,博士生導(dǎo)師,主要從事光電探測(cè)與檢測(cè)及信息處理方面的研究.E-mail:wangxd@ciomp.ac.com

        猜你喜歡
        界面設(shè)備系統(tǒng)
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        國(guó)企黨委前置研究的“四個(gè)界面”
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        人機(jī)交互界面發(fā)展趨勢(shì)研究
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        97人妻精品一区二区三区免费 | av网页免费在线观看| 亚洲 欧美 综合 在线 精品 | 国产精品人人爱一区二区白浆| 国产三级精品三级在线专区2| 色综合久久久久综合99| 曰本女人与公拘交酡免费视频| av天堂线上| 日本女优中文字幕在线播放 | 日本淫片一区二区三区| 精品日本一区二区三区| 国产人妻大战黑人20p| 国产午夜福利精品久久2021| 无码专区亚洲avl| 亚洲国产精品悠悠久久琪琪| 亚洲妇女自偷自偷图片| japanese无码中文字幕| 日本少妇爽的大叫高潮了| 国内揄拍国内精品人妻久久| 女人喷潮完整视频| 国产精品无码无片在线观看3D| 女同另类一区二区三区| 国产乱精品女同自线免费| 真人做爰片免费观看播放| 国产一级毛片卡| 久久精品国产亚洲不卡| √天堂资源中文www| 亚洲日韩国产精品第一页一区| av无码特黄一级| 国产av天堂亚洲av刚刚碰| 无码人妻av一二区二区三区| 久久精品国产亚洲Av无码偷窍| 国产一区二区三区中出| 久久精品中文闷骚内射| 国产成人综合一区二区三区| 精品女同av一区二区三区| 亚洲一区二区女搞男| 精品国产乱码久久久久久口爆网站| 国产av一区二区凹凸精品| 成人偷拍自拍视频在线观看| 日本不卡一区二区三区在线 |