可编程片上系统开发平台1.ppt_第1页
可编程片上系统开发平台1.ppt_第2页
可编程片上系统开发平台1.ppt_第3页
可编程片上系统开发平台1.ppt_第4页
可编程片上系统开发平台1.ppt_第5页
已阅读5页,还剩202页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可编程片上系统开发平台,何宾 2012.02,本章内容,该章描述在Xilinx嵌入式开发套件(Xilinx Development Kit,XDK)嵌入式系统工具的结构和设计流 程。XDK用于开发基于MicroBlaze软核和PowerPC硬核处 理器的SOPC系统。该章的主要内容包括:EDK简介、设 计流程概述、平台开发结构的工具。 Xilinx的EDK工具主要包含:Xilinx Platfrom Studio (XPS)人机界面、嵌入式系统工具套件、嵌入式处理IP 核,例如处理器和外设、 Platform Studio SDK(Software Development Kit,SDK)。SDK基于Eclipse开放源码框 架,可以选择使用SDK开发自己的嵌入式软件应用程序 (从EDK13.1开始,必须在SDK内开发软件应用程序)。,设计流程及EDK工具 -设计流程,EDK中所提供的工具用来完成嵌入式设计的整个过 程。图5.1给出了基于EDK的基本嵌入式设计流程。,设计流程及EDK工具 -建立硬件平台,Xilinx的FPGA技术允许设计者在处理器子系统中定制 硬件逻辑。这种定制不可能使用标准的现成的微处理器或 控制器芯片。“硬件平台”是指设计人员根据应用的需要而 使用Xilinx的技术建立的灵活地、嵌入式处理子系统。 硬件平台是由一个或多个处理器或外设连接到处理器 总线构成的。 EDK通过微处理器硬件规范(Microprocessor Hardware Specification,MHS)文件记录硬件平台信息。,设计流程及EDK工具 -软件平台建立,软件平台是软件驱动和用于建立应用程序的操作系统 (可选)组成的。所建立的软件映像文件只包含用户所 使用到的一部分Xilinx的库。 EDK通过微处理器软件规范(Microprocessor Software Spectifcation,MSS)记录软件平台信息。设计 人员可以在软件平台运行多个应用程序。,设计流程及EDK工具 -使用仿真的硬件平台验证,验证硬件平台的正确功能,设计人员可以建立一个仿 真模型,并且在HDL仿真器上运行。当仿真系统时,处理 器运行可执行文件。 设计人员可以选择建立行为、结构或者精确的时序仿 真模型。,设计流程及EDK工具 -使用调试的软件验证,调试嵌入式软件的基本技术是加载设计到所支持的开 发板和使用调试工具去调试处理器。 作为可选择的方式,设计人员可以使用指令集仿真器 或简化系统仿真器模型(“虚拟平台”)运行在主机上来调 试设计代码。 设计人员可以通过概要分析代码的执行来估计系统性 能。,设计流程及EDK工具 -芯片配置,一旦软件和硬件平台建立完成,设计人员可以为FPGA 建立一个的配置比特文件。 对于原型设计,当连接主机和芯片时,设计者可以在 下载比特流时,将希望运行在嵌入式平台上的软件同时下 载。 对于产品,设计人员将配置比特流和软件保存在和 FPGA连接的非易失性存储器中。,设计流程及EDK工具 -EDK工具,图5.2 EDK工具的结构,设计流程及EDK工具 -EDK工具,设计流程及EDK工具 -EDK工具,设计流程及EDK工具 -EDK工具,设计流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供了集成环境为基于MicroBlaze和PowerPC处理 器的嵌入式处理器系统创建软件和硬件规范流程。 XPS也提供编辑器和项目管理接口用来创建和编辑源 代码。 XPS提供工具流程配置选项的定制和提供图形化的系 统编辑器用来连接处理器、外设和总线。 XPS可以在Windows、Solaris和Linux平台下使用。 从XPS中,设计人员可以运行所有的用于处理硬件和 软件的嵌入式系统工具。在XPS环境下可以进行系统的验 证。,设计流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供下面的特性: (1) 能够添加核,编辑核参数和进行总线和信号连接,产生MHS 文件; (2) 能够产生和修改MSS文件; (3) 支持表5.1内的所有工具; (4) 能够产生和观察系统块图和设计报告; (5) 多用户软件应用支持; (6) 项目管理; (7) 过程和工具流程依赖管理; (8) 输出MHS文件到SDK工具,设计流程及EDK工具 -Xilinx Software Development Kit(SDK),SDK工具是XPS的补充,SDK为应用软件提供开发环 境。SDK基于Eclipse开放源码标准。SDK主要有以下特 点: (1) 功能丰富的C/C+编辑器和编译环境; (2) 导入基于XPS生成的硬件平台定义; (3) 提供项目管理; (4)支持基于单个处理器或者多个处理器系统的软件应用程序的 开发; (5) 支持以团队环境的形式开发软件应用程序; (6)为第三方的操作系统创建和配置板级支持包BSP;,设计流程及EDK工具 -Xilinx Software Development Kit,SDK,(7)提供现成的简单软件工程来测试硬件和软件功能; (8)通过GUI接口为软件应用程序、编程FPGA芯片和编 程并行flash存储器产生链接脚本; (9)应用程序的建立配置和自动的MAKE文件生成; (10)错误浏览; (11)为无缝调试和概要分析目标提供了好的集成环境;,设计流程及EDK工具 -The Base System Builder(BSB) Wizard,BSB向导帮助设计人员快速建立一个嵌入式系统工 程。对于更复杂的工程,BSB向导提供基本的系统,通过 这个系统设计人员可以定制完成嵌入式设计。为了高效率 的建立工程,Xilinx推荐使用BSB向导。,设计流程及EDK工具 -The Base System Builder(BSB) Wizard,基于设计人员选择的板子,设计人员通过BSB选择并 配置基本的元素,比如:处理器类型、调试接口、缓存配 置、存储器类型和大小、外设等。 对于BSB不支持的目标系统,设计人员可以选择定制 板选项。使用这个选项时,必须指定未来板子的硬件,并 且要给出用户约束文件UCF。 如果选择的是支持的目标板,BSB向导自动的加入 UCF文件。当退出BSB时,BSB所建立的MHS和MSS文 件自动加入到XPS工程中,设计人员能在XPS中进行更进 一步的设计。,设计流程及EDK工具 - Platform Generator,Platgen,平台产生器Platgen将对嵌入式系统的高级描述编译成能 在目标FPGA芯片上实现的HDL网表。 嵌入式系统硬件平台典型的由一个或多个处理器和不同 的外设和存储器模块组成,这些模块通过处理器总线连 接。每个外设的IP核有很多的参数,通过调整这些参数来 定制行为。这些参数也用来为这些存储器和外设进行地址 映射。由于EDK提供可选择的特性,FPGA只需要实现应用 程序所要求的功能子集。 硬件平台保存了MHS文件。MHS文件是表示所设计的 嵌入式系统的硬件元件的最主要文件。MHS文件以ASCII码 形式存在。,设计流程及EDK工具 - Platform Generator(Platgen),Platgen读取MHS文件作为基本的设计输入。Platform 也从EDK库和用户IP库中读取不同的处理器核硬件描述文 件(MPD,PAO)。 Platgen为嵌入式系统产生顶层HDL设计文件,该文件 包含所有参数化了的IP核。 在这个过程中,将MHS中所有高层总线连接变成连接 处理器、外设和片上存储器的真实信号。它也调用XST编 译器综合每个例化的IP核(Platgen产生的系统级网表也用 来作为FPGA实现过程的一部分)。 此外,Platgen也产生BMM(BRAM Memory Map)文 件,该文件包含所用到的片上BRAM的地址。,设计流程及EDK工具 - 建立和导入IP向导,该向导帮助设计人员建立自己的外设并且将它们导入 相应的XPS工程中。 在创建模式下,创建和输入外设向导建立很多文件, 这些文件的一些是模板文件帮助设计人员实现外设,而不 需要详细的知道总线协议,命名规则和特殊接口文件的格 式。通过参考模板中的例子和使用不同的辅助设计支持文 件,设计人员可以很快的进行逻辑定制。 在导入模式下,该工具帮助设计人员建立接口文件和 目录结构。对于这种操作模式,必须遵守EDK的命名规 则。一旦导入完成,用户的定制外设在EDK外设库中可以 使用。,设计流程及EDK工具 -建立和导入IP向导,当创建或输入一个外设时,自动生成MPD (Microprocessor Peripheral Defination)文件和PAO (Peripheral Analyze Order)文件。MPD文件定义了外设 的接口,PAO文件通知其它工具(Platgen,Simgen),对 外设需要编译哪个HDL文件和以什么样的顺序编译。,设计流程及EDK工具 -配置协处理器向导,如果设计中包含MicroBlaze和PowerPC处理器时,可 以使用该向导。该向导添加和连接协处理器到CPU。协处 理器是一个硬件模块用来实现用户在FPGA内定义的功能 和通过FSL接口与处理器连接。FSL通道是一个专用的32 位,点对点的通信接口。,设计流程及EDK工具 -库产生器(Libgen),Libgen为嵌入式处理器系统配置库,设备驱动,文件系 统和中断句柄,以及创建板级支持包BSP。嵌入式软件平台 为每个处理器定义了系统内外设的驱动(板级支持包), 可选择的库,标准的输入/输出设备,中断句柄例程和其它 相关的软件特征。SDK工程进一步定义了运行在每个处理 器上的软件,这些软件基于BSP运行。,设计流程及EDK工具 -库产生器(Libgen),来自于EDK安装的库和驱动,以及设计人员提供的定 制库和驱动,SDK将用户程序,包括库和驱动程序编译 成处理器硬件平台上可执行可链接的文件(Executable Linked Format,ELF)。 Libgen读取选择的EDK库和不同的处理器核软件描述 文件(Microprocessor Driver Defination, MDD)和驱动代 码。,设计流程及EDK工具 - GNU编译工具(GCC),XPS调用GNU编译工具用于编译和链接应用程序。 1)对于MicroBlaze处理器的应用,XPS运行mb-gcc编 译器; 2)对于PowerPC处理器的应用,XPS运行powerpc-eabi- gcc编译器。 编译器能读取C代码,头文件和汇编代码。链接器将 编译的程序和选择的库连接在一起产生ELF可执行文件。 连接器也读取连接脚本(默认产生或用户产生)。,设计流程及EDK工具 -Xilinx Microprocessor Debugger(XMD),设计人员可以使用指令集仿真器或者虚拟平台调试软 件程序。XMD读ELF文件。对于调试物理的FPGA,XMD 和FPGA通讯使用和FPGA下载相同的电缆。,设计流程及EDK工具 -GNU调试器(GDB),GNU调试器是个强大和灵活的工具,它为在不同的开 发周期验证MicroBlaze和PowerPC系统提供了统一的调试 和验证手段。GDB使用了XMD作为最基本的引擎和处理 器目标通讯。,设计流程及EDK工具 - Simulation Model Generator(Simgen),仿真模型产生器Simgen为硬件产生和配置不同的模 型。为产生行为模型,Simgen使用MHS文件作为基本的 输入。为产生结构或时序模型,Simgen使用综合后或布局 布线后的设计数据库作为基本的输入。 Simgen为每个处理器也读取嵌入式应用ELF文件去初 始化片上存储器;这样处理器在仿真阶段就可以执行这些 软件代码。,设计流程及EDK工具 - Simulation Library Compiler(CompEDKLib),CompEDKLib使用不同仿真工具厂商提供的仿真器编译 EDK基于HDL的仿真库。这个工具可以运行在GUI和批处 理模式下。 在GUI模式下,允许设计人员使用CompXLib编译Xilinx 的库和EDK中可以使用的库。,设计流程及EDK工具 - Virtual Platform Generator(VPgen),虚拟平台是硬件系统的周期级的仿真模型。可以在主 机上用虚拟平台来调试和评估软件应用代码,而不需要得 到运行在原型板上的硬件。,设计流程及EDK工具 -Bus Functional Model Compiler(BFM),总线功能仿真简化了依附在总线上的硬件元件的验证。,设计流程及EDK工具 -Bitstream Initializer(Bitinit),比特流初始化工具使用软件信息来初始化与处理器 连接的片上BRAM存储器。 这个工具读取ISE工具产生的硬件比特流文件 (system.bit),产生一个新的输出比特流文件 (download.bit),这个比特流文件包含ELF文件。 这个工具使用BMM文件,该文件由Platgen产生,通 过使用每个BRAM块的物理的布局信息由ISE工具更新。 在内部,比特流初始化工具Bitinit使用在ISE中提供的 Data2MEM工具来更新比特流文件。,设计流程及EDK工具 -System ACE File Generator(Gen ACE),从FPGA比特流中产生 Xilinx System ACE配置文件和 ELF/数据文件。 产生的ACE文件用于配置FPGA,初始化BRAM,使 用有效的程序或数据初始化外部存储器和启动处理器。 EDK提供了工具命令语言(Tool Command Language,Tcl)脚本,genace.tcl。该脚本使用XMD命令 产生ACE文件。 使用MDM系统可以为PowerPC或MicroBlaze产生ACE 文件。,设计流程及EDK工具 -Flash Memory Programmer,编程解决方案被设计成通用的,面向不同的Flash硬件 和布局。,设计流程及EDK工具 -Format Revision(revup)Tool and Version Management Wizard,格式版本工具revup更新已经存在EDK工程到当前的版 本。revup工具只执行格式的变化,对设计不进行更新。 在应用revup前,备份MHS,MSS,XMP等文件。 当使用新版本的EDK工具打开老版本的工程时,就会 显示版本管理向导。 当执行revup后,调用版本管理向导。向导提供有关设 计中使用的Xilinx处理器IP核的变化信息。如果新版本的 IP核可以使用,向导将升级到新的版本。,设计流程及EDK工具- LibXil Memory File System Generator (LibXil MFS),以文件句柄的形式提供管理程序存储器的能力。设 计人员可以建立目录,并在目录中存放不同文件。文件 系统能通过使用高级C语言进行函数调用来访问。,设计流程及EDK工具 -Platform Specification Utility,平台规范工具能够自动产生建立IP核的MPD文件。通 过建立和导入外设向导的帮助,能够使用这个工具提供的 功能。,平台产生器,硬件的产生是由平台产生器(Platform Generator, Platgen)生成。 Platgen以硬件网表的形式(HDL和实现网表文件)建 立片上可编程系统。 Platgen使用MHS文件作为输入并建立硬件平台。除了 以NGC、EDIF等网表文件格式外,Platgen为下面的工具 和顶层的HDL封装提供支持文件,可以使设计者添加其它 元件并且自动的产生硬件平台。,平台产生器,当运行Platgen时,FPGA的实现工具运行完成硬件的 实现。 典型的,XPS为实现工具调用项目管理器(Project Navigator)前端,用于控制实现过程。 ISE流程结后,产生用于配置FPGA的比特流文件。这 个比特流文件包括为FPGA片上BRAM的初始化信息。 如果设计的代码或数据必须在启动时放在这些存储器 时,Data2MEM工具使用包含在可执行文件内的代码/数据 信息来更新比特流文件,这个可执行文件在软件应用程序 建立和验证流程的结束时产生。,平台产生器 -加载路径,图5.3给出了外设IP路径的结构。Platgen使用查 找优先级机制来确定外设的位置:,平台产生器 -加载路径,(1)在工程目录下,寻找pcore目录 (2)通过-lp选项寻找指定的/pcores位置 (3)查找XILINX_EDK/hw/pcores 从pcores目录中,外设的名字就是根目录的名字。从根 目录中,基本的目录结构为:data、hdl和netlist。,平台产生器 -输出文件,Platgen产生下面的文件和目录:hdl、implementation和 synthesis。在工程目录下,这是最基本的目录结构。 1、HDL目录 HDL目录包含下面的文件: 1)system.vhd|v:这是嵌入式处理器系统得HDL文件,该文件 在MHS中定义。该文件包含了IOB原语(当指定-toplevel yes 选项)。 2)system_stub.vhd|v:这是例化系统和IOB原语的顶层HDL文 件模版。使用这个文件作为设计者自己的顶层HDL设计文件 的开始点(当指定-toplevel no选项)。否则,system.vhd|v 为顶层。,平台产生器 -输出文件,3)_wapper.vhd|v:在MHS中定义的单独的IP元件 的HDL封装文件。 2、Implementation目录 该目录包含peripheral_wrapper.ngc实现网表文件。 3、Synthesis目录 该目录包含system.prj|scr综合工程文件;,平台产生器-存储器的产生 -BMM策略,Platgen在/implementation目录下,产生 .bmm和_stub. Bmm。 (1)当EDK是顶层系统时,实现工具使用.bmm; (2)当EDK是顶层系统的子模块时,实现工具使用 _stub.bmm;,平台产生器-存储器的产生 -BMM流程,EDK工具的实现工具流程采用了Data2MEM,下面给 出了其流程: 1)ngdbuild bm .bmm .ngc 2)map 3)par 4)bitgen bd .elf Bitgen输出_bd.bmm,包含了BRAM的物理位 置。_bd.bmm和.bit文件输入到 Data2MEM。Data2MEM将数据片断转换为正确的初始化 记录,这些记录用于Virtex系列的BRAM。,仿真模型产生器,仿真模型产生器(Simulation Model Generator, Simgen)为一个给定的硬件生成和配置不同的VHDL和 Verilog仿真模型。 MHS文件作为Simgen的输入,MHS文件描述了硬 件元件的例化和连接。Simgen也为指定厂商的综合工具生 成脚本。脚本编译产生的仿真模型。,仿真库,仿真网表使用低层次的Xilinx FPGA可使用的硬件原 语。Xilinx为这些原语提供了仿真模型。下面介绍了Xilinx 的仿真流程中所使用的库。HDL代码必须参考相对应的编 译库。 HDL仿真库必须将逻辑库与物理编译的库相对应。 Xilinx的库可以使用CompXLib工具进行编译。,仿真库 -UNISIM库,UNISIM库是功能模型库,用于行为和结构仿真。该 库包含所有的Xilinx统一的库元件,这些库元件可以被大 部分的综合工具识别。UNISIM库也包含了那些通用的例 化元件,比如I/O和存储器单元。 设计人员在设计中例化UNISIM库,并且在行为仿真 时进行仿真。Simgen产生的结构仿真模型例化UNISIM库 元件。 在UNISIM库中的所有元件都是0延迟的。所有的同步 元件有一个单位的延迟避免竞争条件,对于同步元件的 clock-to-out延迟是100ps。,仿真库 -SIMPRIM库,SIMPRIM库用于时序仿真。它包含所有的Xilinx实现 工具中使用的Xilinx的原语库元件。Simgen产生的时序仿 真模型例化SIMPRIM库元件。,仿真库 -XilinxCoreLib库,Xilinx的核产生器是一个图形化的IP设计工具用来产 生高层次模块,比如FIR滤波器,FIFOs,CAMs和其它高 级IP。设计人员可以定制和预优化模块来利用Xilinx FPGA芯片的固有的结构特点,比如,块乘法器,SRL, 快速进位逻辑和片上的单端口或双端口RAM。 核产生器HDL库模型用于行为仿真。设计人员选择合 适的HDL模型添加到HDL设计中。模型不使用用于全局信 号的库元件。,仿真库 - EDK库,EDK库用于行为仿真。该库保存了所有的EDK IP元 件,这些元件预编译用于ModelSim SE、PE或NcSim。库 免除了需要为每一个工程重新编译EDK元件,减少了编译 的时间。EDK IP元件库只提供VHDL语言,并且可能加密。 未加密的EDK IP元件能使用Xilinx的CompEDKLib工 具编译。对于加密的EDK IP元件提供了预编译库。,仿真模型产生器 -仿真模型,功能仿真设计输入设计综合设计网表设计实现设计实 现的网表时序仿真行为仿真结构仿真图4.4 FPGA设计仿 真阶段 该部分介绍行为仿真模型、结构仿真模型和时序仿真 模型。图5.4给出了FPGA的设计仿真阶段。在设计过程的 每个点,Simgen建立一个合适的仿真模型模型。,仿真模型产生器 -仿真模型,仿真模型产生器 -行为模型,图5.5给出了行为仿真模型。Simgen要求MHS文件作为 输入。Simgen建立一系列的仿真模型。可选的,Simgen为 指定厂商的仿真器产生编译脚本。如果指定,Simgen能用 数据产生HDL文件去初始化与存在设计中的BRAM相关 联。这个数据从存在在可执行和连接格式(ELF)文件中 得到。,仿真模型产生器 -行为模型,仿真模型产生器 -结构模型,图5.6所示,Simgen要求MHS文件和相关的综合网表 文件作为输入。从这些网表文件中建立一系列的HDL文 件结构建模设计功能。Simgen可以为指定厂商的仿真器 产生一个编译脚本。如果指定,Simgen能用数据产生 HDL文件去初始化与存在设计中的BRAM相关联。这个 数据从存在在可执行和连接格式(ELF)文件中得到。,仿真模型产生器 -结构模型,仿真模型产生器 -时序模型,图5.7所示,Simgen要求MHS文件和相关的实现网表 文件作为输入。从这些网表文件中建立一个的HDL文件对 设计建模和包含合适的时序信息的SDF文件。Simgen可以 为指定厂商的仿真器产生一个编译脚本。如果指定, Simgen能用数据产生HDL文件去初始化与存在设计中的 BRAM相关联。这个数据从存在在可执行和连接格式 (ELF)文件中得到。,仿真模型产生器 -时序模型,仿真模型产生器-输出文件,Simgen在输出目录的仿真目录下产生所有的仿真文件 和每个仿真模型的子目录。 Output_directory/simulation/sim_model 当Simgen成功执行后,仿真目录下包含下面的文件: (1)peripheral_wapper.vhd|v:每个元件的模块化仿真文件。对 时序仿真不适用; (2)system_name.vhd|v:设计的顶层HDL (3)system_name.sdf:标准延迟格式sdf,包含合适的快和网络 延迟,这些信息来自布局布线过程,只用于时序仿真; (4)system_name.do|sh:用于编译HDL文件和编译仿真模型 的脚本文件。,仿真模型产生器-输出文件,(5) test_harness_setup.do|sh:建立仿真器的助手脚本,并且 指定了在波形窗口或者列表窗口显示的信号。 (6)test_harness_wave.do|sv:koam;建立仿真波形显示助手 脚本; (7)test_harness_list.do:建立仿真列表显示助手脚本; (8)instance_wave.do|sv:为指定实例建立仿真波形显示的助 手脚本; (9)instance_list.do:为指定实例建立列表显示的助手脚本;,仿真模型产生器 -存储器初始化,如果设计中包含存储器时,使用数据初始化相 应的仿真模型。使用-pe选项,可以指定与给定处 理器实例的ELF文件。通过选择合适的GNU编译 器,产生被编译的可执行文件。,库产生器,库产生器(Library Generator,Libgen)通常是第一 个工具用于配置库和设备驱动。Libgen使用设计人员建 立的MSS文件。MSS文件定义了与外设,标准I/O设备, 中断句柄例程和其它软件特性相关的驱动。Libgen使用 这些信息配置库和驱动。运行 libgen options filename命 令来运行库产生器。,库产生器加载路径,库产生器加载路径,库产生器输出文件,Libgen在设计工程目录下产生目录和输出文件。对于 MSS文件的每个处理器实例,Libgen产生和处理器实例名 字相对应的目录。在每一个处理器实例目录下,Libgen产 生下面的目录和文件:include目录、lib目录、libsrc目 录、code目录。,库产生器输出文件,1、include目录 Include目录包含驱动程序必须的C头文件。Libgen在这 个目录下创建xparameter.h文件。该文件定义了系统中外 设的基地址,#define是驱动,OS,库和用户程序以及函 数原型所需要的。微处理器驱动定义文件 (Microprocessor Driver Definition,MDD)为每一个驱动指 定了定义,这些定义用于需要驱动的外设。 2、lib目录 lib目录包含libc.a,libm.a和libxil.a库。Libxil库包含特 定处理器能够访问的驱动函数。,库产生器输出文件,3、libsrc目录 Libsrc目录包含中间文件和MAKE文件,这些文件是 用来编译OS,库和驱动。该目录包含外设指定的驱动文 件,用于OS的BSP文件和库文件。这些文件从EDK和设计 的驱动,OS和库目录中复制。 4、code目录 该目录包含EDK可执行文件。Libgen在该目录中创建 xmdstub.elf文件(该文件用于MicroBlaze的板上调试)。,库产生器 生成库和驱动 -基本观点,MHS和MSS文件定义了系统。对于系统中的每个处理 器,Libgen找到可寻址的外设清单。对于每一个处理器, 建立一个唯一的驱动和库的清单。Libgen为每个处理器完 成下面的过程:,库产生器生成库和驱动 -基本观点,(1)建立在输出文件部分所定义的目录结构 (2)为驱动,OS和库拷贝必要的源文件到处理器实例指定的区 域:OUTPUT_DIR/ processor_instance_name/libsrc. (3)为处理器可见的每一个驱动、OS和库调用设计规则检查 DRC程序(作为可选项在MDD/MLD文件中定义)。 (4)为处理器可见的每一个驱动、OS和库调用generate Tcl程 序。为每一个在include目录下的驱动,OS和库产生必要的 配置文件。 (5)为处理器可见的每一个驱动、OS和库调用post_generate Tcl程序(如果在和MDD和MLD相关的Tcl文件中定义),库产生器生成库和驱动 -基本观点,(6)为处理器指定的OS,驱动和库运行make。在UNIX平 台下,使用gmake工具。在Windows环境下,make用于编 译。 (7)为处理器指定的OS,驱动和库调用execs_generate Tcl 程序(如果在和MDD和MLD相关的Tcl文件中定义)。,库产生器生成库和驱动 MDD/MLD和Tcl,一个驱动或库需要两个数据文件关联: 1)数据定义文件(MDD或MLD文件):这个文件定义了用 于驱动、OS和库的可配置参数; 2)数据产生文件(Tcl):这个文件使用了在MSS文件中配置 的参数(这些参数用于驱动、OS或库)来产生数据。产 生的数据包括但不局限于产生头文件,C文件,运行 DRC,这些文件用于驱动、OS或库和产生可执行文件。,库产生器生成库和驱动 MDD/MLD和Tcl,Tcl文件包括Libgen在执行不同级别时所调用的程序。 在Tcl中不同的程序包括: 1)DRC 在MDD/MLD中给出了DRC的名字 2)generate Libgen定义的程序,当文件被拷贝后被调用 3)post_generate Libgen定义的程序,当generate被调用后调用该 程序 4)execs_generate Libgen定义的程序,当BSP,库和驱动产生后 调用该程序;,库产生器生成库和驱动 驱动,大多数外设都需要软件驱动。MSS文件包含一个驱动 块用于每一个外设实例。块包含对驱动的名字 (DRIVER_NAME参数)和版本(DRIVER_VER)参考。 这些参数没有默认值。驱动LEVEL与所要求的驱动功能 有关。驱动目录中为不同级的驱动包含源文件和头文 件,以及用于驱动的MAKE文件。,库产生器生成库和驱动 驱动,驱动有一个MDD文件和/或Tcl文件关联。 MDD文件为驱动指定了所有可配置的参数。这是数 据定义文件。每一个MDD文件有一个相关的Tcl文件。 Tcl文件产生数据,其中包括头文件的产生、C文件的 产生,用于运行驱动的DRC,产生可执行文件。,库产生器生成库和驱动 驱动,设计者可以编写自己的驱动。这些驱动必须在一个指 定的目录下 (YOUR_PROJECT /driver或library_name/drivers)。 DRIVER_NAME属性允许设计人员为驱动指定任何名 字(该名字也是驱动目录的名字)。源文件和MAKE文件 必须在DRIVER_NAMEsrc目录下。MAKE应该有对象 (include和libs)。每个驱动应该包含MDD文件和Tcl文件 (在data子目录中)。参考已经存在的EDK驱动来了解驱 动的结构。,库产生器生成库和驱动 库,MSS文件为每一个库包含一个库块。库块包含对库名 字(LIBRARY_NAME参数)和版本(LIBRARY_VER)参 考。这些参数没有默认值。库目录中包含用于库的C源文 件、头文件和MAKE文件。 MLD文件为每一个库指定了可配置的选项。每个 MLD文件都有Tcl文件与之关联。,库产生器生成库和驱动 库,设计人员可以编写自己的库。这些必须在一个指定的 目录中(YOUR_PROJECT/sw _services或 library_name/sw_services)。LIBRARY_NAME属性允许 设计人员为驱动指定任何名字(该名字也是库目录的名 字)。源文件和MAKE文件必须在LIBRARY_NAMEsrc 目录下。MAKE应该有对象(include和libs)。每个库应 该包含MLD文件和Tcl文件(在data子目录中)。参考已 经存在的EDK库来了解库的结构。,库产生器生成库和驱动 OS Block,MSS文件包含为每个处理器实例包含一个OS块。OS 块包含对OS名字(OS_NAME参数)和版本(OS_VER)参 考。这些参数没有默认值。bsp目录中包含用于OS的C源 文件、头文件和MAKE文件。 MLD文件为每一个OS指定了可配置的选项。每个 MLD文件都有Tcl文件与之关联。,库产生器生成库和驱动 OS Block,设计人员可以编写自己的OS。这些必须在一个指定的 目录中(YOUR_PROJECT/bsp或library_name/bsp)。 OS_NAME属性允许设计人员为OS指定任何名字(该名字 也是OS目录的名字)。源文件和MAKE文件必须在 OS_NAMEsrc目录下。MAKE应该有对象(include和 libs)。每OS库应该包含MLD文件和Tcl文件(在data子目 录中)。参考已经存在的EDK的操作系统OS来了解OS的 结构。,平台规范工具,平台说明工具(Platform Specification Utility, PsfUtility)工具能自动生成微处理器外设定义 (Microprocessor Peripheral Defination,MPD)文 件。MPD文件用于建立EDK相容的IP核。这个工具的 特性能通过XPS的创建和导入外设向导(Create and Import Peripheral Wizard)提供。,平台规范工具,设计者使用psfUtility从IP核的VHDL规范来建立MPD 规范。建立核和通过EDK提供的步骤为: 1)用VHDL或Verilog语言编码,对所有的总线信号 (时钟信号、复位信号和中断信号)使用严格的命名规范。 2)建立一个XST工程文件或者PAO文件,列出实现IP 的所有的HDL源文件。 3)通过提供XST工程文件或PAO文件使用PsfUtility工具。,FLASH存储器编程 -flash编程,典型的,设计者可以对flash进行下面进行编程: 可执行/可引导的应用程序的映像文件 FPGA的硬件比特流文件 文件系统的映像,数据文件,例如简单数据和算法的表格,FLASH存储器编程 -flash编程,第一种情况最普遍,当处理器离开复位状态时, 开始执行保存在处理器复位位置指定的BRAM内的代 码。 典型的,BRAM非常小以至于不能提供整个设计 的软件应用程序的映像。 因此,设计人员可以将软件应用程序的映像保存 在flash中。设计一个可以装在BRAM内的小的引导启动 代码,离开复位后,从flash中读取软件应用程序的映 像文件,然后将其复制复制到外部的存储器中,然后 将控制传送到设计的软件应用程序中。,FLASH存储器编程 -flash编程,设计人员通过工程所建立的软件应用程序是可执行 的ELF格式。通常并不存储和引导ELF映像文件本身, 这是因为启动引导一个ELF映像文件会增加启动引导的 复杂度。取而代之的是,ELF的映像文件被转化成一个 通用的引导启动映像格式,例如:SREC(Motorola-S记 录格式)或IHEX,这样启动引导就变得简单,代码长度 也减少了。,FLASH存储器编程 -支持Flash硬件,FLASH存储器编程对话框允许设计人员对板上的 外部CFI(Common Flash Interface,CFI)接口兼容的并行 存储器进行编程,方法是通过外部存储器(Externel Memory Controller, EMC)IP核连接。编程方案被设计 成是通用的,并且面向不同Flash硬件和布局。,FLASH存储器编程 -支持Flash硬件,通过与处理器连接的调试器来实现编程。XPS 或者SDK在目标处理器上下载和执行小的系统内 Flash编程存根(stub)。主机Tcl脚本使用命令驱动 系统内Flash编程存根(stub)来完成对Flash的编 程。对话框不处理或理解被编程的映像文件,只是 将其编程到flash存储器上。设计的软件应用和硬件 设置必须推断出编程所期望的文件内容。表4.5给出 了所支持的Flash的配置。表5.6给出了CFI定义的命 令集。,FLASH存储器编程 -支持Flash硬件,FLASH存储器编程 -支持Flash硬件,FLASH存储器编程 -支持Flash硬件,默认情况下,flashwriter程序只支持那些CFI设备, 即其扇区映射匹配存放在CFI表中的内容。一些flash厂 商知道在CFI中存放扇区映射,但是根据flash启动结构 有所不同。 当对flash进行编程时,假定满足下面条件: (1)flash硬件假定在复位状态; (2)所有的flash扇区都假定在非保护状态; (3)flash编程存根不会解锁或者初始化flash。如果flash不 在准备状态或者非锁定状态时,将产生错误报告。,FLASH存储器编程 -编程的先决条件,在使用编程Flash存储器对话框时,必须满足下面先决 条件: 1)在合适的EDK工程中,打开对话框;对话框从当前打开的 EDK工程中推断和使用数据; 2)设计的硬件必须在flash和至少一个处理器之间通过 PLB/AXI EMC外设正确的连接; 3)设计人员必须确认通过JTAG和主机连接,使用工程 的比特流文件初始化FPGA,这是因为对话框通过下载和 执行flashwritter程序来工作。,FLASH存储器编程 -编程的先决条件,4)必须使用XMD调试选项对话框来指定当前设计的调试器的 信息。如果使用MicroBlaze处理器来编程flash存储器,处理 器必须将MDM和flash连接。如果XMD STUB软件插入的监 视器用于与处理器的调试连接,则不能执行flash编程操作。 5)在之前必须执行产生库和BSP的步骤,这是因为flashwritter使 用处理器的库。 6)Flashwritter必须有至少8KB的空间。Flashwritter本身会占用一 大部分的储存器。剩余的一大块区域用于缓冲来自主机的比 特流。因此,当分配给flashwritter的空间多余8KB时,将大大 提高flashwritter的速度,这对于大的映像文件的编程是非常重 要的。,FLASH存储器编程 -编程对话框,单击TOOLS-Program Flash Memory来打开编程Flash 存储器对话框。在对话框下给出下面的信息。 1、需要编程的文件 通过浏览文件和选择文件,或者给出文件的路径,来 选择需要编程到flash设备上的文件。,FLASH存储器编程 -编程对话框,2、自动转换文件 选择自动转换文件检验栏(check box),当文件要 编程到flash中时,必须转化和以映像文件的格式保存在 flash中。选择映像文件的格式,比如,SREC。只有当 编程的文件是ELF格式的时候,才可以使用自动转换文 件选项。 当创建启动装入(bootloader)代码时或者将ELF格 式的启动装入代码转换成普通的启动装入映像格式 (SREC)时,这个选项非常有用。,FLASH存储器编程 -编程对话框,3、处理器实例 选择通过EMC控制器和flash设备连接的处理器。这个 处理器将被用来执行flashwriter程序。 4、Flash存储器属性 1)实例名字 选择存储器控制器的实例名,该控制器用来和目标版上的flash 设备接口。 2)编程的偏移地址 选择编程flash的偏移地址,在该偏移地址下开始编程映像文 件。如果设计人员想在flash不同的区域编程不同的文件映像, 每次可以改变这个参数来选择在flash内不同的位置来编程文 件。,FLASH存储器编程 -编程对话框,5、便笺式(Scratch Pad)存储器属性 选择便笺式存储器控制器的实例名,该控制器用来和 目标版上的空闲的便笺式存储器连接,而该存储器用来存 储flashwritter。该存储器必须满足前面的大小要求。不要 和flash选择相同的存储器控制器。 6、创建Flash启动代码 选择Create Flash Bootloader检查栏来自动的为该配置 创建启动装入应用程序。 在SW Application Project域内,指定启动装入应用程 序的名字。使用自动产生的值来初始化启动装入应用程序 的名字,如果需要的话,设计人员可以改变这个值。,FLASH存储器编程 -编程对话框,7、编程存储器 单击Program Flash按钮开始flashwriter。对话框在XPS 控制台释放XMD。算法的剩余部分从控制台执行。,FLASH存储器编程 -定制Flash编程,上面所介绍的编程flash的配置可能不适合设计者的要 求,比如,硬件和前面的CFI命令集不兼容或者存储器大 小的限制。该部分简单的介绍flash编程的算法,设计人员 可以为特殊的配置进行定制。 当单击Program Flash按钮时,产生下面的事件序列: 1、flash_params.tcl文件被写入到etc/文件夹下。这包含用来描 述flash编程会话的参数,并且被Tcl文件使用。,FLASH存储器编程 -定制Flash编程,2、XPS使用在XMD上执行的Tcl脚本来发布XMD,比如: xmd tcl flashwriter.tcl 这个flashwriter主脚本来自安装程序。当运行Program Flash按钮 时,如果运行自己的驱动脚本,需要在设计工程的根目录下存放自 己的fashwriter.tcl脚本。XMD首先在该目录下查找该脚本,然后才会 在其它目录下查找该脚本;,FLASH存储器编程 -定制Flash编程,3、flashwriter Tcl脚本从etc/flashwriter文件夹下拷贝flashwriter 应用程序源代码。在本地编译应用程序,在所选的便笺式存储器 的地址范围外执行程序。如果希望编译自己设计的flashwriter源代 码,需要修改在本地工程文件夹下的fashwriter.tcl脚本,使其编译自 己的flashwriter源代码。,FLASH存储器编程 -定制Flash编程,4、脚本下载flashwriter到处理器。通过存储器内的邮箱,脚本和 flashwriter程序通信。换句话说,根据在flashwriter地址空间的变量 写参数到存储器位置,并且执行flashwriter。 5、脚本在每个操作结束时,等待flashwriter调用一个回调函数, 通过在函数上设置断点,在回调函数时停止执行程序。一旦 flashwriter停止执行时,主机上的Tcl将处理结果,并且继续执行更 多要求的命令;,FLASH存储器编程 -定制Flash编程,6、当编程时,flashwriter只擦写那些需要保存映射文件的存储器 区域; 7、如果试图进行一次编程,Tcl下载整个映像文件到存储器中, 并且让flashwriter完成编程操作。如果在流模式下编程,它反复的操 作(stream)映像文件的每一块,并且让flashwriter以大块方式对 flash编程。它在flashwriter内的存储器缓冲区保存这些大块。 8、一旦编程完成,flashwriter Tcl发生退出命令到flashwriter,并 且终止XMD会话。,FLASH存储器编程 -定制Flash编程,下面给出用于定制流程的步骤示例: 1从/data/xmd/flashwriter.tcl目录复制 flashwriter.tcl到EDK的工程文件下; 2在EDK工程下建立sw_services目录(如果不存在) 3复制/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存储器编程 -定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论