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

        ?

        基于Eclipse CDT的FPGA工程過程管理優(yōu)化設(shè)計

        2019-07-01 02:35:55胡啟罡曲明成吳翔虎
        智能計算機與應(yīng)用 2019年3期

        胡啟罡 曲明成 吳翔虎

        摘 要:如果使用Xilinx公司的Vavido軟件直接用于FPGA開發(fā),則需要進行過程繁瑣的圖形化配置,容易出錯且不方便新手使用。為了解決這一問題,本文詳細研究了Vavido軟件中有關(guān)FPGA工程編譯部分的實現(xiàn)原理,并在Eclipse CDT提供的基礎(chǔ)擴展點上針對FPGA工程編寫插件,通過檢索工程目錄,自動生成編譯FPGA bit文件的tcl腳本,并以命令行的方式調(diào)用Vavido的相關(guān)功能,完成bit文件的生成。實現(xiàn)了FPGA工程的建立、編譯和燒寫功能。

        關(guān)鍵詞: FPGA;Vavido;Eclipse CDT;tcl腳本生成;bit文件生成

        文章編號: 2095-2163(2019)03-0324-04 中圖分類號: TP311 文獻標志碼: A

        0 引 言

        本文是實驗室項目《通用可配置嵌入式軟件集成開發(fā)環(huán)境》中的FPGA部分。該項目涉及到對Xilinx公司ZC706開發(fā)板的調(diào)試工作,其中包含F(xiàn)PGA部分。FPGA,即現(xiàn)場可編程門陣列,過程中,主要使用硬件描述語言(Verilog或VHDL)來完成電路設(shè)計。

        項目的初期,通過使用Xilinx公司的Vavido軟件實現(xiàn)相關(guān)的操作。但是在設(shè)計過程中發(fā)現(xiàn),使用Vavido圖形化界面進行FPGA開發(fā),需要提供繁瑣的配置,過程復(fù)雜,容易出錯且對新手不友好。同時,如果已有外部硬件描述文件,無法方便快捷地生成bit文件。

        目前,尚未有一款良好的開源項目能夠支持FPGA的編譯工作,故本文仍在Vavido的基礎(chǔ)上研究其實現(xiàn)機制。

        其實,Vivado軟件的核心是一個腳本解釋器,所有操作都附有對應(yīng)的tcl腳本可以調(diào)取執(zhí)行,GUI界面也是將各種腳本命令封裝為圖形化界面。對此,本文研究了Vivado中關(guān)于FPGA部分的tcl腳本,并對其進行了抽取集成。

        而Eclipse作為一類優(yōu)秀的開源框架,設(shè)計融入了大量的擴展節(jié)點供開發(fā)者集成自定義的功能。本文FPGA部分的功能就是在Eclipse CDT增配的擴展點基礎(chǔ)上對Xilinx公司的Vivado設(shè)計工具進行了集成。

        在本文中,后臺采用tcl交互式命令行的模式啟動Vivado,調(diào)用Vivado的相關(guān)功能,即調(diào)用Java提供的exe()函數(shù),在cmd命令行中執(zhí)行“vivado –mode tcl tcl_path”指令。tcl_path為該指令需要的參數(shù),即為編譯bit文件所需的tcl腳本的絕對路徑。

        1 FPGA工程的建立

        在Eclipse CDT的基礎(chǔ)上集成FPGA開發(fā)功能,首先需要能夠建立FPGA工程。FPGA工程是不同于C/Java工程的自定義新工程類型。研究可知,F(xiàn)PGA工程建立的函數(shù)流程則如圖1所示。

        由圖1可知,F(xiàn)PGA工程建立的步驟流程可詳述如下。

        (1)根據(jù)用戶選擇的產(chǎn)品名,從已集成的硬件配置數(shù)據(jù)中獲取該硬件開發(fā)板的FPGA芯片配置信息。調(diào)用ResourcesPlugin.getWorkspace().getRoot().getProject(projectName)函數(shù)新建工程對象project。

        (2)通過ResourcesPlugin.getWorkspace()函數(shù)獲取待建工程所在的工作區(qū)間workspace。

        (3)通過workspace.newProjectDescription (project Name)函數(shù)新建待創(chuàng)立工程的描述信息description,參數(shù)為工程名。

        (4)通過對description的設(shè)置,主要通過description.setLocation(projectLocation)設(shè)置工程路徑,參數(shù)為創(chuàng)建后工程所在的絕對路徑。

        (5)通過調(diào)用函數(shù)project.create(description,null)創(chuàng)建工程。判斷該工程對象是否打開,如果沒有打開,則通過函數(shù)project.open(monitor)打開該工程。

        (6)創(chuàng)建FPGA所需的文件夾,包括verilog、xdc、bit、buildTcl、edif、xci等文件夾,并在指定的文件夾下添入相應(yīng)的源代碼文件。

        (7) 保存工程配置信息。

        研究中,經(jīng)由上述的操作,即可新建出FPGA工程。

        2 tcl腳本及bit文件的自動生成

        2.1 tcl腳本及bit文件的自動生成分析

        tcl腳本的自動生成首先需要添加一個功能按鈕來提供相關(guān)操作。

        在org.eclipse.ui.actionSets擴展節(jié)點上,設(shè)計實現(xiàn)了一個生成FPGA bit文件的操作功能按鈕。該按鈕能夠?qū)PGA工程進行編譯,包括生成tcl腳本以及根據(jù)該腳本自動生成bit文件。需要在plugin.xml中進行配置。

        研究可得,在擴展節(jié)點上創(chuàng)建新按鈕的配置測試代碼可表述如下。

        - -

        point="org.eclipse.ui.actionSets">

        id="Embedded.actionSet1"

        label="build"

        visible="true">

        class="test.function.FpgaBuildAction"

        disabledIcon="icons/fpgaBuild.png">

        分析可知,在該xml中,action class屬性指向了該按鈕的功能Java文件,在該文件中,編寫了該按鈕的點擊事件。重寫run函數(shù),定制形成了自己的業(yè)務(wù)操作。

        在該按鈕的點擊事件中,設(shè)計了如下處理內(nèi)容:

        (1)檢索工程目錄,如果已有bit文件,提示用戶是否重新生成,重新生成,則執(zhí)行第(2)步操作。

        (2)檢索工程目錄,如果已有生成bit文件的tcl腳本,則執(zhí)行“vivado -mode batch -source build.tcl”,根據(jù)此腳本生成bit文件。如果沒有tcl腳本,則遞歸遍歷整個工程,根據(jù)工程所包含的文件,采用模板填充技術(shù)自動生成tcl腳本并執(zhí)行。

        首先需要規(guī)定出tcl腳本的標準模板,在此基礎(chǔ)上根據(jù)工程包含的文件以及用戶選擇的產(chǎn)品類型做出相應(yīng)修改,自動生成tcl腳本文件,tcl腳本文件模板如圖2所示。

        (3)執(zhí)行tcl腳本出現(xiàn)錯誤,則將報錯信息展示給用戶,用戶可以根據(jù)報錯信息,修改自己的工程文件,也可直接修改tcl腳本,該部分的函數(shù)流程可如圖3所示。在此過程中,工程目錄檢索采用深度優(yōu)先搜索算法。

        2.2 tcl腳本的自動生成設(shè)計

        本次研究中,相對重要的是tcl腳本的自動生成。圖2已經(jīng)給出了tcl腳本的模板。在此基礎(chǔ)上,關(guān)于tcl腳本的自動生成算法流程可推演論述如下。

        (1)采用深度優(yōu)先搜索算法遍歷工程的工程目錄。

        (2)遍歷到文件時,根據(jù)文件的后綴名,判斷文件的類型,填充至模板的相應(yīng)位置。read_vhdl –library是添加vhdl庫文件;read_vhdl是添加vhdl文件;read_verilog是添加verilog文件;read_xdc是添加xdc文件;read_edif是添加網(wǎng)表文件;read_ip是添加xci IP文件。這些指令后面續(xù)接的參數(shù)都是文件所在的絕對路徑。而還有一種glob指令是添加指定目錄下的所有指定后綴名的文件。

        (3)文件遍歷完成后,根據(jù)該FPGA工程創(chuàng)建時所選擇的芯片種類,設(shè)置綜合設(shè)計中的有關(guān)指標參數(shù)。之后就是填充優(yōu)化設(shè)計、布局、布線等指令。在tcl腳本的末尾再加上bit文件的指令。

        至此,研究進一步給出tcl腳本自動生成的函數(shù)運行流程可如圖4所示。

        該部分設(shè)計的按鈕只對FPGA工程有用,點擊該按鈕時,需要判斷當前選中工程的類型。但是綜觀本次集成開發(fā)環(huán)境中,除了FPGA的工程類型是自定義的新的工程類型,其它工程類型都是基于C/C++工程或者Java工程的,因此只是根據(jù)工程類型即可判斷是否為FPGA工程。

        2.3 tcl腳本的執(zhí)行設(shè)計

        在執(zhí)行tcl腳本時,通過Java的Process類實現(xiàn)。具體執(zhí)行步驟如下。

        (1)通過ProcessBuilder()函數(shù)新建一個builder對象,參數(shù)為要執(zhí)行的第三方可執(zhí)行程序的絕對路徑。

        (2)通過builder.start()執(zhí)行該第三方程序,獲得一個Process進程對象process,process即為打開該第三方程序后的進程。

        (3)通過process.getOutputStream()獲得該進程的輸入流,通過該輸入流執(zhí)行相應(yīng)的指令。指令代碼可參見如下。

        new BufferedWriter(new OutputStreamWriter (process.getOutputStream()));

        //初始化一個BufferedWriter對象br

        之后通過執(zhí)行函數(shù)br.write(cmd),參數(shù)為要執(zhí)行的程序指令,即可通過該輸入流向第三方可執(zhí)行程序發(fā)送指令。

        (4)使用WorkspaceJob創(chuàng)建一個新的線程,用來監(jiān)聽process進程的輸出流。

        (5)當監(jiān)聽線程開始執(zhí)行之后,會監(jiān)聽第三方可執(zhí)行程序的輸出流。這里使用了一個while循環(huán),循環(huán)的終止條件就是標準輸出流和錯誤輸出流均為空。

        (6)當標準輸出流和錯誤輸出流都為空時,關(guān)閉這2個輸出流,同時刷新工程所在的工作區(qū)間。

        刷新工程所在的工作區(qū)間的原因在于,在調(diào)用第三方可執(zhí)行程序時,有時會產(chǎn)生一個文件結(jié)果,例如FPGA工程編譯結(jié)束后會形成一個bit文件。如果不執(zhí)行刷新操作,則bit文件不會直接顯示在Eclipse工程目錄下,需要用戶手動刷新。因此為了用戶友好性的研究需要,這里就在每次調(diào)用了第三方可執(zhí)行程序后都會針對工程工作區(qū)間采取自動刷新的解決辦法。

        Process類調(diào)用第三方程序執(zhí)行,獲得執(zhí)行結(jié)果的通用函數(shù)設(shè)計流程則如圖5所示。

        3 結(jié)果測試

        綜合前述的研究設(shè)計可得,最終的測試效果將如圖6所示。

        從控制臺的輸出可以看出bit文件已被成功生成。

        4 結(jié)束語

        本文在Eclipse的擴展節(jié)點上,研究建立了FPGA工程,同時提供了一個功能按鈕,通過深度優(yōu)先搜索算法對工程目錄進行遍歷,按照模板填充生成tcl腳本文件,最終通過命令行方式調(diào)用Vivado軟件中的相關(guān)功能,實現(xiàn)了FPGA bit文件的生成工作。

        參考文獻

        [1]田丹, 林卓, 衛(wèi)進. 基于Eclipse的嵌入式集成開發(fā)環(huán)境工程管理[J]. 微處理機, 2015(2):29-31,34.

        [2] 朱娜. 基于Eclipse的嵌入式軟件開發(fā)管理平臺的研究與實現(xiàn)[D]. 成都:電子科技大學(xué), 2011.

        [3] 南方. 基于Eclipse的嵌入式集成開發(fā)環(huán)境分析與設(shè)計[D]. 西安:西安電子科技大學(xué), 2009.

        [4] YANG Penghao, WANG Rongliang, FAN Ziguo. Study on debugging method based on embedded system development platform[J]. Advanced Materials Research,2013,2385(694):2646-2650.

        [5] HE Huiqin. Application research of JTAG standard based on ARM debugging system[J]. Applied Mechanics and Materials,2015,3749(719):522-526.

        [6] STOLLON N. Multicore Debug[M]// MOYER B. Real world multicore embedded systems. USA: Elsevier Inc,2013:561-602.

        [7] DAN U C. Software development tools for embedded systems[M]//OSHANA R, KRAELING M. Software engineering for embedded systems-Methods, practical techniques, and applications. USA:Elsevier Inc,2013:511-562.

        男人天堂网在线视频| 国产在线播放一区二区不卡| 国内精品久久久久国产盗摄| 欧美日韩亚洲国产精品| 亚洲一区二区三区在线观看播放| 久久偷拍国内亚洲青青草| 亚洲男人天堂黄色av| 黑人巨大跨种族video| 久久99国产伦精品免费| 亚洲成人免费久久av| 精品国产午夜肉伦伦影院| 欧洲freexxxx性少妇播放| 国产精品丝袜在线不卡| 国产精品又污又爽又色的网站| 精品亚洲成av人在线观看| 久久国产热这里只有精品| 久久天堂av色综合| 国产免费人成视频在线观看播放播 | 在线看亚洲十八禁网站| 精品亚洲av乱码一区二区三区| 亚洲无线码一区二区三区| 欧美人与动人物牲交免费观看| 中文字幕成人乱码亚洲| 中文字幕av高清人妻| 国产97色在线 | 日韩| 国产va精品免费观看| 国产在线观看女主播户外| 亚洲精品久久7777777| 色狠狠色狠狠综合一区| 国产精品久久久精品三级18 | 中文字幕无线码免费人妻| 国产尤物精品自在拍视频首页| 亚洲乱码中文字幕综合| 熟女人妻中文字幕av| 最近最好的中文字幕2019免费 | 亚洲中文字幕午夜精品| 亚洲av中文无码乱人伦在线r▽| 国产视频嗯啊啊啊| 亚洲中文字幕日韩综合| 欧美xxxx色视频在线观看| 国产免费人成视频在线播放播 |