可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái)1.ppt_第1頁(yè)
可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái)1.ppt_第2頁(yè)
可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái)1.ppt_第3頁(yè)
可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái)1.ppt_第4頁(yè)
可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái)1.ppt_第5頁(yè)
已閱讀5頁(yè),還剩202頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

可編程片上系統(tǒng)開(kāi)發(fā)平臺(tái),何賓 2012.02,本章內(nèi)容,該章描述在Xilinx嵌入式開(kāi)發(fā)套件(Xilinx Development Kit,XDK)嵌入式系統(tǒng)工具的結(jié)構(gòu)和設(shè)計(jì)流 程。XDK用于開(kāi)發(fā)基于MicroBlaze軟核和PowerPC硬核處 理器的SOPC系統(tǒng)。該章的主要內(nèi)容包括:EDK簡(jiǎn)介、設(shè) 計(jì)流程概述、平臺(tái)開(kāi)發(fā)結(jié)構(gòu)的工具。 Xilinx的EDK工具主要包含:Xilinx Platfrom Studio (XPS)人機(jī)界面、嵌入式系統(tǒng)工具套件、嵌入式處理IP 核,例如處理器和外設(shè)、 Platform Studio SDK(Software Development Kit,SDK)。SDK基于Eclipse開(kāi)放源碼框 架,可以選擇使用SDK開(kāi)發(fā)自己的嵌入式軟件應(yīng)用程序 (從EDK13.1開(kāi)始,必須在SDK內(nèi)開(kāi)發(fā)軟件應(yīng)用程序)。,設(shè)計(jì)流程及EDK工具 -設(shè)計(jì)流程,EDK中所提供的工具用來(lái)完成嵌入式設(shè)計(jì)的整個(gè)過(guò) 程。圖5.1給出了基于EDK的基本嵌入式設(shè)計(jì)流程。,設(shè)計(jì)流程及EDK工具 -建立硬件平臺(tái),Xilinx的FPGA技術(shù)允許設(shè)計(jì)者在處理器子系統(tǒng)中定制 硬件邏輯。這種定制不可能使用標(biāo)準(zhǔn)的現(xiàn)成的微處理器或 控制器芯片。“硬件平臺(tái)”是指設(shè)計(jì)人員根據(jù)應(yīng)用的需要而 使用Xilinx的技術(shù)建立的靈活地、嵌入式處理子系統(tǒng)。 硬件平臺(tái)是由一個(gè)或多個(gè)處理器或外設(shè)連接到處理器 總線構(gòu)成的。 EDK通過(guò)微處理器硬件規(guī)范(Microprocessor Hardware Specification,MHS)文件記錄硬件平臺(tái)信息。,設(shè)計(jì)流程及EDK工具 -軟件平臺(tái)建立,軟件平臺(tái)是軟件驅(qū)動(dòng)和用于建立應(yīng)用程序的操作系統(tǒng) (可選)組成的。所建立的軟件映像文件只包含用戶所 使用到的一部分Xilinx的庫(kù)。 EDK通過(guò)微處理器軟件規(guī)范(Microprocessor Software Spectifcation,MSS)記錄軟件平臺(tái)信息。設(shè)計(jì) 人員可以在軟件平臺(tái)運(yùn)行多個(gè)應(yīng)用程序。,設(shè)計(jì)流程及EDK工具 -使用仿真的硬件平臺(tái)驗(yàn)證,驗(yàn)證硬件平臺(tái)的正確功能,設(shè)計(jì)人員可以建立一個(gè)仿 真模型,并且在HDL仿真器上運(yùn)行。當(dāng)仿真系統(tǒng)時(shí),處理 器運(yùn)行可執(zhí)行文件。 設(shè)計(jì)人員可以選擇建立行為、結(jié)構(gòu)或者精確的時(shí)序仿 真模型。,設(shè)計(jì)流程及EDK工具 -使用調(diào)試的軟件驗(yàn)證,調(diào)試嵌入式軟件的基本技術(shù)是加載設(shè)計(jì)到所支持的開(kāi) 發(fā)板和使用調(diào)試工具去調(diào)試處理器。 作為可選擇的方式,設(shè)計(jì)人員可以使用指令集仿真器 或簡(jiǎn)化系統(tǒng)仿真器模型(“虛擬平臺(tái)”)運(yùn)行在主機(jī)上來(lái)調(diào) 試設(shè)計(jì)代碼。 設(shè)計(jì)人員可以通過(guò)概要分析代碼的執(zhí)行來(lái)估計(jì)系統(tǒng)性 能。,設(shè)計(jì)流程及EDK工具 -芯片配置,一旦軟件和硬件平臺(tái)建立完成,設(shè)計(jì)人員可以為FPGA 建立一個(gè)的配置比特文件。 對(duì)于原型設(shè)計(jì),當(dāng)連接主機(jī)和芯片時(shí),設(shè)計(jì)者可以在 下載比特流時(shí),將希望運(yùn)行在嵌入式平臺(tái)上的軟件同時(shí)下 載。 對(duì)于產(chǎn)品,設(shè)計(jì)人員將配置比特流和軟件保存在和 FPGA連接的非易失性存儲(chǔ)器中。,設(shè)計(jì)流程及EDK工具 -EDK工具,圖5.2 EDK工具的結(jié)構(gòu),設(shè)計(jì)流程及EDK工具 -EDK工具,設(shè)計(jì)流程及EDK工具 -EDK工具,設(shè)計(jì)流程及EDK工具 -EDK工具,設(shè)計(jì)流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供了集成環(huán)境為基于MicroBlaze和PowerPC處理 器的嵌入式處理器系統(tǒng)創(chuàng)建軟件和硬件規(guī)范流程。 XPS也提供編輯器和項(xiàng)目管理接口用來(lái)創(chuàng)建和編輯源 代碼。 XPS提供工具流程配置選項(xiàng)的定制和提供圖形化的系 統(tǒng)編輯器用來(lái)連接處理器、外設(shè)和總線。 XPS可以在Windows、Solaris和Linux平臺(tái)下使用。 從XPS中,設(shè)計(jì)人員可以運(yùn)行所有的用于處理硬件和 軟件的嵌入式系統(tǒng)工具。在XPS環(huán)境下可以進(jìn)行系統(tǒng)的驗(yàn) 證。,設(shè)計(jì)流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供下面的特性: (1) 能夠添加核,編輯核參數(shù)和進(jìn)行總線和信號(hào)連接,產(chǎn)生MHS 文件; (2) 能夠產(chǎn)生和修改MSS文件; (3) 支持表5.1內(nèi)的所有工具; (4) 能夠產(chǎn)生和觀察系統(tǒng)塊圖和設(shè)計(jì)報(bào)告; (5) 多用戶軟件應(yīng)用支持; (6) 項(xiàng)目管理; (7) 過(guò)程和工具流程依賴管理; (8) 輸出MHS文件到SDK工具,設(shè)計(jì)流程及EDK工具 -Xilinx Software Development Kit(SDK),SDK工具是XPS的補(bǔ)充,SDK為應(yīng)用軟件提供開(kāi)發(fā)環(huán) 境。SDK基于Eclipse開(kāi)放源碼標(biāo)準(zhǔn)。SDK主要有以下特 點(diǎn): (1) 功能豐富的C/C+編輯器和編譯環(huán)境; (2) 導(dǎo)入基于XPS生成的硬件平臺(tái)定義; (3) 提供項(xiàng)目管理; (4)支持基于單個(gè)處理器或者多個(gè)處理器系統(tǒng)的軟件應(yīng)用程序的 開(kāi)發(fā); (5) 支持以團(tuán)隊(duì)環(huán)境的形式開(kāi)發(fā)軟件應(yīng)用程序; (6)為第三方的操作系統(tǒng)創(chuàng)建和配置板級(jí)支持包BSP;,設(shè)計(jì)流程及EDK工具 -Xilinx Software Development Kit,SDK,(7)提供現(xiàn)成的簡(jiǎn)單軟件工程來(lái)測(cè)試硬件和軟件功能; (8)通過(guò)GUI接口為軟件應(yīng)用程序、編程FPGA芯片和編 程并行flash存儲(chǔ)器產(chǎn)生鏈接腳本; (9)應(yīng)用程序的建立配置和自動(dòng)的MAKE文件生成; (10)錯(cuò)誤瀏覽; (11)為無(wú)縫調(diào)試和概要分析目標(biāo)提供了好的集成環(huán)境;,設(shè)計(jì)流程及EDK工具 -The Base System Builder(BSB) Wizard,BSB向?qū)椭O(shè)計(jì)人員快速建立一個(gè)嵌入式系統(tǒng)工 程。對(duì)于更復(fù)雜的工程,BSB向?qū)峁┗镜南到y(tǒng),通過(guò) 這個(gè)系統(tǒng)設(shè)計(jì)人員可以定制完成嵌入式設(shè)計(jì)。為了高效率 的建立工程,Xilinx推薦使用BSB向?qū)А?設(shè)計(jì)流程及EDK工具 -The Base System Builder(BSB) Wizard,基于設(shè)計(jì)人員選擇的板子,設(shè)計(jì)人員通過(guò)BSB選擇并 配置基本的元素,比如:處理器類型、調(diào)試接口、緩存配 置、存儲(chǔ)器類型和大小、外設(shè)等。 對(duì)于BSB不支持的目標(biāo)系統(tǒng),設(shè)計(jì)人員可以選擇定制 板選項(xiàng)。使用這個(gè)選項(xiàng)時(shí),必須指定未來(lái)板子的硬件,并 且要給出用戶約束文件UCF。 如果選擇的是支持的目標(biāo)板,BSB向?qū)ё詣?dòng)的加入 UCF文件。當(dāng)退出BSB時(shí),BSB所建立的MHS和MSS文 件自動(dòng)加入到XPS工程中,設(shè)計(jì)人員能在XPS中進(jìn)行更進(jìn) 一步的設(shè)計(jì)。,設(shè)計(jì)流程及EDK工具 - Platform Generator,Platgen,平臺(tái)產(chǎn)生器Platgen將對(duì)嵌入式系統(tǒng)的高級(jí)描述編譯成能 在目標(biāo)FPGA芯片上實(shí)現(xiàn)的HDL網(wǎng)表。 嵌入式系統(tǒng)硬件平臺(tái)典型的由一個(gè)或多個(gè)處理器和不同 的外設(shè)和存儲(chǔ)器模塊組成,這些模塊通過(guò)處理器總線連 接。每個(gè)外設(shè)的IP核有很多的參數(shù),通過(guò)調(diào)整這些參數(shù)來(lái) 定制行為。這些參數(shù)也用來(lái)為這些存儲(chǔ)器和外設(shè)進(jìn)行地址 映射。由于EDK提供可選擇的特性,F(xiàn)PGA只需要實(shí)現(xiàn)應(yīng)用 程序所要求的功能子集。 硬件平臺(tái)保存了MHS文件。MHS文件是表示所設(shè)計(jì)的 嵌入式系統(tǒng)的硬件元件的最主要文件。MHS文件以ASCII碼 形式存在。,設(shè)計(jì)流程及EDK工具 - Platform Generator(Platgen),Platgen讀取MHS文件作為基本的設(shè)計(jì)輸入。Platform 也從EDK庫(kù)和用戶IP庫(kù)中讀取不同的處理器核硬件描述文 件(MPD,PAO)。 Platgen為嵌入式系統(tǒng)產(chǎn)生頂層HDL設(shè)計(jì)文件,該文件 包含所有參數(shù)化了的IP核。 在這個(gè)過(guò)程中,將MHS中所有高層總線連接變成連接 處理器、外設(shè)和片上存儲(chǔ)器的真實(shí)信號(hào)。它也調(diào)用XST編 譯器綜合每個(gè)例化的IP核(Platgen產(chǎn)生的系統(tǒng)級(jí)網(wǎng)表也用 來(lái)作為FPGA實(shí)現(xiàn)過(guò)程的一部分)。 此外,Platgen也產(chǎn)生BMM(BRAM Memory Map)文 件,該文件包含所用到的片上BRAM的地址。,設(shè)計(jì)流程及EDK工具 - 建立和導(dǎo)入IP向?qū)?該向?qū)椭O(shè)計(jì)人員建立自己的外設(shè)并且將它們導(dǎo)入 相應(yīng)的XPS工程中。 在創(chuàng)建模式下,創(chuàng)建和輸入外設(shè)向?qū)Ы⒑芏辔募?這些文件的一些是模板文件幫助設(shè)計(jì)人員實(shí)現(xiàn)外設(shè),而不 需要詳細(xì)的知道總線協(xié)議,命名規(guī)則和特殊接口文件的格 式。通過(guò)參考模板中的例子和使用不同的輔助設(shè)計(jì)支持文 件,設(shè)計(jì)人員可以很快的進(jìn)行邏輯定制。 在導(dǎo)入模式下,該工具幫助設(shè)計(jì)人員建立接口文件和 目錄結(jié)構(gòu)。對(duì)于這種操作模式,必須遵守EDK的命名規(guī) 則。一旦導(dǎo)入完成,用戶的定制外設(shè)在EDK外設(shè)庫(kù)中可以 使用。,設(shè)計(jì)流程及EDK工具 -建立和導(dǎo)入IP向?qū)?當(dāng)創(chuàng)建或輸入一個(gè)外設(shè)時(shí),自動(dòng)生成MPD (Microprocessor Peripheral Defination)文件和PAO (Peripheral Analyze Order)文件。MPD文件定義了外設(shè) 的接口,PAO文件通知其它工具(Platgen,Simgen),對(duì) 外設(shè)需要編譯哪個(gè)HDL文件和以什么樣的順序編譯。,設(shè)計(jì)流程及EDK工具 -配置協(xié)處理器向?qū)?如果設(shè)計(jì)中包含MicroBlaze和PowerPC處理器時(shí),可 以使用該向?qū)АT撓驅(qū)砑雍瓦B接協(xié)處理器到CPU。協(xié)處 理器是一個(gè)硬件模塊用來(lái)實(shí)現(xiàn)用戶在FPGA內(nèi)定義的功能 和通過(guò)FSL接口與處理器連接。FSL通道是一個(gè)專用的32 位,點(diǎn)對(duì)點(diǎn)的通信接口。,設(shè)計(jì)流程及EDK工具 -庫(kù)產(chǎn)生器(Libgen),Libgen為嵌入式處理器系統(tǒng)配置庫(kù),設(shè)備驅(qū)動(dòng),文件系 統(tǒng)和中斷句柄,以及創(chuàng)建板級(jí)支持包BSP。嵌入式軟件平臺(tái) 為每個(gè)處理器定義了系統(tǒng)內(nèi)外設(shè)的驅(qū)動(dòng)(板級(jí)支持包), 可選擇的庫(kù),標(biāo)準(zhǔn)的輸入/輸出設(shè)備,中斷句柄例程和其它 相關(guān)的軟件特征。SDK工程進(jìn)一步定義了運(yùn)行在每個(gè)處理 器上的軟件,這些軟件基于BSP運(yùn)行。,設(shè)計(jì)流程及EDK工具 -庫(kù)產(chǎn)生器(Libgen),來(lái)自于EDK安裝的庫(kù)和驅(qū)動(dòng),以及設(shè)計(jì)人員提供的定 制庫(kù)和驅(qū)動(dòng),SDK將用戶程序,包括庫(kù)和驅(qū)動(dòng)程序編譯 成處理器硬件平臺(tái)上可執(zhí)行可鏈接的文件(Executable Linked Format,ELF)。 Libgen讀取選擇的EDK庫(kù)和不同的處理器核軟件描述 文件(Microprocessor Driver Defination, MDD)和驅(qū)動(dòng)代 碼。,設(shè)計(jì)流程及EDK工具 - GNU編譯工具(GCC),XPS調(diào)用GNU編譯工具用于編譯和鏈接應(yīng)用程序。 1)對(duì)于MicroBlaze處理器的應(yīng)用,XPS運(yùn)行mb-gcc編 譯器; 2)對(duì)于PowerPC處理器的應(yīng)用,XPS運(yùn)行powerpc-eabi- gcc編譯器。 編譯器能讀取C代碼,頭文件和匯編代碼。鏈接器將 編譯的程序和選擇的庫(kù)連接在一起產(chǎn)生ELF可執(zhí)行文件。 連接器也讀取連接腳本(默認(rèn)產(chǎn)生或用戶產(chǎn)生)。,設(shè)計(jì)流程及EDK工具 -Xilinx Microprocessor Debugger(XMD),設(shè)計(jì)人員可以使用指令集仿真器或者虛擬平臺(tái)調(diào)試軟 件程序。XMD讀ELF文件。對(duì)于調(diào)試物理的FPGA,XMD 和FPGA通訊使用和FPGA下載相同的電纜。,設(shè)計(jì)流程及EDK工具 -GNU調(diào)試器(GDB),GNU調(diào)試器是個(gè)強(qiáng)大和靈活的工具,它為在不同的開(kāi) 發(fā)周期驗(yàn)證MicroBlaze和PowerPC系統(tǒng)提供了統(tǒng)一的調(diào)試 和驗(yàn)證手段。GDB使用了XMD作為最基本的引擎和處理 器目標(biāo)通訊。,設(shè)計(jì)流程及EDK工具 - Simulation Model Generator(Simgen),仿真模型產(chǎn)生器Simgen為硬件產(chǎn)生和配置不同的模 型。為產(chǎn)生行為模型,Simgen使用MHS文件作為基本的 輸入。為產(chǎn)生結(jié)構(gòu)或時(shí)序模型,Simgen使用綜合后或布局 布線后的設(shè)計(jì)數(shù)據(jù)庫(kù)作為基本的輸入。 Simgen為每個(gè)處理器也讀取嵌入式應(yīng)用ELF文件去初 始化片上存儲(chǔ)器;這樣處理器在仿真階段就可以執(zhí)行這些 軟件代碼。,設(shè)計(jì)流程及EDK工具 - Simulation Library Compiler(CompEDKLib),CompEDKLib使用不同仿真工具廠商提供的仿真器編譯 EDK基于HDL的仿真庫(kù)。這個(gè)工具可以運(yùn)行在GUI和批處 理模式下。 在GUI模式下,允許設(shè)計(jì)人員使用CompXLib編譯Xilinx 的庫(kù)和EDK中可以使用的庫(kù)。,設(shè)計(jì)流程及EDK工具 - Virtual Platform Generator(VPgen),虛擬平臺(tái)是硬件系統(tǒng)的周期級(jí)的仿真模型??梢栽谥?機(jī)上用虛擬平臺(tái)來(lái)調(diào)試和評(píng)估軟件應(yīng)用代碼,而不需要得 到運(yùn)行在原型板上的硬件。,設(shè)計(jì)流程及EDK工具 -Bus Functional Model Compiler(BFM),總線功能仿真簡(jiǎn)化了依附在總線上的硬件元件的驗(yàn)證。,設(shè)計(jì)流程及EDK工具 -Bitstream Initializer(Bitinit),比特流初始化工具使用軟件信息來(lái)初始化與處理器 連接的片上BRAM存儲(chǔ)器。 這個(gè)工具讀取ISE工具產(chǎn)生的硬件比特流文件 (system.bit),產(chǎn)生一個(gè)新的輸出比特流文件 (download.bit),這個(gè)比特流文件包含ELF文件。 這個(gè)工具使用BMM文件,該文件由Platgen產(chǎn)生,通 過(guò)使用每個(gè)BRAM塊的物理的布局信息由ISE工具更新。 在內(nèi)部,比特流初始化工具Bitinit使用在ISE中提供的 Data2MEM工具來(lái)更新比特流文件。,設(shè)計(jì)流程及EDK工具 -System ACE File Generator(Gen ACE),從FPGA比特流中產(chǎn)生 Xilinx System ACE配置文件和 ELF/數(shù)據(jù)文件。 產(chǎn)生的ACE文件用于配置FPGA,初始化BRAM,使 用有效的程序或數(shù)據(jù)初始化外部存儲(chǔ)器和啟動(dòng)處理器。 EDK提供了工具命令語(yǔ)言(Tool Command Language,Tcl)腳本,genace.tcl。該腳本使用XMD命令 產(chǎn)生ACE文件。 使用MDM系統(tǒng)可以為PowerPC或MicroBlaze產(chǎn)生ACE 文件。,設(shè)計(jì)流程及EDK工具 -Flash Memory Programmer,編程解決方案被設(shè)計(jì)成通用的,面向不同的Flash硬件 和布局。,設(shè)計(jì)流程及EDK工具 -Format Revision(revup)Tool and Version Management Wizard,格式版本工具revup更新已經(jīng)存在EDK工程到當(dāng)前的版 本。revup工具只執(zhí)行格式的變化,對(duì)設(shè)計(jì)不進(jìn)行更新。 在應(yīng)用revup前,備份MHS,MSS,XMP等文件。 當(dāng)使用新版本的EDK工具打開(kāi)老版本的工程時(shí),就會(huì) 顯示版本管理向?qū)А?當(dāng)執(zhí)行revup后,調(diào)用版本管理向?qū)?。向?qū)峁┯嘘P(guān)設(shè) 計(jì)中使用的Xilinx處理器IP核的變化信息。如果新版本的 IP核可以使用,向?qū)⑸?jí)到新的版本。,設(shè)計(jì)流程及EDK工具- LibXil Memory File System Generator (LibXil MFS),以文件句柄的形式提供管理程序存儲(chǔ)器的能力。設(shè) 計(jì)人員可以建立目錄,并在目錄中存放不同文件。文件 系統(tǒng)能通過(guò)使用高級(jí)C語(yǔ)言進(jìn)行函數(shù)調(diào)用來(lái)訪問(wèn)。,設(shè)計(jì)流程及EDK工具 -Platform Specification Utility,平臺(tái)規(guī)范工具能夠自動(dòng)產(chǎn)生建立IP核的MPD文件。通 過(guò)建立和導(dǎo)入外設(shè)向?qū)У膸椭軌蚴褂眠@個(gè)工具提供的 功能。,平臺(tái)產(chǎn)生器,硬件的產(chǎn)生是由平臺(tái)產(chǎn)生器(Platform Generator, Platgen)生成。 Platgen以硬件網(wǎng)表的形式(HDL和實(shí)現(xiàn)網(wǎng)表文件)建 立片上可編程系統(tǒng)。 Platgen使用MHS文件作為輸入并建立硬件平臺(tái)。除了 以NGC、EDIF等網(wǎng)表文件格式外,Platgen為下面的工具 和頂層的HDL封裝提供支持文件,可以使設(shè)計(jì)者添加其它 元件并且自動(dòng)的產(chǎn)生硬件平臺(tái)。,平臺(tái)產(chǎn)生器,當(dāng)運(yùn)行Platgen時(shí),F(xiàn)PGA的實(shí)現(xiàn)工具運(yùn)行完成硬件的 實(shí)現(xiàn)。 典型的,XPS為實(shí)現(xiàn)工具調(diào)用項(xiàng)目管理器(Project Navigator)前端,用于控制實(shí)現(xiàn)過(guò)程。 ISE流程結(jié)后,產(chǎn)生用于配置FPGA的比特流文件。這 個(gè)比特流文件包括為FPGA片上BRAM的初始化信息。 如果設(shè)計(jì)的代碼或數(shù)據(jù)必須在啟動(dòng)時(shí)放在這些存儲(chǔ)器 時(shí),Data2MEM工具使用包含在可執(zhí)行文件內(nèi)的代碼/數(shù)據(jù) 信息來(lái)更新比特流文件,這個(gè)可執(zhí)行文件在軟件應(yīng)用程序 建立和驗(yàn)證流程的結(jié)束時(shí)產(chǎn)生。,平臺(tái)產(chǎn)生器 -加載路徑,圖5.3給出了外設(shè)IP路徑的結(jié)構(gòu)。Platgen使用查 找優(yōu)先級(jí)機(jī)制來(lái)確定外設(shè)的位置:,平臺(tái)產(chǎn)生器 -加載路徑,(1)在工程目錄下,尋找pcore目錄 (2)通過(guò)-lp選項(xiàng)尋找指定的/pcores位置 (3)查找XILINX_EDK/hw/pcores 從pcores目錄中,外設(shè)的名字就是根目錄的名字。從根 目錄中,基本的目錄結(jié)構(gòu)為:data、hdl和netlist。,平臺(tái)產(chǎn)生器 -輸出文件,Platgen產(chǎn)生下面的文件和目錄:hdl、implementation和 synthesis。在工程目錄下,這是最基本的目錄結(jié)構(gòu)。 1、HDL目錄 HDL目錄包含下面的文件: 1)system.vhd|v:這是嵌入式處理器系統(tǒng)得HDL文件,該文件 在MHS中定義。該文件包含了IOB原語(yǔ)(當(dāng)指定-toplevel yes 選項(xiàng))。 2)system_stub.vhd|v:這是例化系統(tǒng)和IOB原語(yǔ)的頂層HDL文 件模版。使用這個(gè)文件作為設(shè)計(jì)者自己的頂層HDL設(shè)計(jì)文件 的開(kāi)始點(diǎn)(當(dāng)指定-toplevel no選項(xiàng))。否則,system.vhd|v 為頂層。,平臺(tái)產(chǎn)生器 -輸出文件,3)_wapper.vhd|v:在MHS中定義的單獨(dú)的IP元件 的HDL封裝文件。 2、Implementation目錄 該目錄包含peripheral_wrapper.ngc實(shí)現(xiàn)網(wǎng)表文件。 3、Synthesis目錄 該目錄包含system.prj|scr綜合工程文件;,平臺(tái)產(chǎn)生器-存儲(chǔ)器的產(chǎn)生 -BMM策略,Platgen在/implementation目錄下,產(chǎn)生 .bmm和_stub. Bmm。 (1)當(dāng)EDK是頂層系統(tǒng)時(shí),實(shí)現(xiàn)工具使用.bmm; (2)當(dāng)EDK是頂層系統(tǒng)的子模塊時(shí),實(shí)現(xiàn)工具使用 _stub.bmm;,平臺(tái)產(chǎn)生器-存儲(chǔ)器的產(chǎn)生 -BMM流程,EDK工具的實(shí)現(xiàn)工具流程采用了Data2MEM,下面給 出了其流程: 1)ngdbuild bm .bmm .ngc 2)map 3)par 4)bitgen bd .elf Bitgen輸出_bd.bmm,包含了BRAM的物理位 置。_bd.bmm和.bit文件輸入到 Data2MEM。Data2MEM將數(shù)據(jù)片斷轉(zhuǎn)換為正確的初始化 記錄,這些記錄用于Virtex系列的BRAM。,仿真模型產(chǎn)生器,仿真模型產(chǎn)生器(Simulation Model Generator, Simgen)為一個(gè)給定的硬件生成和配置不同的VHDL和 Verilog仿真模型。 MHS文件作為Simgen的輸入,MHS文件描述了硬 件元件的例化和連接。Simgen也為指定廠商的綜合工具生 成腳本。腳本編譯產(chǎn)生的仿真模型。,仿真庫(kù),仿真網(wǎng)表使用低層次的Xilinx FPGA可使用的硬件原 語(yǔ)。Xilinx為這些原語(yǔ)提供了仿真模型。下面介紹了Xilinx 的仿真流程中所使用的庫(kù)。HDL代碼必須參考相對(duì)應(yīng)的編 譯庫(kù)。 HDL仿真庫(kù)必須將邏輯庫(kù)與物理編譯的庫(kù)相對(duì)應(yīng)。 Xilinx的庫(kù)可以使用CompXLib工具進(jìn)行編譯。,仿真庫(kù) -UNISIM庫(kù),UNISIM庫(kù)是功能模型庫(kù),用于行為和結(jié)構(gòu)仿真。該 庫(kù)包含所有的Xilinx統(tǒng)一的庫(kù)元件,這些庫(kù)元件可以被大 部分的綜合工具識(shí)別。UNISIM庫(kù)也包含了那些通用的例 化元件,比如I/O和存儲(chǔ)器單元。 設(shè)計(jì)人員在設(shè)計(jì)中例化UNISIM庫(kù),并且在行為仿真 時(shí)進(jìn)行仿真。Simgen產(chǎn)生的結(jié)構(gòu)仿真模型例化UNISIM庫(kù) 元件。 在UNISIM庫(kù)中的所有元件都是0延遲的。所有的同步 元件有一個(gè)單位的延遲避免競(jìng)爭(zhēng)條件,對(duì)于同步元件的 clock-to-out延遲是100ps。,仿真庫(kù) -SIMPRIM庫(kù),SIMPRIM庫(kù)用于時(shí)序仿真。它包含所有的Xilinx實(shí)現(xiàn) 工具中使用的Xilinx的原語(yǔ)庫(kù)元件。Simgen產(chǎn)生的時(shí)序仿 真模型例化SIMPRIM庫(kù)元件。,仿真庫(kù) -XilinxCoreLib庫(kù),Xilinx的核產(chǎn)生器是一個(gè)圖形化的IP設(shè)計(jì)工具用來(lái)產(chǎn) 生高層次模塊,比如FIR濾波器,F(xiàn)IFOs,CAMs和其它高 級(jí)IP。設(shè)計(jì)人員可以定制和預(yù)優(yōu)化模塊來(lái)利用Xilinx FPGA芯片的固有的結(jié)構(gòu)特點(diǎn),比如,塊乘法器,SRL, 快速進(jìn)位邏輯和片上的單端口或雙端口RAM。 核產(chǎn)生器HDL庫(kù)模型用于行為仿真。設(shè)計(jì)人員選擇合 適的HDL模型添加到HDL設(shè)計(jì)中。模型不使用用于全局信 號(hào)的庫(kù)元件。,仿真庫(kù) - EDK庫(kù),EDK庫(kù)用于行為仿真。該庫(kù)保存了所有的EDK IP元 件,這些元件預(yù)編譯用于ModelSim SE、PE或NcSim。庫(kù) 免除了需要為每一個(gè)工程重新編譯EDK元件,減少了編譯 的時(shí)間。EDK IP元件庫(kù)只提供VHDL語(yǔ)言,并且可能加密。 未加密的EDK IP元件能使用Xilinx的CompEDKLib工 具編譯。對(duì)于加密的EDK IP元件提供了預(yù)編譯庫(kù)。,仿真模型產(chǎn)生器 -仿真模型,功能仿真設(shè)計(jì)輸入設(shè)計(jì)綜合設(shè)計(jì)網(wǎng)表設(shè)計(jì)實(shí)現(xiàn)設(shè)計(jì)實(shí) 現(xiàn)的網(wǎng)表時(shí)序仿真行為仿真結(jié)構(gòu)仿真圖4.4 FPGA設(shè)計(jì)仿 真階段 該部分介紹行為仿真模型、結(jié)構(gòu)仿真模型和時(shí)序仿真 模型。圖5.4給出了FPGA的設(shè)計(jì)仿真階段。在設(shè)計(jì)過(guò)程的 每個(gè)點(diǎn),Simgen建立一個(gè)合適的仿真模型模型。,仿真模型產(chǎn)生器 -仿真模型,仿真模型產(chǎn)生器 -行為模型,圖5.5給出了行為仿真模型。Simgen要求MHS文件作為 輸入。Simgen建立一系列的仿真模型??蛇x的,Simgen為 指定廠商的仿真器產(chǎn)生編譯腳本。如果指定,Simgen能用 數(shù)據(jù)產(chǎn)生HDL文件去初始化與存在設(shè)計(jì)中的BRAM相關(guān) 聯(lián)。這個(gè)數(shù)據(jù)從存在在可執(zhí)行和連接格式(ELF)文件中 得到。,仿真模型產(chǎn)生器 -行為模型,仿真模型產(chǎn)生器 -結(jié)構(gòu)模型,圖5.6所示,Simgen要求MHS文件和相關(guān)的綜合網(wǎng)表 文件作為輸入。從這些網(wǎng)表文件中建立一系列的HDL文 件結(jié)構(gòu)建模設(shè)計(jì)功能。Simgen可以為指定廠商的仿真器 產(chǎn)生一個(gè)編譯腳本。如果指定,Simgen能用數(shù)據(jù)產(chǎn)生 HDL文件去初始化與存在設(shè)計(jì)中的BRAM相關(guān)聯(lián)。這個(gè) 數(shù)據(jù)從存在在可執(zhí)行和連接格式(ELF)文件中得到。,仿真模型產(chǎn)生器 -結(jié)構(gòu)模型,仿真模型產(chǎn)生器 -時(shí)序模型,圖5.7所示,Simgen要求MHS文件和相關(guān)的實(shí)現(xiàn)網(wǎng)表 文件作為輸入。從這些網(wǎng)表文件中建立一個(gè)的HDL文件對(duì) 設(shè)計(jì)建模和包含合適的時(shí)序信息的SDF文件。Simgen可以 為指定廠商的仿真器產(chǎn)生一個(gè)編譯腳本。如果指定, Simgen能用數(shù)據(jù)產(chǎn)生HDL文件去初始化與存在設(shè)計(jì)中的 BRAM相關(guān)聯(lián)。這個(gè)數(shù)據(jù)從存在在可執(zhí)行和連接格式 (ELF)文件中得到。,仿真模型產(chǎn)生器 -時(shí)序模型,仿真模型產(chǎn)生器-輸出文件,Simgen在輸出目錄的仿真目錄下產(chǎn)生所有的仿真文件 和每個(gè)仿真模型的子目錄。 Output_directory/simulation/sim_model 當(dāng)Simgen成功執(zhí)行后,仿真目錄下包含下面的文件: (1)peripheral_wapper.vhd|v:每個(gè)元件的模塊化仿真文件。對(duì) 時(shí)序仿真不適用; (2)system_name.vhd|v:設(shè)計(jì)的頂層HDL (3)system_name.sdf:標(biāo)準(zhǔn)延遲格式sdf,包含合適的快和網(wǎng)絡(luò) 延遲,這些信息來(lái)自布局布線過(guò)程,只用于時(shí)序仿真; (4)system_name.do|sh:用于編譯HDL文件和編譯仿真模型 的腳本文件。,仿真模型產(chǎn)生器-輸出文件,(5) test_harness_setup.do|sh:建立仿真器的助手腳本,并且 指定了在波形窗口或者列表窗口顯示的信號(hào)。 (6)test_harness_wave.do|sv:koam;建立仿真波形顯示助手 腳本; (7)test_harness_list.do:建立仿真列表顯示助手腳本; (8)instance_wave.do|sv:為指定實(shí)例建立仿真波形顯示的助 手腳本; (9)instance_list.do:為指定實(shí)例建立列表顯示的助手腳本;,仿真模型產(chǎn)生器 -存儲(chǔ)器初始化,如果設(shè)計(jì)中包含存儲(chǔ)器時(shí),使用數(shù)據(jù)初始化相 應(yīng)的仿真模型。使用-pe選項(xiàng),可以指定與給定處 理器實(shí)例的ELF文件。通過(guò)選擇合適的GNU編譯 器,產(chǎn)生被編譯的可執(zhí)行文件。,庫(kù)產(chǎn)生器,庫(kù)產(chǎn)生器(Library Generator,Libgen)通常是第一 個(gè)工具用于配置庫(kù)和設(shè)備驅(qū)動(dòng)。Libgen使用設(shè)計(jì)人員建 立的MSS文件。MSS文件定義了與外設(shè),標(biāo)準(zhǔn)I/O設(shè)備, 中斷句柄例程和其它軟件特性相關(guān)的驅(qū)動(dòng)。Libgen使用 這些信息配置庫(kù)和驅(qū)動(dòng)。運(yùn)行 libgen options filename命 令來(lái)運(yùn)行庫(kù)產(chǎn)生器。,庫(kù)產(chǎn)生器加載路徑,庫(kù)產(chǎn)生器加載路徑,庫(kù)產(chǎn)生器輸出文件,Libgen在設(shè)計(jì)工程目錄下產(chǎn)生目錄和輸出文件。對(duì)于 MSS文件的每個(gè)處理器實(shí)例,Libgen產(chǎn)生和處理器實(shí)例名 字相對(duì)應(yīng)的目錄。在每一個(gè)處理器實(shí)例目錄下,Libgen產(chǎn) 生下面的目錄和文件:include目錄、lib目錄、libsrc目 錄、code目錄。,庫(kù)產(chǎn)生器輸出文件,1、include目錄 Include目錄包含驅(qū)動(dòng)程序必須的C頭文件。Libgen在這 個(gè)目錄下創(chuàng)建xparameter.h文件。該文件定義了系統(tǒng)中外 設(shè)的基地址,#define是驅(qū)動(dòng),OS,庫(kù)和用戶程序以及函 數(shù)原型所需要的。微處理器驅(qū)動(dòng)定義文件 (Microprocessor Driver Definition,MDD)為每一個(gè)驅(qū)動(dòng)指 定了定義,這些定義用于需要驅(qū)動(dòng)的外設(shè)。 2、lib目錄 lib目錄包含libc.a,libm.a和libxil.a庫(kù)。Libxil庫(kù)包含特 定處理器能夠訪問(wèn)的驅(qū)動(dòng)函數(shù)。,庫(kù)產(chǎn)生器輸出文件,3、libsrc目錄 Libsrc目錄包含中間文件和MAKE文件,這些文件是 用來(lái)編譯OS,庫(kù)和驅(qū)動(dòng)。該目錄包含外設(shè)指定的驅(qū)動(dòng)文 件,用于OS的BSP文件和庫(kù)文件。這些文件從EDK和設(shè)計(jì) 的驅(qū)動(dòng),OS和庫(kù)目錄中復(fù)制。 4、code目錄 該目錄包含EDK可執(zhí)行文件。Libgen在該目錄中創(chuàng)建 xmdstub.elf文件(該文件用于MicroBlaze的板上調(diào)試)。,庫(kù)產(chǎn)生器 生成庫(kù)和驅(qū)動(dòng) -基本觀點(diǎn),MHS和MSS文件定義了系統(tǒng)。對(duì)于系統(tǒng)中的每個(gè)處理 器,Libgen找到可尋址的外設(shè)清單。對(duì)于每一個(gè)處理器, 建立一個(gè)唯一的驅(qū)動(dòng)和庫(kù)的清單。Libgen為每個(gè)處理器完 成下面的過(guò)程:,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) -基本觀點(diǎn),(1)建立在輸出文件部分所定義的目錄結(jié)構(gòu) (2)為驅(qū)動(dòng),OS和庫(kù)拷貝必要的源文件到處理器實(shí)例指定的區(qū) 域:OUTPUT_DIR/ processor_instance_name/libsrc. (3)為處理器可見(jiàn)的每一個(gè)驅(qū)動(dòng)、OS和庫(kù)調(diào)用設(shè)計(jì)規(guī)則檢查 DRC程序(作為可選項(xiàng)在MDD/MLD文件中定義)。 (4)為處理器可見(jiàn)的每一個(gè)驅(qū)動(dòng)、OS和庫(kù)調(diào)用generate Tcl程 序。為每一個(gè)在include目錄下的驅(qū)動(dòng),OS和庫(kù)產(chǎn)生必要的 配置文件。 (5)為處理器可見(jiàn)的每一個(gè)驅(qū)動(dòng)、OS和庫(kù)調(diào)用post_generate Tcl程序(如果在和MDD和MLD相關(guān)的Tcl文件中定義),庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) -基本觀點(diǎn),(6)為處理器指定的OS,驅(qū)動(dòng)和庫(kù)運(yùn)行make。在UNIX平 臺(tái)下,使用gmake工具。在Windows環(huán)境下,make用于編 譯。 (7)為處理器指定的OS,驅(qū)動(dòng)和庫(kù)調(diào)用execs_generate Tcl 程序(如果在和MDD和MLD相關(guān)的Tcl文件中定義)。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) MDD/MLD和Tcl,一個(gè)驅(qū)動(dòng)或庫(kù)需要兩個(gè)數(shù)據(jù)文件關(guān)聯(lián): 1)數(shù)據(jù)定義文件(MDD或MLD文件):這個(gè)文件定義了用 于驅(qū)動(dòng)、OS和庫(kù)的可配置參數(shù); 2)數(shù)據(jù)產(chǎn)生文件(Tcl):這個(gè)文件使用了在MSS文件中配置 的參數(shù)(這些參數(shù)用于驅(qū)動(dòng)、OS或庫(kù))來(lái)產(chǎn)生數(shù)據(jù)。產(chǎn) 生的數(shù)據(jù)包括但不局限于產(chǎn)生頭文件,C文件,運(yùn)行 DRC,這些文件用于驅(qū)動(dòng)、OS或庫(kù)和產(chǎn)生可執(zhí)行文件。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) MDD/MLD和Tcl,Tcl文件包括Libgen在執(zhí)行不同級(jí)別時(shí)所調(diào)用的程序。 在Tcl中不同的程序包括: 1)DRC 在MDD/MLD中給出了DRC的名字 2)generate Libgen定義的程序,當(dāng)文件被拷貝后被調(diào)用 3)post_generate Libgen定義的程序,當(dāng)generate被調(diào)用后調(diào)用該 程序 4)execs_generate Libgen定義的程序,當(dāng)BSP,庫(kù)和驅(qū)動(dòng)產(chǎn)生后 調(diào)用該程序;,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) 驅(qū)動(dòng),大多數(shù)外設(shè)都需要軟件驅(qū)動(dòng)。MSS文件包含一個(gè)驅(qū)動(dòng) 塊用于每一個(gè)外設(shè)實(shí)例。塊包含對(duì)驅(qū)動(dòng)的名字 (DRIVER_NAME參數(shù))和版本(DRIVER_VER)參考。 這些參數(shù)沒(méi)有默認(rèn)值。驅(qū)動(dòng)LEVEL與所要求的驅(qū)動(dòng)功能 有關(guān)。驅(qū)動(dòng)目錄中為不同級(jí)的驅(qū)動(dòng)包含源文件和頭文 件,以及用于驅(qū)動(dòng)的MAKE文件。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) 驅(qū)動(dòng),驅(qū)動(dòng)有一個(gè)MDD文件和/或Tcl文件關(guān)聯(lián)。 MDD文件為驅(qū)動(dòng)指定了所有可配置的參數(shù)。這是數(shù) 據(jù)定義文件。每一個(gè)MDD文件有一個(gè)相關(guān)的Tcl文件。 Tcl文件產(chǎn)生數(shù)據(jù),其中包括頭文件的產(chǎn)生、C文件的 產(chǎn)生,用于運(yùn)行驅(qū)動(dòng)的DRC,產(chǎn)生可執(zhí)行文件。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) 驅(qū)動(dòng),設(shè)計(jì)者可以編寫(xiě)自己的驅(qū)動(dòng)。這些驅(qū)動(dòng)必須在一個(gè)指 定的目錄下 (YOUR_PROJECT /driver或library_name/drivers)。 DRIVER_NAME屬性允許設(shè)計(jì)人員為驅(qū)動(dòng)指定任何名 字(該名字也是驅(qū)動(dòng)目錄的名字)。源文件和MAKE文件 必須在DRIVER_NAMEsrc目錄下。MAKE應(yīng)該有對(duì)象 (include和libs)。每個(gè)驅(qū)動(dòng)應(yīng)該包含MDD文件和Tcl文件 (在data子目錄中)。參考已經(jīng)存在的EDK驅(qū)動(dòng)來(lái)了解驅(qū) 動(dòng)的結(jié)構(gòu)。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) 庫(kù),MSS文件為每一個(gè)庫(kù)包含一個(gè)庫(kù)塊。庫(kù)塊包含對(duì)庫(kù)名 字(LIBRARY_NAME參數(shù))和版本(LIBRARY_VER)參 考。這些參數(shù)沒(méi)有默認(rèn)值。庫(kù)目錄中包含用于庫(kù)的C源文 件、頭文件和MAKE文件。 MLD文件為每一個(gè)庫(kù)指定了可配置的選項(xiàng)。每個(gè) MLD文件都有Tcl文件與之關(guān)聯(lián)。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) 庫(kù),設(shè)計(jì)人員可以編寫(xiě)自己的庫(kù)。這些必須在一個(gè)指定的 目錄中(YOUR_PROJECT/sw _services或 library_name/sw_services)。LIBRARY_NAME屬性允許 設(shè)計(jì)人員為驅(qū)動(dòng)指定任何名字(該名字也是庫(kù)目錄的名 字)。源文件和MAKE文件必須在LIBRARY_NAMEsrc 目錄下。MAKE應(yīng)該有對(duì)象(include和libs)。每個(gè)庫(kù)應(yīng) 該包含MLD文件和Tcl文件(在data子目錄中)。參考已 經(jīng)存在的EDK庫(kù)來(lái)了解庫(kù)的結(jié)構(gòu)。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) OS Block,MSS文件包含為每個(gè)處理器實(shí)例包含一個(gè)OS塊。OS 塊包含對(duì)OS名字(OS_NAME參數(shù))和版本(OS_VER)參 考。這些參數(shù)沒(méi)有默認(rèn)值。bsp目錄中包含用于OS的C源 文件、頭文件和MAKE文件。 MLD文件為每一個(gè)OS指定了可配置的選項(xiàng)。每個(gè) MLD文件都有Tcl文件與之關(guān)聯(lián)。,庫(kù)產(chǎn)生器生成庫(kù)和驅(qū)動(dòng) OS Block,設(shè)計(jì)人員可以編寫(xiě)自己的OS。這些必須在一個(gè)指定的 目錄中(YOUR_PROJECT/bsp或library_name/bsp)。 OS_NAME屬性允許設(shè)計(jì)人員為OS指定任何名字(該名字 也是OS目錄的名字)。源文件和MAKE文件必須在 OS_NAMEsrc目錄下。MAKE應(yīng)該有對(duì)象(include和 libs)。每OS庫(kù)應(yīng)該包含MLD文件和Tcl文件(在data子目 錄中)。參考已經(jīng)存在的EDK的操作系統(tǒng)OS來(lái)了解OS的 結(jié)構(gòu)。,平臺(tái)規(guī)范工具,平臺(tái)說(shuō)明工具(Platform Specification Utility, PsfUtility)工具能自動(dòng)生成微處理器外設(shè)定義 (Microprocessor Peripheral Defination,MPD)文 件。MPD文件用于建立EDK相容的IP核。這個(gè)工具的 特性能通過(guò)XPS的創(chuàng)建和導(dǎo)入外設(shè)向?qū)В–reate and Import Peripheral Wizard)提供。,平臺(tái)規(guī)范工具,設(shè)計(jì)者使用psfUtility從IP核的VHDL規(guī)范來(lái)建立MPD 規(guī)范。建立核和通過(guò)EDK提供的步驟為: 1)用VHDL或Verilog語(yǔ)言編碼,對(duì)所有的總線信號(hào) (時(shí)鐘信號(hào)、復(fù)位信號(hào)和中斷信號(hào))使用嚴(yán)格的命名規(guī)范。 2)建立一個(gè)XST工程文件或者PAO文件,列出實(shí)現(xiàn)IP 的所有的HDL源文件。 3)通過(guò)提供XST工程文件或PAO文件使用PsfUtility工具。,FLASH存儲(chǔ)器編程 -flash編程,典型的,設(shè)計(jì)者可以對(duì)flash進(jìn)行下面進(jìn)行編程: 可執(zhí)行/可引導(dǎo)的應(yīng)用程序的映像文件 FPGA的硬件比特流文件 文件系統(tǒng)的映像,數(shù)據(jù)文件,例如簡(jiǎn)單數(shù)據(jù)和算法的表格,FLASH存儲(chǔ)器編程 -flash編程,第一種情況最普遍,當(dāng)處理器離開(kāi)復(fù)位狀態(tài)時(shí), 開(kāi)始執(zhí)行保存在處理器復(fù)位位置指定的BRAM內(nèi)的代 碼。 典型的,BRAM非常小以至于不能提供整個(gè)設(shè)計(jì) 的軟件應(yīng)用程序的映像。 因此,設(shè)計(jì)人員可以將軟件應(yīng)用程序的映像保存 在flash中。設(shè)計(jì)一個(gè)可以裝在BRAM內(nèi)的小的引導(dǎo)啟動(dòng) 代碼,離開(kāi)復(fù)位后,從flash中讀取軟件應(yīng)用程序的映 像文件,然后將其復(fù)制復(fù)制到外部的存儲(chǔ)器中,然后 將控制傳送到設(shè)計(jì)的軟件應(yīng)用程序中。,FLASH存儲(chǔ)器編程 -flash編程,設(shè)計(jì)人員通過(guò)工程所建立的軟件應(yīng)用程序是可執(zhí)行 的ELF格式。通常并不存儲(chǔ)和引導(dǎo)ELF映像文件本身, 這是因?yàn)閱?dòng)引導(dǎo)一個(gè)ELF映像文件會(huì)增加啟動(dòng)引導(dǎo)的 復(fù)雜度。取而代之的是,ELF的映像文件被轉(zhuǎn)化成一個(gè) 通用的引導(dǎo)啟動(dòng)映像格式,例如:SREC(Motorola-S記 錄格式)或IHEX,這樣啟動(dòng)引導(dǎo)就變得簡(jiǎn)單,代碼長(zhǎng)度 也減少了。,FLASH存儲(chǔ)器編程 -支持Flash硬件,FLASH存儲(chǔ)器編程對(duì)話框允許設(shè)計(jì)人員對(duì)板上的 外部CFI(Common Flash Interface,CFI)接口兼容的并行 存儲(chǔ)器進(jìn)行編程,方法是通過(guò)外部存儲(chǔ)器(Externel Memory Controller, EMC)IP核連接。編程方案被設(shè)計(jì) 成是通用的,并且面向不同F(xiàn)lash硬件和布局。,FLASH存儲(chǔ)器編程 -支持Flash硬件,通過(guò)與處理器連接的調(diào)試器來(lái)實(shí)現(xiàn)編程。XPS 或者SDK在目標(biāo)處理器上下載和執(zhí)行小的系統(tǒng)內(nèi) Flash編程存根(stub)。主機(jī)Tcl腳本使用命令驅(qū)動(dòng) 系統(tǒng)內(nèi)Flash編程存根(stub)來(lái)完成對(duì)Flash的編 程。對(duì)話框不處理或理解被編程的映像文件,只是 將其編程到flash存儲(chǔ)器上。設(shè)計(jì)的軟件應(yīng)用和硬件 設(shè)置必須推斷出編程所期望的文件內(nèi)容。表4.5給出 了所支持的Flash的配置。表5.6給出了CFI定義的命 令集。,FLASH存儲(chǔ)器編程 -支持Flash硬件,FLASH存儲(chǔ)器編程 -支持Flash硬件,FLASH存儲(chǔ)器編程 -支持Flash硬件,默認(rèn)情況下,flashwriter程序只支持那些CFI設(shè)備, 即其扇區(qū)映射匹配存放在CFI表中的內(nèi)容。一些flash廠 商知道在CFI中存放扇區(qū)映射,但是根據(jù)flash啟動(dòng)結(jié)構(gòu) 有所不同。 當(dāng)對(duì)flash進(jìn)行編程時(shí),假定滿足下面條件: (1)flash硬件假定在復(fù)位狀態(tài); (2)所有的flash扇區(qū)都假定在非保護(hù)狀態(tài); (3)flash編程存根不會(huì)解鎖或者初始化flash。如果flash不 在準(zhǔn)備狀態(tài)或者非鎖定狀態(tài)時(shí),將產(chǎn)生錯(cuò)誤報(bào)告。,FLASH存儲(chǔ)器編程 -編程的先決條件,在使用編程Flash存儲(chǔ)器對(duì)話框時(shí),必須滿足下面先決 條件: 1)在合適的EDK工程中,打開(kāi)對(duì)話框;對(duì)話框從當(dāng)前打開(kāi)的 EDK工程中推斷和使用數(shù)據(jù); 2)設(shè)計(jì)的硬件必須在flash和至少一個(gè)處理器之間通過(guò) PLB/AXI EMC外設(shè)正確的連接; 3)設(shè)計(jì)人員必須確認(rèn)通過(guò)JTAG和主機(jī)連接,使用工程 的比特流文件初始化FPGA,這是因?yàn)閷?duì)話框通過(guò)下載和 執(zhí)行flashwritter程序來(lái)工作。,FLASH存儲(chǔ)器編程 -編程的先決條件,4)必須使用XMD調(diào)試選項(xiàng)對(duì)話框來(lái)指定當(dāng)前設(shè)計(jì)的調(diào)試器的 信息。如果使用MicroBlaze處理器來(lái)編程flash存儲(chǔ)器,處理 器必須將MDM和flash連接。如果XMD STUB軟件插入的監(jiān) 視器用于與處理器的調(diào)試連接,則不能執(zhí)行flash編程操作。 5)在之前必須執(zhí)行產(chǎn)生庫(kù)和BSP的步驟,這是因?yàn)閒lashwritter使 用處理器的庫(kù)。 6)Flashwritter必須有至少8KB的空間。Flashwritter本身會(huì)占用一 大部分的儲(chǔ)存器。剩余的一大塊區(qū)域用于緩沖來(lái)自主機(jī)的比 特流。因此,當(dāng)分配給flashwritter的空間多余8KB時(shí),將大大 提高flashwritter的速度,這對(duì)于大的映像文件的編程是非常重 要的。,FLASH存儲(chǔ)器編程 -編程對(duì)話框,單擊TOOLS-Program Flash Memory來(lái)打開(kāi)編程Flash 存儲(chǔ)器對(duì)話框。在對(duì)話框下給出下面的信息。 1、需要編程的文件 通過(guò)瀏覽文件和選擇文件,或者給出文件的路徑,來(lái) 選擇需要編程到flash設(shè)備上的文件。,FLASH存儲(chǔ)器編程 -編程對(duì)話框,2、自動(dòng)轉(zhuǎn)換文件 選擇自動(dòng)轉(zhuǎn)換文件檢驗(yàn)欄(check box),當(dāng)文件要 編程到flash中時(shí),必須轉(zhuǎn)化和以映像文件的格式保存在 flash中。選擇映像文件的格式,比如,SREC。只有當(dāng) 編程的文件是ELF格式的時(shí)候,才可以使用自動(dòng)轉(zhuǎn)換文 件選項(xiàng)。 當(dāng)創(chuàng)建啟動(dòng)裝入(bootloader)代碼時(shí)或者將ELF格 式的啟動(dòng)裝入代碼轉(zhuǎn)換成普通的啟動(dòng)裝入映像格式 (SREC)時(shí),這個(gè)選項(xiàng)非常有用。,FLASH存儲(chǔ)器編程 -編程對(duì)話框,3、處理器實(shí)例 選擇通過(guò)EMC控制器和flash設(shè)備連接的處理器。這個(gè) 處理器將被用來(lái)執(zhí)行flashwriter程序。 4、Flash存儲(chǔ)器屬性 1)實(shí)例名字 選擇存儲(chǔ)器控制器的實(shí)例名,該控制器用來(lái)和目標(biāo)版上的flash 設(shè)備接口。 2)編程的偏移地址 選擇編程flash的偏移地址,在該偏移地址下開(kāi)始編程映像文 件。如果設(shè)計(jì)人員想在flash不同的區(qū)域編程不同的文件映像, 每次可以改變這個(gè)參數(shù)來(lái)選擇在flash內(nèi)不同的位置來(lái)編程文 件。,FLASH存儲(chǔ)器編程 -編程對(duì)話框,5、便箋式(Scratch Pad)存儲(chǔ)器屬性 選擇便箋式存儲(chǔ)器控制器的實(shí)例名,該控制器用來(lái)和 目標(biāo)版上的空閑的便箋式存儲(chǔ)器連接,而該存儲(chǔ)器用來(lái)存 儲(chǔ)flashwritter。該存儲(chǔ)器必須滿足前面的大小要求。不要 和flash選擇相同的存儲(chǔ)器控制器。 6、創(chuàng)建Flash啟動(dòng)代碼 選擇Create Flash Bootloader檢查欄來(lái)自動(dòng)的為該配置 創(chuàng)建啟動(dòng)裝入應(yīng)用程序。 在SW Application Project域內(nèi),指定啟動(dòng)裝入應(yīng)用程 序的名字。使用自動(dòng)產(chǎn)生的值來(lái)初始化啟動(dòng)裝入應(yīng)用程序 的名字,如果需要的話,設(shè)計(jì)人員可以改變這個(gè)值。,FLASH存儲(chǔ)器編程 -編程對(duì)話框,7、編程存儲(chǔ)器 單擊Program Flash按鈕開(kāi)始flashwriter。對(duì)話框在XPS 控制臺(tái)釋放XMD。算法的剩余部分從控制臺(tái)執(zhí)行。,FLASH存儲(chǔ)器編程 -定制Flash編程,上面所介紹的編程flash的配置可能不適合設(shè)計(jì)者的要 求,比如,硬件和前面的CFI命令集不兼容或者存儲(chǔ)器大 小的限制。該部分簡(jiǎn)單的介紹flash編程的算法,設(shè)計(jì)人員 可以為特殊的配置進(jìn)行定制。 當(dāng)單擊Program Flash按鈕時(shí),產(chǎn)生下面的事件序列: 1、flash_params.tcl文件被寫(xiě)入到etc/文件夾下。這包含用來(lái)描 述flash編程會(huì)話的參數(shù),并且被Tcl文件使用。,FLASH存儲(chǔ)器編程 -定制Flash編程,2、XPS使用在XMD上執(zhí)行的Tcl腳本來(lái)發(fā)布XMD,比如: xmd tcl flashwriter.tcl 這個(gè)flashwriter主腳本來(lái)自安裝程序。當(dāng)運(yùn)行Program Flash按鈕 時(shí),如果運(yùn)行自己的驅(qū)動(dòng)腳本,需要在設(shè)計(jì)工程的根目錄下存放自 己的fashwriter.tcl腳本。XMD首先在該目錄下查找該腳本,然后才會(huì) 在其它目錄下查找該腳本;,FLASH存儲(chǔ)器編程 -定制Flash編程,3、flashwriter Tcl腳本從etc/flashwriter文件夾下拷貝flashwriter 應(yīng)用程序源代碼。在本地編譯應(yīng)用程序,在所選的便箋式存儲(chǔ)器 的地址范圍外執(zhí)行程序。如果希望編譯自己設(shè)計(jì)的flashwriter源代 碼,需要修改在本地工程文件夾下的fashwriter.tcl腳本,使其編譯自 己的flashwriter源代碼。,FLASH存儲(chǔ)器編程 -定制Flash編程,4、腳本下載flashwriter到處理器。通過(guò)存儲(chǔ)器內(nèi)的郵箱,腳本和 flashwriter程序通信。換句話說(shuō),根據(jù)在flashwriter地址空間的變量 寫(xiě)參數(shù)到存儲(chǔ)器位置,并且執(zhí)行flashwriter。 5、腳本在每個(gè)操作結(jié)束時(shí),等待flashwriter調(diào)用一個(gè)回調(diào)函數(shù), 通過(guò)在函數(shù)上設(shè)置斷點(diǎn),在回調(diào)函數(shù)時(shí)停止執(zhí)行程序。一旦 flashwriter停止執(zhí)行時(shí),主機(jī)上的Tcl將處理結(jié)果,并且繼續(xù)執(zhí)行更 多要求的命令;,FLASH存儲(chǔ)器編程 -定制Flash編程,6、當(dāng)編程時(shí),flashwriter只擦寫(xiě)那些需要保存映射文件的存儲(chǔ)器 區(qū)域; 7、如果試圖進(jìn)行一次編程,Tcl下載整個(gè)映像文件到存儲(chǔ)器中, 并且讓flashwriter完成編程操作。如果在流模式下編程,它反復(fù)的操 作(stream)映像文件的每一塊,并且讓flashwriter以大塊方式對(duì) flash編程。它在flashwriter內(nèi)的存儲(chǔ)器緩沖區(qū)保存這些大塊。 8、一旦編程完成,flashwriter Tcl發(fā)生退出命令到flashwriter,并 且終止XMD會(huì)話。,FLASH存儲(chǔ)器編程 -定制Flash編程,下面給出用于定制流程的步驟示例: 1從/data/xmd/flashwriter.tcl目錄復(fù)制 flashwriter.tcl到EDK的工程文件下; 2在EDK工程下建立sw_services目錄(如果不存在) 3復(fù)制/data/xmd/flashwriter目錄到sw_services目 錄; 4編輯flashwriter.tcl文件的行 set flashwriter_srcfile join $xilinx_edk “data” “xmd” “flashwriter” “src” 將其改為 set flashwriter_srcfile join “.” “sw_services” “flashwriter” “src”,FLASH存儲(chǔ)器編程 -定

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論