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

        ?

        基于ARM的便攜式1553B總線測試系統(tǒng)的設(shè)計與實現(xiàn)

        2014-01-16 05:57:32苗克堅
        電子設(shè)計工程 2014年13期
        關(guān)鍵詞:驅(qū)動程序時序中斷

        程 鵬,苗克堅

        (西北工業(yè)大學 計算機學院,陜西 西安 710072)

        隨著航空電子系統(tǒng)的發(fā)展,多路數(shù)據(jù)傳輸數(shù)據(jù)總線在航空電子系統(tǒng)中起著越來越重要的作用,其主要特點是集中控制、實時性要求高、分布處理[1]。1553B總線以其具有較高的可靠性和靈活性,廣泛應用于軍事、航空航天系統(tǒng)[2]。傳統(tǒng)的1553B測試設(shè)備采用普通計算機或工控機作為測試平臺,通過PCI總線與被測設(shè)備通信,這對測試設(shè)備的攜帶造成極大不便。本文所闡述的測試系統(tǒng)以ARM9作為中央處理器,以DDC的BU-64843T7作為1553B協(xié)議芯片,從而實現(xiàn)系統(tǒng)的小型化和便攜化,應用FPGA實現(xiàn)ARM時序與1553B時序的轉(zhuǎn)換,并采用Linux操作系統(tǒng)以確保系統(tǒng)穩(wěn)定可靠。

        1 ARM與FPGA數(shù)據(jù)通信接口設(shè)計

        1.1 系統(tǒng)硬件介紹

        該系統(tǒng)硬件由LPC3250核心板、外擴接口電路、FPGA和1553B協(xié)議芯片組成組成。系統(tǒng)架構(gòu)如圖1所示。

        圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture

        LPC3250微處理器面向低功耗、高性能的應用,采用ARM926EJ-SCPU內(nèi)核,實現(xiàn)5級流水處理并采用哈佛結(jié)構(gòu),可工作在266 MHz的頻率下,數(shù)據(jù)處理能力強大。

        本系統(tǒng)外擴USB、RS232和網(wǎng)絡(luò)接口,用于操作系統(tǒng)的燒寫和驅(qū)動程序、應用程序的調(diào)試,并且配備實時時鐘,可以掉電保持。為增加其可靠性,本系統(tǒng)在多處增加ESD芯片,以增強系統(tǒng)的抗靜電能力。

        FPGA采用Altera公司的Cyclone I系列的EP1C6Q240C8芯片,該系列芯片具有20 060個邏輯單元以及288 kb RAM,支持3.3-V LVTTL/CMOSIO標準,可直接與ARM通信,無需進行電平轉(zhuǎn)換。

        1553B協(xié)議芯片選擇DDC公司的BU-64843T8芯片。該芯片是世界上第一個將1553B協(xié)議芯片和隔離變壓器集成到一體的芯片。因此,在布PCB時,會節(jié)省很大空間,從而使系統(tǒng)小巧,方便攜帶。

        1.2 接口電路設(shè)計

        LPC3250包括3個外部存儲器接口,分別是NANDFlash控制器、Secure Digital控制器和外部存儲器控制器(External memory controller,簡稱為EMC)。EMC提供了系統(tǒng)總線與片外存儲設(shè)備之間的接口功能,可實現(xiàn)與SDRAM、DDR SDRAM和SRAM設(shè)備的通信。該系統(tǒng)采用EMC的靜態(tài)RAM接口與FPGA進行通信,該接口具有時序操作簡單,接口速度快等特點。利用FPGA模擬靜態(tài)RAM,并進行時序轉(zhuǎn)換,從而實現(xiàn)ARM對1553B芯片的訪問。圖2為ARM與FPGA的接口電路圖,由于1553B芯片內(nèi)部RAM為4K*16bit,因此數(shù)據(jù)線選用16位,地址線選用12位。通過EMC靜態(tài)存儲器控制器的配置寄存器,可將數(shù)據(jù)總線分別設(shè)置為8位、16位、32位。該系統(tǒng)需將配置寄存器的低兩位設(shè)置為01,即16位總線。其他控制信號說明見表1所示。

        圖2 ARM與FPGA接口電路Fig.2 Interface circuit of ARM and FPGA

        表1 控制信號說明Tab.1 Control signals introduction

        1.3 FPGA邏輯設(shè)計

        若想成功訪問1553B設(shè)備,必須嚴格按照1553B時序進行操作,然而EMC的時序與1553B的時序差異很大,因此需要進行時序轉(zhuǎn)換,這通過一片F(xiàn)PGA來實現(xiàn)。BU-64843T8的控制信號主要包括,TRANSPARENT/BUFFERED*、STRBD*、SELECT*、RD/WR*、MEM/REG*、IOEN*、READYD*、ADDR_LAT/MEMOE*,RT_AD_LAT*,INT* 等信號。

        TRANSPARENT/BUFFERED*信號用于設(shè)定芯片工作在透明模式還是緩沖模式,該系統(tǒng)的1553B不需外擴存儲器,工作在緩沖模式下即可,因此MEMOE*等信號可以不做考慮;STRBD*和SELECT*可接到一起,作為芯片的片選信號;RD/WR*為讀寫信號;MEM/REG*用來區(qū)分訪問內(nèi)部4K存儲器資源還是寄存器資源;IOEN*有效時,標志芯片正在處理外部的訪問;READYD*信號在本系統(tǒng)中十分重要,當ARM寫時,READYD*有效表示數(shù)據(jù)成功寫入芯片中,當ARM讀時,READYD*有效表示數(shù)據(jù)線上的數(shù)據(jù)有效,可以使用;ADDR_LAT為地址鎖存信號,對于總線未復用的處理器,該信號置為高;RT_AD_LAT*信號為RT地址鎖存信號,該信號出現(xiàn)上升沿,即可將RT地址上的數(shù)據(jù)鎖存到芯片內(nèi)部,因此RT地址無需一直保持著。INT*信號用于中斷ARM,該信號經(jīng)過FPGA與ARM的GPIO引腳相連 ,相應的GPIO引腳被配置為外部中斷引腳。

        FPGA的邏輯設(shè)計采用鎖存的方式,即所有的地址信號、數(shù)據(jù)信號、讀寫、片選、EME/REG*信號通過鎖存器直接打到總線上,這些信號在ARM訪問期間一直有效。因此ARM需要進行多次寫操作:先把要寫的數(shù)據(jù)送出,再把要訪問的地址和控制信息送出,之后循環(huán)讀取READYD*信號,直到其有效,再進行下一次讀寫操作。相關(guān)的VHDL代碼如下:

        PROCESS(RST,CONTR_WORD_LATCH)--鎖存控制和地址信號

        BEGIN

        IF RST='0'THEN

        CONTR_REG1<=X"0002";

        ELSIF CONTR_WORD_LATCH='1'THEN

        CONTR_REG1<=BD;

        END IF;

        END PROCESS;

        PROCESS(RST,WRITE_DATA_LATCH)--鎖存數(shù)據(jù)信號

        BEGIN

        IF RST='0'THEN

        WRITE_DATA_REG<=X"0000";

        ELSIF WRITE_DATA_LATCH='1'THEN

        WRITE_DATA_REG<=BD;

        END IF;

        END PROCESS;

        A_6484(11 downto 0)<=CONTR_REG1(15 downto 4);--

        將地址送到BU-64843T8地址線

        MEM_REG<=CONTR_REG1(3); --

        將控制信號送到BU-64843T8

        RD_WR<=CONTR_REG1(2);

        STRBD<=CONTR_REG1(1);

        2 1553B驅(qū)動程序的開發(fā)原理與實現(xiàn)

        2.1 文件操作接口

        設(shè)備驅(qū)動程序在Linux內(nèi)核中扮演著特殊的角色。它們是獨立的模塊,使某個特定的硬件響應一個定義良好的內(nèi)部編程接口,用戶的操作通過一組標準化的調(diào)用執(zhí)行,而這些調(diào)用獨立于特定的驅(qū)動程序。將這些調(diào)用映射到作用于實際硬件的設(shè)備特有操作上,則是設(shè)備驅(qū)動程序的任務(wù)。系統(tǒng)軟件架構(gòu)如圖3所示。

        圖3 系統(tǒng)軟件架構(gòu)圖Fig.3 System software architecture diagram

        Linux驅(qū)動程序支持3種類型的設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是個能夠像字節(jié)流一樣被訪問的設(shè)備。字符設(shè)備驅(qū)動程序通常要實現(xiàn)open、close、read、write系統(tǒng)調(diào)用。本系統(tǒng)的1553B設(shè)備屬于字符設(shè)備,它的驅(qū)動程序主要包括以下幾個模塊:初始化模塊、打開關(guān)閉模塊、讀寫模塊、中斷處理模塊。

        驅(qū)動程序與應用程序的通信主要通過系統(tǒng)函數(shù)調(diào)用,Linux為所有設(shè)備文件提供統(tǒng)一的操作函數(shù)接口,我們的驅(qū)動程序中只需實現(xiàn)struct file_operations中相應的函數(shù)即可,主要包括 ioctl、read、write、open、release、fasync 函數(shù)。 具體 C語言代碼如下所示:

        static const struct file_operations xc1553_fops=

        {

        .owner =THIS_MODULE,

        .ioctl=xc1553_ioctl,//用于自定義IO操作

        .open=xc1553_open,//用于響應文件系統(tǒng)的open操作

        .write=xc1553_write,//實現(xiàn)寫功能

        .read=xc1553_read,//實現(xiàn)讀功能

        .release=xc1553_release,//用于響應文件系統(tǒng)的close操作

        .fasync=xc1553_fasync,//用于實現(xiàn)異步通知

        };

        當用戶加載驅(qū)動模塊時,一系列初始化工作在static int__init xc1553_init(void)函數(shù)中完成,包括設(shè)備注冊,物理地址到虛擬地址的映射,EMC模式的配置,中斷處理函數(shù)的注冊。

        當用戶卸載驅(qū)動模塊時,需要在static void__exit xc1553_exit(void)函數(shù)中進行驅(qū)動模塊和設(shè)備的卸載,以及中斷號的釋放。

        2.2 中斷處理模塊的實現(xiàn)

        當1553B產(chǎn)生中斷時,由xc1553_init函數(shù)中注冊的中斷處理函數(shù)進行處理,并且通知上層應用程序進行讀寫操作。驅(qū)動程序與應用程序的通信通過異步通知的方式實現(xiàn)。為了實現(xiàn)異步通知,在驅(qū)動程序中需要實現(xiàn)int fasync_helper(int fd,struct file*filp,int mode,struct fasync_struct**fa)和 void kill_fasync(struct fasync_struct**fa,int sig,int band)函數(shù)。

        fasync_helper函數(shù)在xc1553_fasync中實現(xiàn),作用是為當前進程創(chuàng)建一個fasync_struct結(jié)構(gòu)體,然后掛入目標設(shè)備的fasync隊列,最后在設(shè)備驅(qū)動的中斷處理程序中,使用kill_fasync函數(shù)向該隊列發(fā)送信號,通知上層應用程序。

        xc1553_fasync函數(shù)實現(xiàn)如下:

        static int xc1553_fasync(int fd,struct file*filp,int on)

        {

        int retval;

        retval=fasync_helper(fd,filp,on,&fasync_queue_1553);

        if(retval<0)

        {

        printk("xc1553_fasync"DEV_NAME"!---failed ");

        return retval;

        }

        else

        {

        printk("xc1553_fasync"DEV_NAME"!---success ");

        }

        return 0;

        }

        中斷處理函數(shù)實現(xiàn)如下:

        static irqreturn_t xc1553_interrupt(int irq,void*dev_id,struct pt_regs*regs)

        {

        if(fasync_queue_1553)

        {

        //向進程隊列發(fā)送SIGIO信號

        kill_fasync(&fasync_queue_1553,SIGIO,POLL_IN);

        printk("success kill fasync! !");

        }

        else

        {

        printk("fasync queue is null! ");

        }

        sic2_er=io_p2v(SIC2_BASE+INTC_MASK);//物理地址到虛擬地址的映射

        sic2_rsr=io_p2v(SIC2_BASE+INTC_RAW_STAT);

        __raw_writel((1<<15),sic2_rsr);//清中斷

        __raw_writel((1<<15),sic2_er);//重新使能中斷

        return 0;

        }

        3 結(jié)束語

        1553B總線[7-8]廣泛應用于航空領(lǐng)域,基于1553B總線的測控設(shè)備普遍體積大,攜帶不方便,本文所闡述的測試系統(tǒng)完全能夠?qū)崿F(xiàn)傳統(tǒng)測控設(shè)備的功能,并且極大的縮小了設(shè)備的體積,方便攜帶。經(jīng)過測試,該系統(tǒng)實時性高、工作穩(wěn)定,能夠滿足軍工要求。

        [1]賓辰忠,苗克堅.基于1553B總線的實時消息流實現(xiàn)與控制[J].計算機測量與控制,2005,13(9):967-969.BIN Chen-zhong,MIAO Ke-jian.Message Stream Research and Implementation in Real-Time Network System Based on 1553B Bus[J].Computer Measurement&Control,2005,13(9):967-969.

        [2]吳小強,李慶,張望遠.Linux下1553B驅(qū)動軟件實時性設(shè)計與實現(xiàn)[J].計算機測量與控制,2011,19(10):2564-2566.WU Xiao-qiang,LI Qing,ZHANG Wang-yuan.Design and implementation of real-time 1553B driver under Linux[J].Computer Measurement&Control,2011,19(10):2564-2566.

        [3]MIL-STD-1553B Digital Internal Time Division Command/Response Multiplex Data Bus[S].USA Military Standard,1978.

        [4]高志強,苗克堅,張雯璐.彈載計算機1553B總線測試模塊設(shè)計[J].計算機測量與控制,2008,16(9):1280-1282.GAO Zhi-qiang,MIAO Ke-jian,ZHANG Wen-lu.Testing Module Design of 1553B Bus in Missile Borne Computer[J].Computer Measurement&Control,2008,16(9):1280-1282.

        [5]Corbet J,Rubini A,Kroah-Hartman G,LINUX設(shè)備驅(qū)動程序[M].第三版.魏永明 耿岳 鐘書毅,譯.北京:中國電力出版社,2005.

        [6]蔣貴全,張輝,王國鋒.基于Linux的FPGA數(shù)據(jù)通信接口驅(qū)動設(shè)計與實現(xiàn)[J].計算機應用,2009,29(9):2520-2522 JIANG Gui-quan,ZHANG hui,WANG Guo-feng.Design and implementation of FPGA data communication interface driver based on Linux[J].Journal of Computer Applications,2009,29(9):2520-2511.

        [7]吳云忠.基于PCI接口的1553B總線控制軟件設(shè)計[J].現(xiàn)代電子技術(shù),2013(24):47-49.WU Yun-zhong.Design of 1553B bus control software based on PCI interface [J].Modern Electronics Technique,2013(24):47-49.

        [8]張啟敏,孫劍波,權(quán)云濤.1553B總線網(wǎng)絡(luò)中RT終端系統(tǒng)的軟件設(shè)計[J].電子科技,2014(3):38-40.ZHANG Qi-min,SUN Jian-bo,QUAN Yun-tao.Design and implementation of RT terminal system software in 1553B bus network[J].Electronic Science and Technology,2014(3):38-40.

        猜你喜歡
        驅(qū)動程序時序中斷
        時序坐標
        基于Sentinel-2時序NDVI的麥冬識別研究
        跟蹤導練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        一種毫米波放大器時序直流電源的設(shè)計
        電子制作(2016年15期)2017-01-15 13:39:08
        DPBUS時序及其設(shè)定方法
        河南科技(2014年15期)2014-02-27 14:12:36
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應分析
        微處理機(2012年4期)2012-06-13 11:32:24
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        亚洲情精品中文字幕99在线| 9久9久女女热精品视频免费观看| 一本一本久久久久a久久综合激情| 亚洲午夜久久久久中文字幕久| 亚洲乱精品中文字字幕| 中文字幕亚洲精品一二三区| 久久精品亚洲一区二区三区画质| 偷拍一区二区三区四区| 免费人成黄页在线观看国产| 久久99热国产精品综合| 69精品人人人人| 国产最新进精品视频| 在线精品免费观看| 在线看片国产免费不卡| 最新国产av网址大全| 日韩av一区二区不卡在线| 国产精品视频亚洲二区| 天堂国精产品2023年| 亚洲精品成人片在线观看| 欧美韩国精品另类综合| 我也色自拍俺也色自拍| 国产精品一区二区三久久不卡| 国产精品免费精品自在线观看| 国产精品爆乳在线播放| 日本变态网址中国字幕| 国产一区资源在线播放| 国内少妇毛片视频| 亚洲精品无码成人a片| 麻豆变态另类视频在线观看| 国产美女高潮流白浆免费观看| 国产亚洲中文字幕一区| 亚洲欧洲日产国码av系列天堂| 国产成人亚洲精品青草天美| 精品推荐国产精品店| 久久这里有精品国产电影网| 精品麻豆一区二区三区乱码| 精品久久久久久久久午夜福利 | 国产亚洲精品久久久久婷婷瑜伽| 久久永久免费视频| 狠狠色丁香婷婷久久综合2021 | 国产精品午夜福利亚洲综合网|