资源预览内容
第1页 / 共207页
第2页 / 共207页
第3页 / 共207页
第4页 / 共207页
第5页 / 共207页
第6页 / 共207页
第7页 / 共207页
第8页 / 共207页
第9页 / 共207页
第10页 / 共207页
亲,该文档总共207页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
可编程片上系统开发平台 何宾2012.02拙犁苹刽篷葱贿褐丢棋驭爵心淘攀响锣挠判鲤猖搜荧傈愈观豹带忠毡倾京可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件本章内容 该章描述在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内开发软件应用程序)。簿壁典边算述攫般皱首矾吐曝啤贫毫哨琳察寻宰绽脸片牡格遍遇凄舱叮程可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-设计流程 EDK中所提供的工具用来完成嵌入式设计的整个过程。图5.1给出了基于EDK的基本嵌入式设计流程。 图图5.1 EDK嵌入式设计流程嵌入式设计流程处理器硬件开发处理器硬件开发验证文件生成验证文件生成设计实现设计实现芯片配置芯片配置软件开发软件开发软件调试软件调试软件统计分析软件统计分析芯片配置芯片配置SDK软件开发工具软件开发工具ISE 设计套件设计套件嵌入式和系统版本嵌入式和系统版本也也包包括括在在ISE 设设计计套套件件嵌入式和系统版本中嵌入式和系统版本中硬件硬件平台平台量虹朗砂韵售骨彰笆寐扒或桃啄秃棒锰营疹台钎终春睡吾陪沛沥鼻斌路儡可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-建立硬件平台 Xilinx的FPGA技术允许设计者在处理器子系统中定制硬件逻辑。这种定制不可能使用标准的现成的微处理器或控制器芯片。“硬件平台”是指设计人员根据应用的需要而使用Xilinx的技术建立的灵活地、嵌入式处理子系统。 硬件平台是由一个或多个处理器或外设连接到处理器总线构成的。 EDK通过微处理器硬件规范(Microprocessor Hardware Specification,MHS)文件记录硬件平台信息。藐甸念脸唐淆骆嗡扬搔徒芥梆惨橡攘瓤簿钓渗豪篆痔羌韶臂敲硬疗袜西荔可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-软件平台建立 软件平台是软件驱动和用于建立应用程序的操作系统(可选)组成的。所建立的软件映像文件只包含用户所使用到的一部分Xilinx的库。 EDK通过微处理器软件规范(Microprocessor Software Spectifcation,MSS)记录软件平台信息。设计人员可以在软件平台运行多个应用程序。仙井仕鉴镐衅汲险洪映小凸留义尔防摘疽词刹憨荔菩腋炔傈贝碴霜剃秦畏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-使用仿真的硬件平台验证 验证硬件平台的正确功能,设计人员可以建立一个仿真模型,并且在HDL仿真器上运行。当仿真系统时,处理器运行可执行文件。 设计人员可以选择建立行为、结构或者精确的时序仿真模型。磐碌逊骂碘斟球跳臂袋瞥间沧选宛柔急僵鞭滥妥牙豢奉筷嘻秒死剁陡浪唇可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-使用调试的软件验证 调试嵌入式软件的基本技术是加载设计到所支持的开发板和使用调试工具去调试处理器。 作为可选择的方式,设计人员可以使用指令集仿真器或简化系统仿真器模型(“虚拟平台”)运行在主机上来调试设计代码。 设计人员可以通过概要分析代码的执行来估计系统性能。掣狼嫩幽峰裹军铃竣腮耻敢谩约帽坠靡工噪奸幽午配植际夷询柑濒孕速樱可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-芯片配置 一旦软件和硬件平台建立完成,设计人员可以为FPGA建立一个的配置比特文件。 对于原型设计,当连接主机和芯片时,设计者可以在下载比特流时,将希望运行在嵌入式平台上的软件同时下载。 对于产品,设计人员将配置比特流和软件保存在和FPGA连接的非易失性存储器中。忘酿颓胸田变宜珠卞抓钾辆奸注异臣面白斧刘群盛聪琴援曼瑞摊挪劈漓迢可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-EDK工具图5.2 EDK工具的结构绝莫再况爆缴捞维夺蒜泛票雨粥凄祸狰录黔赁谭杰已滥鲁镀圭斧究腑摄铰可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-EDK工具设计环境境Xilinx Platform Studio(XPS)集成集成设计环境境GUI,在,在这个集成个集成环境中可以境中可以创建完建完整的嵌入式整的嵌入式设计。Xilinx Software Development Kit(SDK)集成集成设计环境境GUI,是,是对XPS的的补充,用来帮助充,用来帮助设计人人员开开发软件件应用功能(从用功能(从13.1开始,开始,专用于用于软件件应用的开用的开发)。)。EDK命令行或命令行或“非非Windows”模式模式允允许设计人人员运行嵌入式运行嵌入式设计流程或从命令行改流程或从命令行改变工具工具选项。硬件开硬件开发The Base System Builder(BSB)向向导通通过使用支持的开使用支持的开发板或通用的基本功能,允板或通用的基本功能,允许设计人人员快速地建立一个嵌入式快速地建立一个嵌入式设计。Xilinx推荐推荐使用使用BSB建立最初的建立最初的项目目创建。建。The Create and Import IP Wizard辅助助设计人人员添加自己的外添加自己的外设到到设计中。建立相关中。建立相关的目的目录或数据文件,保或数据文件,保证外外设能被能被EDK工具工具识别。Configure Coprocessor Wizard帮助帮助设计人人员添加添加协处理器到理器到CPU。Platform Generator(Platgen)以以HDL或或实现的网表文件在片上构造可的网表文件在片上构造可编程系程系统午宫疗气花隶匀革放村姜瘦别保峭妙盆郝禾堆且擞类宫邹希塔妻匙促疽届可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-EDK工具软件开件开发Library Generator(Libgen)构建一个构建一个软件平台,件平台,该软件平台由定制的件平台由定制的软件件库、驱动程序和程序和OS构成。构成。GNU Compiler Tools(GCC)基于基于库产生器建立的平台,建立生器建立的平台,建立软件件应用程序。用程序。验证Xilinx Microprocessor Debugger(XMD)打开打开shell用于用于软件下件下载和和调试,也提供通道用于,也提供通道用于GNU调试器器访问设备。GNU Debugger(GDB)调试软件的件的GUI,基于仿真模型或目,基于仿真模型或目标设备。Simulation Model Generator(Simgen)产生硬件仿真模型和生硬件仿真模型和编译脚本文件用于脚本文件用于对完整系完整系统的仿真。的仿真。Simulation Library Compiler(CompEDKLib)在开始在开始对设计进行仿真行仿真时,为目目标仿真器仿真器编译EDK仿真仿真库。Bus Functional Model Compiler(BFM)通通过建立一个建立一个总线环境的模型去代替真境的模型去代替真实的嵌入的嵌入式系式系统来帮助来帮助简化定制外化定制外设的的验证。勤冒娥沏关淀拉孤撒滨怂凑焚秽菊鼎敷侦鼎汁川汐诣国界兹盟诞鸣滓启结可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-EDK工具设备配置配置Bitstream Initializer(Bitinit)更新更新FPGA的配置比特流,用可的配置比特流,用可执行的行的软件初始件初始化片上指令存化片上指令存储器器System ACE File Generator(GenACE)基于基于FPGA的配置比特流和存的配置比特流和存储在非易失性存在非易失性存储器的可器的可执行行软件,件,产生一个生一个Xilinx系系统ACE配置配置文件文件Flash Memory Programmer允允许设计人人员使用目使用目标处理器去理器去编程板上的通用程板上的通用Flash(CFI)接口)接口-兼容的并行兼容的并行flash杂项类Format Revision(revup)Tool and Version Management WizardRevup工具更新工具更新设计文件(例如文件(例如MHS)到当前的)到当前的版本。版本管理向版本。版本管理向导帮助将先前帮助将先前EDK建立的建立的IP和和驱动更新到当前的版本。更新到当前的版本。LibXil Memory File System Generator (LibXil MFS)在主机上建立一个在主机上建立一个MFS存存储器器镜像,像,该镜像并被像并被下下载到嵌入式系到嵌入式系统存存储器。器。Platform Specification Utility自自动产生微生微处理器外理器外设定定义MPD数据文件,数据文件,该文文件要求件要求创建建EDK兼容的制定外兼容的制定外设。哩捎肥氛嘱钨盛倘纠节其清坞级称嵌瞳岁碘析迫弥擞猛拐范棋淬闽吓碟迷可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Xilinx Platform Studio(XPS) XPS提供了集成环境为基于MicroBlaze和PowerPC处理器的嵌入式处理器系统创建软件和硬件规范流程。 XPS也提供编辑器和项目管理接口用来创建和编辑源代码。 XPS提供工具流程配置选项的定制和提供图形化的系统编辑器用来连接处理器、外设和总线。 XPS可以在Windows、Solaris和Linux平台下使用。 从XPS中,设计人员可以运行所有的用于处理硬件和软件的嵌入式系统工具。在XPS环境下可以进行系统的验证。接以谨贿粕悲涪钡拣孜噶恕作坏阅馅争巩戍悼阂虱他猛艺郴蛀浸荫怕扫统可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Xilinx Platform Studio(XPS)XPS提供下面的特性: (1) 能够添加核,编辑核参数和进行总线和信号连接,产生MHS 文件; (2) 能够产生和修改MSS文件; (3) 支持表5.1内的所有工具; (4) 能够产生和观察系统块图和设计报告; (5) 多用户软件应用支持; (6) 项目管理; (7) 过程和工具流程依赖管理; (8) 输出MHS文件到SDK工具缮富硝琶踢贯嗽激庙韭幌升确豁筷瞬咸酶未塌颁墙剔季判翼膛辕隙苏孺主可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Xilinx Software Development Kit(SDK) SDK工具是XPS的补充,SDK为应用软件提供开发环境。SDK基于Eclipse开放源码标准。SDK主要有以下特点: (1) 功能丰富的C/C+编辑器和编译环境; (2) 导入基于XPS生成的硬件平台定义; (3) 提供项目管理; (4)支持基于单个处理器或者多个处理器系统的软件应用程序的 开发; (5) 支持以团队环境的形式开发软件应用程序; (6)为第三方的操作系统创建和配置板级支持包BSP;爪远拨换登阶粤胡整呼则门评乱努胶瓦竭通何肛私崩故皱绒篓矮茄叔情廷可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Xilinx Software Development Kit,SDK (7)提供现成的简单软件工程来测试硬件和软件功能; (8)通过GUI接口为软件应用程序、编程FPGA芯片和编 程并行flash存储器产生链接脚本; (9)应用程序的建立配置和自动的MAKE文件生成; (10)错误浏览; (11)为无缝调试和概要分析目标提供了好的集成环境;腥奈巴牛梗佐狰济矩鼓孽瞬土展越剥渣惺镑军尸洞喂妒梆违名痒涂无苹带可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-The Base System Builder(BSB) Wizard BSB向导帮助设计人员快速建立一个嵌入式系统工程。对于更复杂的工程,BSB向导提供基本的系统,通过这个系统设计人员可以定制完成嵌入式设计。为了高效率的建立工程,Xilinx推荐使用BSB向导。钵迅百葛剃示繁降常旗冕羞实扯酪铀肄裹宁撩拈蔗棱郧端烧根呐喊请狞敛可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-The Base System Builder(BSB) Wizard 基于设计人员选择的板子,设计人员通过BSB选择并配置基本的元素,比如:处理器类型、调试接口、缓存配置、存储器类型和大小、外设等。 对于BSB不支持的目标系统,设计人员可以选择定制板选项。使用这个选项时,必须指定未来板子的硬件,并且要给出用户约束文件UCF。 如果选择的是支持的目标板,BSB向导自动的加入UCF文件。当退出BSB时,BSB所建立的MHS和MSS文件自动加入到XPS工程中,设计人员能在XPS中进行更进一步的设计。拥乱彰酞炔讳瞳果秽阐永滚碉汤寇颜界胁古码鸵症熟莎攒灭酝荚滓开逝帖可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Platform Generator,Platgen 平台产生器Platgen将对嵌入式系统的高级描述编译成能在目标FPGA芯片上实现的HDL网表。 嵌入式系统硬件平台典型的由一个或多个处理器和不同的外设和存储器模块组成,这些模块通过处理器总线连接。每个外设的IP核有很多的参数,通过调整这些参数来定制行为。这些参数也用来为这些存储器和外设进行地址映射。由于EDK提供可选择的特性,FPGA只需要实现应用程序所要求的功能子集。 硬件平台保存了MHS文件。MHS文件是表示所设计的嵌入式系统的硬件元件的最主要文件。MHS文件以ASCII码形式存在。藉俊鸡亡负孤慷豪氛篱怠沈粮羔桌盗妖锁垒羊载绍郭惰沪垣著欣逞痞靴择可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及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的地址。 掉牌趴哉淘艺竣上乘岿立爵读姻畴榜疏牧篱更德廊埠支缨峙庶阔妮勾隆明可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- 建立和导入IP向导 该向导帮助设计人员建立自己的外设并且将它们导入相应的XPS工程中。 在创建模式下,创建和输入外设向导建立很多文件,这些文件的一些是模板文件帮助设计人员实现外设,而不需要详细的知道总线协议,命名规则和特殊接口文件的格式。通过参考模板中的例子和使用不同的辅助设计支持文件,设计人员可以很快的进行逻辑定制。 在导入模式下,该工具帮助设计人员建立接口文件和目录结构。对于这种操作模式,必须遵守EDK的命名规则。一旦导入完成,用户的定制外设在EDK外设库中可以使用。泞于募尘骨烯鳃絮侩雹雄封脚验拧沫彝鹰坷曝宗蹈房谜欣朽资傣胁含戮戏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-建立和导入IP向导 当创建或输入一个外设时,自动生成MPD(Microprocessor Peripheral Defination)文件和PAO(Peripheral Analyze Order)文件。MPD文件定义了外设的接口,PAO文件通知其它工具(Platgen,Simgen),对外设需要编译哪个HDL文件和以什么样的顺序编译。赞府查磨故北鸣模庸执奉肚奎勾采脆阴揭绰氓谚烈柳留矢钩局博庙为沤阻可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-配置协处理器向导 如果设计中包含MicroBlaze和PowerPC处理器时,可以使用该向导。该向导添加和连接协处理器到CPU。协处理器是一个硬件模块用来实现用户在FPGA内定义的功能和通过FSL接口与处理器连接。FSL通道是一个专用的32位,点对点的通信接口。悸蛔叁杂霄可寇质帕蓬拂冀腋奔悄囊陷辅绅秽解了粉舔芽瞥伟绕炳吐舟张可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-库产生器(Libgen) Libgen为嵌入式处理器系统配置库,设备驱动,文件系统和中断句柄,以及创建板级支持包BSP。嵌入式软件平台为每个处理器定义了系统内外设的驱动(板级支持包),可选择的库,标准的输入/输出设备,中断句柄例程和其它相关的软件特征。SDK工程进一步定义了运行在每个处理器上的软件,这些软件基于BSP运行。 筐舒吏锈豺孟抿炊虐梁芯乌膘陛戴题亭擦铸聋捏掉诗园有央粪签菠疼寻骗可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-库产生器(Libgen) 来自于EDK安装的库和驱动,以及设计人员提供的定制库和驱动,SDK将用户程序,包括库和驱动程序编译成处理器硬件平台上可执行可链接的文件(Executable Linked Format,ELF)。 Libgen读取选择的EDK库和不同的处理器核软件描述文件(Microprocessor Driver Defination, MDD)和驱动代码。剥秉打舅父唐屯撂肺功劈涅吊提躲撩暗歌钩疆镁讯故逗蛹莽饱浚茅训多恍可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- GNU编译工具(GCC) XPS调用GNU编译工具用于编译和链接应用程序。 1)对于MicroBlaze处理器的应用,XPS运行mb-gcc编译器; 2)对于PowerPC处理器的应用,XPS运行powerpc-eabi-gcc编译器。 编译器能读取C代码,头文件和汇编代码。链接器将编译的程序和选择的库连接在一起产生ELF可执行文件。连接器也读取连接脚本(默认产生或用户产生)。峨吞需涸臀矽遏主郁污橱魔蔓基侯戳件舔臼将购册攒员畴铁窥狈秽榜镁祸可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Xilinx Microprocessor Debugger(XMD) 设计人员可以使用指令集仿真器或者虚拟平台调试软件程序。XMD读ELF文件。对于调试物理的FPGA,XMD和FPGA通讯使用和FPGA下载相同的电缆。 厩杀定扑呸绢翌殿豹彝幢樟滞轻廖渗桩窖足啊构犁堑渴疟信蚂谐录羔皿唉可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-GNU调试器(GDB) GNU调试器是个强大和灵活的工具,它为在不同的开发周期验证MicroBlaze和PowerPC系统提供了统一的调试和验证手段。GDB使用了XMD作为最基本的引擎和处理器目标通讯。笆雁能呀绸癸纬捂钞倒史虏江贬啪穆毫彤苦挣窖稼泣梁磐橇顽筷周久钳伍可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Simulation Model Generator(Simgen) 仿真模型产生器Simgen为硬件产生和配置不同的模型。为产生行为模型,Simgen使用MHS文件作为基本的输入。为产生结构或时序模型,Simgen使用综合后或布局布线后的设计数据库作为基本的输入。 Simgen为每个处理器也读取嵌入式应用ELF文件去初始化片上存储器;这样处理器在仿真阶段就可以执行这些软件代码。襟侨纶饺父债振赡剃顶贪尚柱风贾急陀亨俊削当滴懈耀剥熟颁辈龚乱霖篡可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Simulation Library Compiler(CompEDKLib) CompEDKLib使用不同仿真工具厂商提供的仿真器编译EDK基于HDL的仿真库。这个工具可以运行在GUI和批处理模式下。 在GUI模式下,允许设计人员使用CompXLib编译Xilinx的库和EDK中可以使用的库。甄颗曲走椎沼隘算厂涂孕叮猫两藕靡逞脓姨摩做虚闲订黎撩殃躺敲有尼躲可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具- Virtual Platform Generator(VPgen) 虚拟平台是硬件系统的周期级的仿真模型。可以在主机上用虚拟平台来调试和评估软件应用代码,而不需要得到运行在原型板上的硬件。纹孪融役柒贱饲哈粤雨勋私鞋梦啤啪蝎芭边藐皂携麻捅钓潜夏臆贪讼得舱可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Bus Functional Model Compiler(BFM) 总线功能仿真简化了依附在总线上的硬件元件的验证。 盯底筐崭耀遥家绚烤巨烂纳鼓梭铸视透笆砂匣掷监酿讲嫁挫扒店勉舰锭惑可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Bitstream Initializer(Bitinit) 比特流初始化工具使用软件信息来初始化与处理器连接的片上BRAM存储器。 这个工具读取ISE工具产生的硬件比特流文件(system.bit),产生一个新的输出比特流文件(download.bit),这个比特流文件包含ELF文件。 这个工具使用BMM文件,该文件由Platgen产生,通过使用每个BRAM块的物理的布局信息由ISE工具更新。在内部,比特流初始化工具Bitinit使用在ISE中提供的Data2MEM工具来更新比特流文件。驴沪牌赖浓帅拆张参凭荫睦吹征需呆采副乒树辊葫抬娃嚣轴柠百喧志孪筷可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及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文件。朱佰如央衍昌亲趣眉刁先惊鳞沮剂络南嘱勃堡幢音樱暗谨邪狙籽瘤服康梦可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Flash Memory Programmer 编程解决方案被设计成通用的,面向不同的Flash硬件和布局。肪锚茹峙邯污莆盖券耗偶傀纳炉预属四特碰溶稚怨吐做剃径摘煮晕遣鬼玫可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Format Revision(revup)Tool and Version Management Wizard 格式版本工具revup更新已经存在EDK工程到当前的版本。revup工具只执行格式的变化,对设计不进行更新。在应用revup前,备份MHS,MSS,XMP等文件。 当使用新版本的EDK工具打开老版本的工程时,就会显示版本管理向导。 当执行revup后,调用版本管理向导。向导提供有关设计中使用的Xilinx处理器IP核的变化信息。如果新版本的IP核可以使用,向导将升级到新的版本。馏詹乌毅泡联凯拱列连噬肇令师缴凯蔗畜离珐赃私署藐谷玩久泞樟矽侦揩可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-LibXil Memory File System Generator(LibXil MFS) 以文件句柄的形式提供管理程序存储器的能力。设计人员可以建立目录,并在目录中存放不同文件。文件系统能通过使用高级C语言进行函数调用来访问。杭躲济娃悸贰洼宰紧絮宿沃奠乍备惮蛔蹦岁麦栓立对杭敛圈姿蕾抛菩拎丧可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件设计流程及EDK工具-Platform Specification Utility 平台规范工具能够自动产生建立IP核的MPD文件。通过建立和导入外设向导的帮助,能够使用这个工具提供的功能。辅摊窃诱砾岗告镭呸娠施奠妒勋耕痢履些熏挑讥嗓喉快俘株彪楷睁桩涕教可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器 硬件的产生是由平台产生器(Platform Generator, Platgen)生成。 Platgen以硬件网表的形式(HDL和实现网表文件)建立片上可编程系统。 Platgen使用MHS文件作为输入并建立硬件平台。除了以NGC、EDIF等网表文件格式外,Platgen为下面的工具和顶层的HDL封装提供支持文件,可以使设计者添加其它元件并且自动的产生硬件平台。啤怨菩萄顶浊堰莱敖葡滦素题习溯颓菏透忧火罩撵搐百策葛闺咋季岂陀蜒可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器 当运行Platgen时,FPGA的实现工具运行完成硬件的实现。 典型的,XPS为实现工具调用项目管理器(Project Navigator)前端,用于控制实现过程。 ISE流程结后,产生用于配置FPGA的比特流文件。这个比特流文件包括为FPGA片上BRAM的初始化信息。 如果设计的代码或数据必须在启动时放在这些存储器时,Data2MEM工具使用包含在可执行文件内的代码/数据信息来更新比特流文件,这个可执行文件在软件应用程序建立和验证流程的结束时产生。钾镀瞻假板契最绵瞬常馏锻倪哉沂雌威靡于术劫岩梗菜洋对岭呈玲雍圭椭可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-加载路径 图5.3给出了外设IP路径的结构。Platgen使用查找优先级机制来确定外设的位置:-lpboardsdriverspcoressw_services 图图5.3 外设路径结构外设路径结构辛恳哼过丢嵌导蒜躺象孤禁驯划惊组笨栗草岸蚕赠茂硬慨缅悠惶叭泰咯去可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-加载路径 (1)在工程目录下,寻找pcore目录 (2)通过-lp选项寻找指定的/pcores位置 (3)查找XILINX_EDK/hw/pcores 从pcores目录中,外设的名字就是根目录的名字。从根目录中,基本的目录结构为:data、hdl和netlist。磋奉与扫琳焰屡眠哗蔚裙哲冰榆征邀玉袖枝钾萌痪朴佰栅辖狡榴阎嚣寓笛可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-输出文件 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 为顶层。 牡讹越稳甄炮俩怕菠远总诌邹而嫡芬滩扭试芋拐鸭弘损拒赤耀嘛何叶额黄可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-输出文件 3)_wapper.vhd|v:在MHS中定义的单独的IP元件 的HDL封装文件。 2、Implementation目录 该目录包含peripheral_wrapper.ngc实现网表文件。 3、Synthesis目录 该目录包含system.prj|scr综合工程文件;劝丁窥熄某祟陛雇韧听蛔助豫吵膛寿夜驭应掺厂胺锤筷燎书遍唬复沉屹经可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-存储器的产生-BMM策略 Platgen在/implementation目录下,产生.bmm和_stub. Bmm。(1)当EDK是顶层系统时,实现工具使用.bmm;(2)当EDK是顶层系统的子模块时,实现工具使用 _stub.bmm;浓株滩钦里哟棋艳示途汪譬尊亦咒毕挑踏悔补歇静缨峦旧嗽窑垒捏蓄槛氢可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台产生器-存储器的产生-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。衅眠半茎刮能拍个琅加蔽舌忙那蟹蒸倪课旗伦曹幻砰喘术励圈士晤符蝴埂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器 仿真模型产生器(Simulation Model Generator,Simgen)为一个给定的硬件生成和配置不同的VHDL和Verilog仿真模型。 MHS文件作为Simgen的输入,MHS文件描述了硬件元件的例化和连接。Simgen也为指定厂商的综合工具生成脚本。脚本编译产生的仿真模型。袍凋版桔斟闷坊典张析癣菏抓嚏认吉考绪筛带脐尊呛滴颂绑缚兑结饮白兹可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真库 仿真网表使用低层次的Xilinx FPGA可使用的硬件原语。Xilinx为这些原语提供了仿真模型。下面介绍了Xilinx的仿真流程中所使用的库。HDL代码必须参考相对应的编译库。 HDL仿真库必须将逻辑库与物理编译的库相对应。Xilinx的库可以使用CompXLib工具进行编译。滥尊碌斥侯渐蹦义苑舶律缨醇弃景札嫌么悍巴烤饶赚狞挟查蓬坐明习虱将可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真库-UNISIM库 UNISIM库是功能模型库,用于行为和结构仿真。该库包含所有的Xilinx统一的库元件,这些库元件可以被大部分的综合工具识别。UNISIM库也包含了那些通用的例化元件,比如I/O和存储器单元。 设计人员在设计中例化UNISIM库,并且在行为仿真时进行仿真。Simgen产生的结构仿真模型例化UNISIM库元件。 在UNISIM库中的所有元件都是0延迟的。所有的同步元件有一个单位的延迟避免竞争条件,对于同步元件的clock-to-out延迟是100ps。悦何愚逻肛席醒楚县捣串蔓葡塘埋懈淄纶尧嘲伺迄鳖饵央喀砖族约郧斋仿可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真库-SIMPRIM库 SIMPRIM库用于时序仿真。它包含所有的Xilinx实现工具中使用的Xilinx的原语库元件。Simgen产生的时序仿真模型例化SIMPRIM库元件。斡犊蔽撮柠其茄真界泥络乎尼俗赤怪烦断署月授牛呕菲颈潮且英还新嫌署可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真库-XilinxCoreLib库 Xilinx的核产生器是一个图形化的IP设计工具用来产生高层次模块,比如FIR滤波器,FIFOs,CAMs和其它高级IP。设计人员可以定制和预优化模块来利用Xilinx FPGA芯片的固有的结构特点,比如,块乘法器,SRL,快速进位逻辑和片上的单端口或双端口RAM。 核产生器HDL库模型用于行为仿真。设计人员选择合适的HDL模型添加到HDL设计中。模型不使用用于全局信号的库元件。厅排旧澄寻膀付径媒各千总籍概爸骗浙颊挽兵池缴模笑载椅艰罐醉炒糕鹿可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真库- EDK库 EDK库用于行为仿真。该库保存了所有的EDK IP元件,这些元件预编译用于ModelSim SE、PE或NcSim。库免除了需要为每一个工程重新编译EDK元件,减少了编译的时间。EDK IP元件库只提供VHDL语言,并且可能加密。 未加密的EDK IP元件能使用Xilinx的CompEDKLib工具编译。对于加密的EDK IP元件提供了预编译库。求障造免夯选淘祷蒋蒙泰斜螺启宛唐旦演尘但窗袱辗账屉咬福葡茬焙关智可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-仿真模型 功能仿真设计输入设计综合设计网表设计实现设计实现的网表时序仿真行为仿真结构仿真图4.4 FPGA设计仿真阶段 该部分介绍行为仿真模型、结构仿真模型和时序仿真模型。图5.4给出了FPGA的设计仿真阶段。在设计过程的每个点,Simgen建立一个合适的仿真模型模型。粕臆讼发澳加议沟酞儿州藩怕屏或已疙滦揪味邱诧挞山捻骗粒柳归沉责彤可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-仿真模型功能仿真设计输入设计输入设计综合设计综合设计网表设计网表设计实现设计实现设计实现的网表设计实现的网表时序仿真时序仿真行为仿真行为仿真结构仿真结构仿真图图5.4 FPGA设计仿真阶段设计仿真阶段撵溅肩移靳将锹垦秃烟绘潮居贺溉肩戴仅手卒直舷死紧孔绒盎谚贪髓霉拂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-行为模型 图5.5给出了行为仿真模型。Simgen要求MHS文件作为输入。Simgen建立一系列的仿真模型。可选的,Simgen为指定厂商的仿真器产生编译脚本。如果指定,Simgen能用数据产生HDL文件去初始化与存在设计中的BRAM相关联。这个数据从存在在可执行和连接格式(ELF)文件中得到。勺总拔寻哗矛仲盲访杠修物仓秆佣恒最耀洁阴退决箱蝎宿骗舱待寻翘焕互可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-行为模型MHSELFSimgenHDLScript图图5.5行为仿真模型产生行为仿真模型产生恬屹崎潭习滩舟残蘸缩丛赏利悠幻宋宏倾巳北街谋烁源煤拜挤勘古汾泳涨可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-结构模型 图5.6所示,Simgen要求MHS文件和相关的综合网表文件作为输入。从这些网表文件中建立一系列的HDL文件结构建模设计功能。Simgen可以为指定厂商的仿真器产生一个编译脚本。如果指定,Simgen能用数据产生HDL文件去初始化与存在设计中的BRAM相关联。这个数据从存在在可执行和连接格式(ELF)文件中得到。央旦湍萄媒勇伙猜惟训虱噬悟罕城善犊除清窘芝涉疏烃扯滩莽库典襟从哩可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-结构模型MHSELFSimgenHDLScript图图5.6 结构仿真模型产生结构仿真模型产生MHSNGC讼氟唯希陀黑闽牺痘柴淌元张羊课啡日舶歧梗锣蔓祥贩樟填伦痉签懊棍煞可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-时序模型 图5.7所示,Simgen要求MHS文件和相关的实现网表文件作为输入。从这些网表文件中建立一个的HDL文件对设计建模和包含合适的时序信息的SDF文件。Simgen可以为指定厂商的仿真器产生一个编译脚本。如果指定,Simgen能用数据产生HDL文件去初始化与存在设计中的BRAM相关联。这个数据从存在在可执行和连接格式(ELF)文件中得到。金谤掩燎饱浚佐急焚豫蚊证奉仆万嫌贝腮喂坷越锨妨罐橡奋渍曼狱微柄吮可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-时序模型MHSELFSimgenHDLScript图图5.7 结构仿真模型产生结构仿真模型产生MHSNGD候祖悸励肛堤窃绎酋唆水盘娃搽哪机哨稻咎缴粮疗立苛戴廉弘矛家边稼溜可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-输出文件 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文件和编译仿真模型 的脚本文件。疾妖烙卢乒率坍颁轰素汁孙耽纂类搭匈澈菲兆两恰饯辣目控诊颖摸移跑挑可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-输出文件 (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:为指定实例建立列表显示的助手脚本;弟痊辨膨溪缔漆末软缉灰育眺尾庞表倾毅兰店弦蓄硕软瞄箱价融蛙楷置几可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件仿真模型产生器-存储器初始化 如果设计中包含存储器时,使用数据初始化相应的仿真模型。使用-pe选项,可以指定与给定处理器实例的ELF文件。通过选择合适的GNU编译器,产生被编译的可执行文件。怖拆徐示嗽肩抬幌见碎途柠掣蛛英腥刚温堕邹赐辫捡余仅小试溺血沃洋吝可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器 库产生器(Library Generator,Libgen)通常是第一个工具用于配置库和设备驱动。Libgen使用设计人员建立的MSS文件。MSS文件定义了与外设,标准I/O设备,中断句柄例程和其它软件特性相关的驱动。Libgen使用这些信息配置库和驱动。运行 libgen options filename命令来运行库产生器。汪虐鉴揭帧屎烘煞炯笼讽娃病纽叭叶蹦鄙间厩羌边佣茅卵冈潦瞒掉唇篮脑可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器加载路径 -lpboardsdriverspcoressw_servicesbsp图图4.8 外设,驱动,库,外设,驱动,库,OS的目录结构的目录结构瞪辊痰暂预栗熄晤纳切附腺元簧圈熬衔乃柏扛钦绕弊郸醇消漱金邵鬃障彬可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器加载路径driverssw_servicesbsppcoressrcdata.c files.h filesMDDTclsrcdata.c files.h filesMLDTclsrcdata.c files.h filesMLDTclsrcdata.c files.h filesMDDTcl图图5.9 驱动驱动 OS和库的目录结构和库的目录结构癌唇凭续擦赞似瓶值季亥呻掂心情吉喷窥嘛渺埋钥赤斗策射蜂赛辆遏檬交可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器输出文件 Libgen在设计工程目录下产生目录和输出文件。对于MSS文件的每个处理器实例,Libgen产生和处理器实例名字相对应的目录。在每一个处理器实例目录下,Libgen产生下面的目录和文件:include目录、lib目录、libsrc目录、code目录。表跌摆椰绦亚悼掏淖槛蒂造镀寞粟激跑还哦杆醒纵映熏揉亏辞渡涌羡斥莲可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器输出文件 1、include目录 Include目录包含驱动程序必须的C头文件。Libgen在这个目录下创建xparameter.h文件。该文件定义了系统中外设的基地址,#define是驱动,OS,库和用户程序以及函数原型所需要的。微处理器驱动定义文件(Microprocessor Driver Definition,MDD)为每一个驱动指定了定义,这些定义用于需要驱动的外设。 2、lib目录 lib目录包含libc.a,libm.a和libxil.a库。Libxil库包含特定处理器能够访问的驱动函数。缝有彼栈抉蹿确扎破啤古袁吗镜沦粳搀猫祭朝桐乒荚艳宽测邓屿予辈炽验可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器输出文件 3、libsrc目录 Libsrc目录包含中间文件和MAKE文件,这些文件是用来编译OS,库和驱动。该目录包含外设指定的驱动文件,用于OS的BSP文件和库文件。这些文件从EDK和设计的驱动,OS和库目录中复制。 4、code目录 该目录包含EDK可执行文件。Libgen在该目录中创建xmdstub.elf文件(该文件用于MicroBlaze的板上调试)。谬佩勿啥计寒艳绪般熊胚棕邹氛货菠宏尉蔼栽奉挎锋址宅赌映癸蚌挺狮杖可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动-基本观点 MHS和MSS文件定义了系统。对于系统中的每个处理器,Libgen找到可寻址的外设清单。对于每一个处理器,建立一个唯一的驱动和库的清单。Libgen为每个处理器完成下面的过程:降鹰有曾虾裸欢凉贴缺外掸气华攫营欲例吟旧付芹脱脐猛戒络塑岔铭胳弃可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动-基本观点 (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文件中定义)柯芯惺漓遣中匆饯垦若陌僧婚豫燎盖售古谭证灿倒喜挠盟柒粪链踢饱怕勘可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动-基本观点 (6)为处理器指定的OS,驱动和库运行make。在UNIX平 台下,使用gmake工具。在Windows环境下,make用于编 译。 (7)为处理器指定的OS,驱动和库调用execs_generate Tcl 程序(如果在和MDD和MLD相关的Tcl文件中定义)。终严基疆谱邀迸惊耗泣岩羹罚摔个你尔坏荆乖瓷第盐肪圾席衅绞斤脊航蛰可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动MDD/MLD和Tcl 一个驱动或库需要两个数据文件关联: 1)数据定义文件(MDD或MLD文件):这个文件定义了用 于驱动、OS和库的可配置参数; 2)数据产生文件(Tcl):这个文件使用了在MSS文件中配置 的参数(这些参数用于驱动、OS或库)来产生数据。产 生的数据包括但不局限于产生头文件,C文件,运行 DRC,这些文件用于驱动、OS或库和产生可执行文件。铂效钞味耽移抠垛衙突绰澡锐友听豁梦佩爽汞分半批辨僳吏妻陪弗炼憾寞可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动MDD/MLD和Tcl Tcl文件包括Libgen在执行不同级别时所调用的程序。在Tcl中不同的程序包括: 1)DRC 在MDD/MLD中给出了DRC的名字 2)generate Libgen定义的程序,当文件被拷贝后被调用 3)post_generate Libgen定义的程序,当generate被调用后调用该 程序 4)execs_generate Libgen定义的程序,当BSP,库和驱动产生后 调用该程序;挺遇采颁地凑将高挟血婆桂逐能省御豺餐伯烁肉吸劈惊嘘垃壳抢啸沾阅爆可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动驱动 大多数外设都需要软件驱动。MSS文件包含一个驱动块用于每一个外设实例。块包含对驱动的名字(DRIVER_NAME参数)和版本(DRIVER_VER)参考。这些参数没有默认值。驱动LEVEL与所要求的驱动功能有关。驱动目录中为不同级的驱动包含源文件和头文件,以及用于驱动的MAKE文件。税猛茬揉仑抿珊箕们恤情妻讳省诽蕉绍慌皿抱舵孰凿逃晰脱瓢砒蕊防弛漫可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动驱动 驱动有一个MDD文件和/或Tcl文件关联。 MDD文件为驱动指定了所有可配置的参数。这是数据定义文件。每一个MDD文件有一个相关的Tcl文件。 Tcl文件产生数据,其中包括头文件的产生、C文件的产生,用于运行驱动的DRC,产生可执行文件。汗羹昨馁炬恬寸驼艾焊晚饰戳陷虽滓恨胚你棚连俄拎旭窜见径禾清虞凋暂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动驱动 设计者可以编写自己的驱动。这些驱动必须在一个指定的目录下 (YOUR_PROJECT /driver或library_name/drivers)。 DRIVER_NAME属性允许设计人员为驱动指定任何名字(该名字也是驱动目录的名字)。源文件和MAKE文件必须在DRIVER_NAMEsrc目录下。MAKE应该有对象(include和libs)。每个驱动应该包含MDD文件和Tcl文件(在data子目录中)。参考已经存在的EDK驱动来了解驱动的结构。委撬辅簿乔雄蜀鄙坯纽浚袱困酬絮酥秆布趁桑掐窥儡绣送吹津规终帛坠泥可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动库 MSS文件为每一个库包含一个库块。库块包含对库名字(LIBRARY_NAME参数)和版本(LIBRARY_VER)参考。这些参数没有默认值。库目录中包含用于库的C源文件、头文件和MAKE文件。 MLD文件为每一个库指定了可配置的选项。每个MLD文件都有Tcl文件与之关联。谭喇湘桨恍闷筛辱毫忱挝沽嚎揭纪奔勉共高争蝶疹筐斥占愚繁远拽犹宽秧可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动库 设计人员可以编写自己的库。这些必须在一个指定的目录中(YOUR_PROJECT/sw _services或library_name/sw_services)。LIBRARY_NAME属性允许设计人员为驱动指定任何名字(该名字也是库目录的名字)。源文件和MAKE文件必须在LIBRARY_NAMEsrc目录下。MAKE应该有对象(include和libs)。每个库应该包含MLD文件和Tcl文件(在data子目录中)。参考已经存在的EDK库来了解库的结构。貌曾吧刨喇疙魄秩馆牵悄淳稀矾贤啪船匠瞻诵图攻蜘素刺圭割斧迟耽古轩可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动OS Block MSS文件包含为每个处理器实例包含一个OS块。OS块包含对OS名字(OS_NAME参数)和版本(OS_VER)参考。这些参数没有默认值。bsp目录中包含用于OS的C源文件、头文件和MAKE文件。 MLD文件为每一个OS指定了可配置的选项。每个MLD文件都有Tcl文件与之关联。囚松茶忙蜘杭单姐劫笨闺椿臃蠢边郝媒篓糠牧装犀气祝荷宿疚天锨棚石奔可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件库产生器生成库和驱动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的结构。痒许群缉斥茎包忘酣弛字剥禽积提祟断惠窗笼促妻缔享酥侵踩级灶跟拙科可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台规范工具 平台说明工具(Platform Specification Utility,PsfUtility)工具能自动生成微处理器外设定义(Microprocessor Peripheral Defination,MPD)文件。MPD文件用于建立EDK相容的IP核。这个工具的特性能通过XPS的创建和导入外设向导(Create and Import Peripheral Wizard)提供。紫有拴药施门绷淫淹辑喘玩乏图胀诅副寿渭醋涛札憎氛只葱案或习价局当可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件平台规范工具 设计者使用psfUtility从IP核的VHDL规范来建立MPD规范。建立核和通过EDK提供的步骤为: 1)用VHDL或Verilog语言编码,对所有的总线信号 (时钟信号、复位信号和中断信号)使用严格的命名规范。 2)建立一个XST工程文件或者PAO文件,列出实现IP 的所有的HDL源文件。 3)通过提供XST工程文件或PAO文件使用PsfUtility工具。炽恶斯氛句磊搁泻野竭疚嘻与沿中腑芥拥屠逾吃督燕省溅纬刮汹沾拄霖丘可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-flash编程 典型的,设计者可以对flash进行下面进行编程:可执行/可引导的应用程序的映像文件FPGA的硬件比特流文件文件系统的映像,数据文件,例如简单数据和算法的表格眉和淤挠卉祁教档淀棍危玉蘸涸君盒志杏辣寸诺在渣煌茶挖洁惩咳袍键督可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-flash编程 第一种情况最普遍,当处理器离开复位状态时,开始执行保存在处理器复位位置指定的BRAM内的代码。 典型的,BRAM非常小以至于不能提供整个设计的软件应用程序的映像。 因此,设计人员可以将软件应用程序的映像保存在flash中。设计一个可以装在BRAM内的小的引导启动代码,离开复位后,从flash中读取软件应用程序的映像文件,然后将其复制复制到外部的存储器中,然后将控制传送到设计的软件应用程序中。梅员奥蜒秆圃彼习册英兢叮壳眉故虎泉耸藉樊料理署蛾牵瞥励彩臭馅右魂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-flash编程 设计人员通过工程所建立的软件应用程序是可执行的ELF格式。通常并不存储和引导ELF映像文件本身,这是因为启动引导一个ELF映像文件会增加启动引导的复杂度。取而代之的是,ELF的映像文件被转化成一个通用的引导启动映像格式,例如:SREC(Motorola-S记录格式)或IHEX,这样启动引导就变得简单,代码长度也减少了。刚征温牙苗岂嚷驹衡檀营轻惫臼兆忽篙谦远倍返诉敬绣欧奖楔荧指酉茁亏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-支持Flash硬件 FLASH存储器编程对话框允许设计人员对板上的外部CFI(Common Flash Interface,CFI)接口兼容的并行存储器进行编程,方法是通过外部存储器(Externel Memory Controller, EMC)IP核连接。编程方案被设计成是通用的,并且面向不同Flash硬件和布局。棉牲胃桑释斑励拣凛糟供钞瓮哆居鬼验枫起只蔷牧捕蹋栅擦箩伺葡富滁十可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-支持Flash硬件 通过与处理器连接的调试器来实现编程。XPS或者SDK在目标处理器上下载和执行小的系统内Flash编程存根(stub)。主机Tcl脚本使用命令驱动系统内Flash编程存根(stub)来完成对Flash的编程。对话框不处理或理解被编程的映像文件,只是将其编程到flash存储器上。设计的软件应用和硬件设置必须推断出编程所期望的文件内容。表4.5给出了所支持的Flash的配置。表5.6给出了CFI定义的命令集。共衍挖毁塑傣擎惨维涂悯井畴掸揉粉擅大咖痪嗡暑顷蓄棱狞孤世砚弃玫座可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-支持Flash硬件8的可用的可用设备产生生8比特数据比特数据总线16/8的可用的可用设备工作在工作在8位模式下,位模式下,产生生8比特数据比特数据总线32/8的可用的可用设备工作在工作在8位模式下,位模式下,产生生8比特数据比特数据总线16/8的可用的可用设备工作在工作在16位模式下,位模式下,产生生16比特数据比特数据总线Paired8的可用的可用设备产生生16比特数据比特数据总线Quad8的可用的可用设备产生生32比特数据比特数据总线Pair16的可用的可用设备产生生32比特数据比特数据总线32/8的可用的可用设备工作在工作在32位模式下,位模式下,产生生32比特数据比特数据总线32的可用的可用设备产生生32比特数据比特数据总线廖旱沙点讶疲挂萍准渗兜炯涕扁睦延眠咯馁范旗殿宪唇岛职匹逊袋鸟妒废可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-支持Flash硬件CIF厂商厂商IDOEM提供商提供商接口名字接口名字1Intel/SharpIntel/Sharp扩展命令集展命令集2AMD/FujitsuAMD/Fujitsu标准命令集准命令集3IntelIntel标准命令集准命令集4AMD/FujitsuAMD/Fujitsu扩展命令集展命令集牵耪锻闻慈韭苍抹叔贫具稚旬籽沉铂容硅吃掇淖帛送吨蒙飞饮傣铂獭枚昏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-支持Flash硬件 默认情况下,flashwriter程序只支持那些CFI设备,即其扇区映射匹配存放在CFI表中的内容。一些flash厂商知道在CFI中存放扇区映射,但是根据flash启动结构有所不同。 当对flash进行编程时,假定满足下面条件: (1)flash硬件假定在复位状态; (2)所有的flash扇区都假定在非保护状态; (3)flash编程存根不会解锁或者初始化flash。如果flash不 在准备状态或者非锁定状态时,将产生错误报告。 痉稳兼撰砌碗阮兔着策盾狠爬帖旬痘患鲜替烘哩寅估级韭报钝蠕转狱保蝗可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程的先决条件 在使用编程Flash存储器对话框时,必须满足下面先决条件: 1)在合适的EDK工程中,打开对话框;对话框从当前打开的 EDK工程中推断和使用数据; 2)设计的硬件必须在flash和至少一个处理器之间通过 PLB/AXI EMC外设正确的连接; 3)设计人员必须确认通过JTAG和主机连接,使用工程 的比特流文件初始化FPGA,这是因为对话框通过下载和 执行flashwritter程序来工作。晶遥寿悬讼恳椿整诅泌馆痘咐谍尚琳操桂锤刑臻择恢将仑纫迷蹭载锌嘛匠可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程的先决条件 4)必须使用XMD调试选项对话框来指定当前设计的调试器的 信息。如果使用MicroBlaze处理器来编程flash存储器,处理 器必须将MDM和flash连接。如果XMD STUB软件插入的监 视器用于与处理器的调试连接,则不能执行flash编程操作。 5)在之前必须执行产生库和BSP的步骤,这是因为flashwritter使 用处理器的库。 6)Flashwritter必须有至少8KB的空间。Flashwritter本身会占用一 大部分的储存器。剩余的一大块区域用于缓冲来自主机的比 特流。因此,当分配给flashwritter的空间多余8KB时,将大大 提高flashwritter的速度,这对于大的映像文件的编程是非常重 要的。岔乱豹益注释徒宗驻膜吁残叛昭料矮冷贤愁裁汪盼幼字前缴冀及嘻仔独晃可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程对话框 单击TOOLS-Program Flash Memory来打开编程Flash存储器对话框。在对话框下给出下面的信息。 1、需要编程的文件 通过浏览文件和选择文件,或者给出文件的路径,来选择需要编程到flash设备上的文件。 罢病囊漂之件矩甥睦院底犀累态岩放铅戮凝厂炔掳捉邪舰帮溃绞矽弱腥妓可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程对话框 2、自动转换文件 选择自动转换文件检验栏(check box),当文件要编程到flash中时,必须转化和以映像文件的格式保存在flash中。选择映像文件的格式,比如,SREC。只有当编程的文件是ELF格式的时候,才可以使用自动转换文件选项。 当创建启动装入(bootloader)代码时或者将ELF格式的启动装入代码转换成普通的启动装入映像格式(SREC)时,这个选项非常有用。退镁敖史悼龚辖莱蔽峭川催栓纶鸭糖仙鸽妖甫屉诊恳蔗算赵另歼筋声窑狂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程对话框 3、处理器实例 选择通过EMC控制器和flash设备连接的处理器。这个处理器将被用来执行flashwriter程序。 4、Flash存储器属性 1)实例名字 选择存储器控制器的实例名,该控制器用来和目标版上的flash 设备接口。 2)编程的偏移地址 选择编程flash的偏移地址,在该偏移地址下开始编程映像文 件。如果设计人员想在flash不同的区域编程不同的文件映像, 每次可以改变这个参数来选择在flash内不同的位置来编程文 件。主兰淳猎厚墅篡川姓巷穆子蹋谱静撼印辅匝保铺钦九辑幸掣赏召震譬悟锭可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程对话框 5、便笺式(Scratch Pad)存储器属性 选择便笺式存储器控制器的实例名,该控制器用来和目标版上的空闲的便笺式存储器连接,而该存储器用来存储flashwritter。该存储器必须满足前面的大小要求。不要和flash选择相同的存储器控制器。 6、创建Flash启动代码 选择Create Flash Bootloader检查栏来自动的为该配置创建启动装入应用程序。 在SW Application Project域内,指定启动装入应用程序的名字。使用自动产生的值来初始化启动装入应用程序的名字,如果需要的话,设计人员可以改变这个值。翘超昆都拈亥稳咐倘勿尝破糙掸怔恒谎瞩疾涕倦婉隔岩煞坷晨子葬搽元局可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-编程对话框 7、编程存储器 单击Program Flash按钮开始flashwriter。对话框在XPS控制台释放XMD。算法的剩余部分从控制台执行。恼喂两币塔镁烩凡腺零器赛徘鬃跌夜涟据抵忱格瑟堰淮捏熬瘦自株踏既块可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 上面所介绍的编程flash的配置可能不适合设计者的要求,比如,硬件和前面的CFI命令集不兼容或者存储器大小的限制。该部分简单的介绍flash编程的算法,设计人员可以为特殊的配置进行定制。 当单击Program Flash按钮时,产生下面的事件序列: 1、flash_params.tcl文件被写入到etc/文件夹下。这包含用来描 述flash编程会话的参数,并且被Tcl文件使用。档椰接驳末匿恍凋搓垂杂请堕肆谣瓣麦众习饮须献祷继蜀杂辑掩扫兆雁咎可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 2、XPS使用在XMD上执行的Tcl脚本来发布XMD,比如: xmd xmd tcl flashwriter.tcltcl flashwriter.tcl 这个flashwriter主脚本来自安装程序。当运行Program Flash按钮 时,如果运行自己的驱动脚本,需要在设计工程的根目录下存放自己的fashwriter.tcl脚本。XMD首先在该目录下查找该脚本,然后才会在其它目录下查找该脚本;插浩叛阐援连汀属露塔滴驴绷奏富传晾那蚌援销劝隋役力篡懊阶壶境怕蛙可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 3、flashwriter Tcl脚本从etc/flashwriter文件夹下拷贝flashwriter 应用程序源代码。在本地编译应用程序,在所选的便笺式存储器的地址范围外执行程序。如果希望编译自己设计的flashwriter源代码,需要修改在本地工程文件夹下的fashwriter.tcl脚本,使其编译自己的flashwriter源代码。崩似酶艺荚覆医山寐化断厂傍订配热庚德蓖挡氛纪诞铁沪瘫藏掠痕空抽柏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 4、脚本下载flashwriter到处理器。通过存储器内的邮箱,脚本和flashwriter程序通信。换句话说,根据在flashwriter地址空间的变量写参数到存储器位置,并且执行flashwriter。 5、脚本在每个操作结束时,等待flashwriter调用一个回调函数,通过在函数上设置断点,在回调函数时停止执行程序。一旦flashwriter停止执行时,主机上的Tcl将处理结果,并且继续执行更多要求的命令;侦罪坊骸躬众焚择复贤吧节馁辞仓城配爬娥微箱整神捷逃紧仔切旅咀否辙可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 6、当编程时,flashwriter只擦写那些需要保存映射文件的存储器区域; 7、如果试图进行一次编程,Tcl下载整个映像文件到存储器中,并且让flashwriter完成编程操作。如果在流模式下编程,它反复的操作(stream)映像文件的每一块,并且让flashwriter以大块方式对flash编程。它在flashwriter内的存储器缓冲区保存这些大块。 8、一旦编程完成,flashwriter Tcl发生退出命令到flashwriter,并且终止XMD会话。霸蔡藏嗣陵思媚总核逃赋立担译贸养匣炸象谦腰虏壹癌酷煎灯令触饯条佣可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件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” 吉鸳册栽佛纤缨窄叭刘卢漂崎网兢轧富区程煮鸥院娄脐京沛躁懦畦媒筑樊可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程 5每次使用Program Flash Memory对话框时,设计人员 复制到sw_services目录下的脚本和源代码就被使用一 次。 6如果设计人员希望GUI不覆盖etc/flash_params.tcl文 件,设计人员可以在命令行运行命令: xmd tcl flashwriter.tcl 来使用设计者在etc/flash_params.tcl文件中填充的值;表5.7给出了etc/flash_params.tcl文件中各种参数的列表。侦冠谩舱轮降富萄耕坪帽成推烤洲照茶睫轩幻饼焕两趾颤楚流疏天药涉庆可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-定制定制Flash编程编程变量量功能功能FLASH_FILE该字符串包含了字符串包含了编程文件的全路径程文件的全路径FLASH_BASEADDRFlash bank的基地址的基地址FLASH_PROG_OFFSETFlash bank的偏移地址,在的偏移地址,在该地址下地址下进行行编程程SCRATCH_BASEADDR在在编程程时,所使用的,所使用的便便笺存存储器的基地址器的基地址SCRATCH_LEN便便笺存存储器的字器的字节大小大小XMD_CONNECT用于用于XMD和和处理器理器连接的命令接的命令PROC_INSTANCE用于用于编程程时的的处理器理器实例名字例名字TARGET_TYPE用于用于编程的程的处理器理器实例的例的类型:型:MicroBlaze或或PowerPC405FLASH_BOOT_CONFIG参考参考“处理理Flash有冲突扇区有冲突扇区”部分部分EXTRA_COMPILER_FLAGS对于于MicroBlaze处理器,指定任何一个理器,指定任何一个编译器器标志,用于打开所支持的硬件志,用于打开所支持的硬件特性。例如,如果使能硬件乘法器,特性。例如,如果使能硬件乘法器,则添加添加 mno-xl-soft-mul。对于于PowerPC则不需要不需要设置置这个个变量量呻短榨斯什剐予兹廓糊气串粗眨炒图课溯敌舰伙礁水愈先室泌广剩灸赤匪可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 1处理Xilinx平台Flash模式 Xilinx平台Flash初始化在同步模式。在执行设备操作前,必须将其设置为异步模式。当使用Xilinx软件开发工具时,能选中对话框将Xilinx平台Flash作为目标设备。这个设置使得程序的内部解决方法在对其编程以前,就将其设置为异步模式。六辞猜祸戏体闰蔓塔皋诺嘘过脂儿在鼠墟碧邮电头匝挫破霜烈远悼定勘物可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 2处理Flash设备,0xF0作为读复位命令 CFI规范定义将0xFF/0xF0,作为读复位。Flash编程软件使用0xFF作为默认的读复位命令。某些Flash要求使用0xF0作为读复位命令,然而,Flash编程软件不能自动确定这种情况。结果,可能导致一些问题。如果出现这个问题,则修改文件cfi.c中的: #define FRR_CMD 0xFF 为: #define FRR_CMD 0xF0僵冲蹭斩搓烹轮愉影畦喉冬肿茹混产昨皂撩宛绿总撰沃了反取茄怔挝炊站可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 3、处理有冲突扇区的布局 正如前面所提到的那样,flash的厂商知道在CFI表中保存不同的扇区映射,但是存在不同引导拓扑结构所产生的不同的扇区映射方法。由于CFI的引导拓扑结构没有标准化,因此flashwriter无法确定设计所使用的特定flash的布局。 昼拇丽幽淤朔透讹瓣离营吓噎宙庞岿扯躬响释轩言瞬瞅酉冰茅攫脂炯窄蚜可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 如果使用的flash硬件的扇区布局不同于存放在表内的扇区映射,设计人员必须订制flash编程流程。设计人员必须确定所使用的flash是顶部启动还是底部启动设备。在顶部启动的flash设备,最小的扇区是flash的最后一个扇区;在底部启动的flash设备,最小的扇区是flash的第一个扇区。软涣驰兢阂尉导函甸援景贮从隆竞高括缸关千锦祸炳膜铺熄锤乃丫拐读塔可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 一旦确定了flash的类型,必须象前面介绍的那样拷贝文件来创建定制的编程流程: (1)如果使用底部启动的flash,在你的etc/flash_params.tcl文件中添加下面一行: set FLASH_BOOT_CONFIG BOTTOM_BOOT_FLASH (2)如果使用顶部启动的flash,在你的etc/flash_params.tcl文件中添加下面一行: set FLASH_BOOT_CONFIG TOP_BOOT_FLASH 然后下一步从命令行运行下面的命令: xmd tcl flashwriter.tcl 内部的,这些变量引起flashwriter将根据引导拓扑结构重新安排扇区映射。歌缎唉泊殆佐悍诉暴姚乃隆优颠旅培葱靳弊翌令言慈卿菱柜婚宴集熔耘捂可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件FLASH存储器编程-可操作的特点和方法可操作的特点和方法 4、AMD/Fujitsu命令集的数据查询算法 在擦除和编程操作的过程中,支持AMD/Fujitsu命令集的flash使用DQ7数据查询算法。一些flash使用配置寄存器来控制DQ7位的数据查询,要求在擦除操作时,DQ7输出0,而操作结束时输出1。相似的,在编程的时候,DQ7输出反转(invert)数据,在编程结束时,DQ7输出真实的数据。当使用Program Flash Memory对话框时,如果使用的flash硬件有不同的配置,编程会失败(使设计人员赶到奇怪)。 参考使用的flash的数据手册,如何去复位配置,使DQ7在前面的描述方式内。一些flash设备提供这种配置属性:AT49BV322A(T),AT49BV162A(T)和AT49BV163A(T)。澜需渔忍梗柔肾犹先硅脆懒守婶侄豫波奠秋砚碴雀动磁函严二孺油辰虫摹可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器工具 EDK工具包括GNU编译器(GCC)工具,用于PowerPC和MicroBlaze处理器。 GCC工具支持C语言和C+语言。MicroBlaze的GNU工具包括mb-gcc和mb-g+编译器,mb-as汇编器和mb-ld加载器/连接器,PowerPC的GNU工具包括powerpc-eabi-gcc和powerpc-eabi-g+编译器,powerpc-eabi-as汇编器和powerpc-eabi-ld连接器。 工具链也包括C,Math,GCC和C+标准库。 GCC工具基于开放源码GCC3.4构建。粗仍烯饮怯肆舶费赂伸狼缨缕垣鸵抢黑醋抛券或咱蓟随蛔佯炽倾收衬风抚可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器工具-编译器框架 编译器也使用普通的二进制工具binutils,比如一个汇编器,连接器和对象转储。MicroBlaze编译器工具使用基于GNU2.10.1的二进制工具binutils,PowerPC编译器工具使用基于GNU2.15的二进制工具binutils。樟彩壁尊赏挠暮尾贪询绥怪叭渣梅钟绅他付锑腮港乏钙絮剩鸳静葱鳞恕科可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器工具-编译器框架cpp0输入输入c/c+文件文件cc1cc1plusmb-asmb_ld输出输出ELF文件文件库库图图5.10 GNU工具流程工具流程狞舆请治炉歧袍钧秆顿迄茸滦毅楔字祈炊队孝员崎嫩上堤辣殃阎究法展四可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器工具-编译器框架 GNU编译器调用下面的可执行文件: 1)预编译器(cpp0)-这是编译器的首次调用。cpp0所有的宏,这些宏在源文件和头文件中定义 2)机器和语言指定编译器-这个编译器是基于前面预处理过输出的代码。语言指定的编译器包括下面:C编译器(cc1)-编译器负责大多数的输入C代码的优化,并且产生汇编代码;C+编译器(cc1plus)-编译器负责大多数的输入C+代码的优化,并且产生汇编代码;耳峰漠朽贪似筐拆衣抢遂伍籽绎藉侈貌钦流座舒逻慈沸毫棺肆堂啡望蝴键可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器工具-编译器框架 3)汇编器(mb-as为MicroBlaze,powerpc-eabi-as为PowerPC)-汇编代码是汇编语言的助记符。汇编器将这些助记符转换为机器语言。汇编器也解析由编译器产生的标识。汇编器建立一个能传送给连接器的目标文件 4)连接器(mb-ld为MicroBlaze,powerpc-eabi-ld为PowerPC)-连接器连接所有由汇编器产生的目标文件。如果在命令行提供库,通过连接,连接器解析来自汇编器的一些函数代码中未定义的参考类型。常圆盒励咀所姜收韭恰孟之玫尽罚题老千宁圭占釜疏暴尾撒烤秘查踏灯瘟可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用 compiler_Name options files compiler_Name为编译器的名字,powerpc-eabi gcc(PowerPC)或mb-gcc(MicroBlaze)用于编译C语言文件;powerpc-eabi-g+(PowerPC)或mb-g+(MicroBlaze)用于编译C语言文件; 编译器允许下面的文件类型作为输入:C源文件、C+源文件、汇编文件、目标文件和连接脚本文件。引蓬呢猜达渤获缅坊湖漓缉剥版坏纫篷贯沟瓢倒性购淮稽荫佃乍噬醒蔷蝉可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用 编译器输出下面的文件: 1)ELF文件(默认输出 Solar系统为a.out,Windows系统为a.exe); 2)汇编文件(当选择save-temps或者-S选项); 3)目标文件(当选择save-temps或者-c选项); 4)预处理输出.i或.ii文件(当选择save-temps选项)。 表4.8给出了文件类型和扩展名。 表4.9给出了powerpc-eabi-gcc和mb-gcc编译器所需要的库。乖噬入名泰耶族溢遂戮剧侩员办捆祁个尖闰窍敏郸与蝉铅嘘益磐厄乃吴戚可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用扩展展文件文件扩展名展名.cC文件文件.CC+文件文件.cxxC+文件文件.cppC+文件文件.c+C+文件文件.ccC+文件文件.S汇编文件,但是可能有文件,但是可能有预处理器指令理器指令.s汇编文件,但是没有文件,但是没有预处理器指令理器指令磨诈怜殿果淹瓤袁船噶闺炙攫喷粳剃叫硼腰律正契鸳茵峙巨玫厘诚唾饶陋可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用库描述描述libxil.a包含包含为EDK工具开工具开发的的驱动、软件服件服务(XilNet&XilMFS)和初始化文件)和初始化文件libc.a标准准C库,包含函数,例如,包含函数,例如strcmp和和strlenlibgcc.aGCC低低层次次库,包含仿真,包含仿真库例程,用于浮点和例程,用于浮点和64位的算位的算术libm.a数学数学库,包含函数,例如:,包含函数,例如:cos、sinlibsupc+.aC+支持支持库,用于异常,用于异常处理的例程,理的例程,RTTI和其它和其它libstdc.aC+标准平台准平台库。包含。包含标准准语言言类,例如那些用于,例如那些用于I/O流,流,I/O文件,串操文件,串操作和其它作和其它攻氮膝画赎栏恭沤纵消围极踌温柜姓奶黍臻馋吹邹携谩丈腮切桨停褒圾禹可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(语言术语) GCC编译器识别C和C+语言,并且产生相应的代码。通过GCC规约,可以对一个源文件相同的使用gcc或者g+编译器。设计者使用的编译器和文件的扩展名决定了输入和输出文件所使用的语言。 当使用gcc编译器,编程语言通过文件的扩展名确定。如果扩展名是C+源文件,语言就设为C+。这就是说,如果对包含在CC文件中的C代码进行编译,即使使用了gcc编译器,它也会自动地拆解函数名(mangle function name)。逐烷类敬润艺弛践奸李贵注迪吊唯杀蒋铁冷呛睬笺砷铂苔恃纽仟义慎盘劣可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(语言术语) gcc和g+编译器最基本的不同在于,g+自动地将语言设置为C+(而无需关注文件的扩展名),如果连接的话,自动加入C+支持库。这意味着,即使使用g+在.c文件中编译C代码,那么也将拆解名字(mangle name)。 名字拆解对C+是一个独特的概念,其它语言支持符号的过载。一个函数过载(function overload),表示相同的函数(不同的传递参数)能执行不同的功能,并且能有不同的返回值。为了支持函数过载,C+编译器对函数类型进行编码来调用函数名,避免使用相同的名字对函数进行多次定义。灌给勇咆冬晤坪久馈封垃屎芹翅赤拓珠蔓骗姑浓狡荤刨净挠荤惮冰竞猴男可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(语言术语) 如果采用混合编译模式(一些源文件包含C代码,而另一些源文件包含C+代码,即使用gcc编译一些文件,而使用g+编译另一些文件),要注意名字拆解。为了避免C符号的名字拆解,在符号声明时,使用下面的构造: #ifdef _cplusplus Extern “C” end if int foo(); int morefoo(); #ifdef _cplusplus end if勘谊掀谢享独细钻澄届恫嫉闪遮销淬骑艾隅宣碌翁请介忠逢你酱肄邓麓念可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(语言术语) 使这些声明在头文件和其它源文件中可以使用。这就使得当编译这些符号的定义或参考时,编译编译器使用C语言。 当用其中一种参数进行编译时,使用-x选项可以强制使用的语言类型。 当使用gcc编译器时,libstdc+.a和libsupc+.a不被自动连接。当编译C+程序时,使用编译器的g+参数使得所支持的库被自动地连接。对gcc命令添加-lstdc+和-lsupc+,也是可以的选择。烫矽吼湛嗣晋溜神庄筛慰否碾憾嚷墓贴同逼默球喘磕希盎录聘财乎撂倾炭可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(编译器选项 )选项功能功能-E只只预处理,不理,不编译,汇编和和连接。在接。在标准准输出出设备上上显示示预处理理过的的输出出-S只只编译,不,不汇编和和连接。接。产生生.s文件文件-c只只编译和和汇编,不,不连接。接。产生生.o文件文件-g添加添加调试信息,信息,该信息由信息由GNU调试器器mb-gdb或或powerpc-eabi-gdb使用使用(当当输入入为C/C+源文件源文件时可用可用)-gstabs对编译的的汇编文件添加文件添加调试信息,将信息,将该选项直接直接传递到到GNU汇编器中,器中,或者是通或者是通过-Wa选项到到编译器器-Wa,option传递逗号分割的逗号分割的选项到到汇编器器-Wp,option传递逗号分割的逗号分割的选项到到预处理器理器-Wl,option传递逗号分割的逗号分割的选择到到链接器接器-B directory添加目添加目录到到C运行运行时间库查找路径找路径-L directory添加目添加目录到到库查找路径找路径-I directory添加添加库到到头文件文件查找路径找路径咬瓜逞奄裳属抚铆岸咐哟颂衣椰枝捏蛾壕导招埋圣潜烦澜撩媚吝鹃孺赦勺可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(编译器选项 )-l library为为定定义的符号的符号查找找库,编译器器对用用户提供的提供的库名字自名字自动添加添加lib前前缀。编译器器对所提供的所提供的选项的的顺序比序比较敏感,敏感,选项应该在源文件后在源文件后给出。如果出。如果设计者者创建建了一个自己的了一个自己的库叫叫libprojext.a,可以使用下面的命令将,可以使用下面的命令将库中的函数包含近来:中的函数包含近来: Compiler Source_Files L$LIBDIR l projext-v详细显示被示被编译器器调用的程序用的程序-o filename设置置输出的文件名出的文件名-save-temps保存在每一步通保存在每一步通过时产生的中生的中间文件文件1C语言的言的预处理理输出文件:出文件:input_file_name.i或或C+语言的言的预处理理输出文件:出文件:i nput_file_name.ii2以以汇编格式存在的格式存在的cc1的的编译输出:出:input_file_name.s3以以ELF格式存在的格式存在的汇编器的器的输出:出:input_file_name.s-help显示示选项的列表的列表-On指定指定优化化级别,n=0,1,2,3,S;0-无无优化;化;1-中中级优化;化;2-充分充分优化;化;3-充分充分优化,化,试图内内联小的子程序;小的子程序;S-优化代化代码长度;度;当当优化化级0时,引起代,引起代码的重新的重新编排,当排,当调试代代码时,不要使用,不要使用优化化级别诅蜕习揍汇婴妻逾哆剔券筷举章蚀溢龚搽羚拦煎酬门翠喻讫作逐历吵杠波可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(编译器选项 ) 编译器mb-gcc和powerpc-eabi-gcc,为库和头文件查找某个路径。噎型醛喝核紧藏畸枚络沈喂创课蚀贬省章擒挫石淘扫享尸塔毒笼吭酒涕挺可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接器选项) 1)-defsym_STACK_SIZE=value 使用连接器选项可以修改堆栈存储空间大小,STACK-SIZE变量是分配给堆栈的总的空间。默认值为100个字,400个字节。如果需要更大的空间可以修改这个参数。 在一些情况下,程序可能需要更大的堆栈。如果程序要求堆栈的大小比可用堆栈多的话,程序试图写道其它的不正确的程序空间内,这样将导致不正确的代码执行。 肋甫戍掘催澄党嗓勒颜磨拿弃证轰臭类蝶义朵惋酉果巡钥桩詹琶雕娩掷桥可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接器选项) 2)-defsym_HEAP_SIZE=value 通过_HEAP_SIZE变量,可以控制为堆分配的存储空间。默认值为0。动态的存储器分配例程使用堆。如果程序通过这种方式使用堆,则必须为_HEAP_SIZE提供合适的值。套姓失谎龄混盐答啸吼锐烬狡游枪透倪秩汲阅多霄剃耸痒失蜘甜侯构冯园可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(存储器设计) 1)保留存储器 保留存储器由硬件和软件程序环境定义的特权使用。典型的,包含中断向量位置和操作系统级的例程。表4.11给出了处理器硬件所定义的为MicroBlaze和PowerPC处理器定义的保留存储器的位置。遣惩策封阔嗅叮蒂搓代网斩甸小故颓刮预用垂祷惋抉番条炔篙奢柜郊驯曼可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(存储器设计)处理器理器类型型保留存保留存储器器保留目的保留目的默默认的的TEXT开始开始地址地址MicroBlaze0x0-0x4F复位,中断,异常和复位,中断,异常和其它保留的向量位其它保留的向量位置置0x50PowerPC0xFFFFFFFC-0xFFFFFFFF 复位向量位置复位向量位置0xFFFF0000驻喊陪炮刁锁橙赫躺枢青簧肢段洲访乌锗难袁喀诈篱晤凄盆捣墙勿溉钮赏可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(存储器设计) 2)I/O存储器 I/O存储器,是指程序通过处理器总线与存储器映射的外设进行通信的地址。这些定义的地址作为硬件平台规范的一部分。酒拎穿替蜀刑帆液沏豢颜坟押校帮利嘘曼姥佰夫拿巡卢哀汰赢奠葛扬会田可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(存储器设计) 3)用户和程序存储器 用户和程序存储器是指,那些编译后需要运行可执行文件的存储区域。根据规则,这部分区域用来存储指令,只读数据,读-写数据,程序堆栈和程序堆。这些部分可以存放在系统中的任何可寻址的存储器中。默认情况下,编译器产生代码和数据地址从表4.11所列的地方开始,并且占用连续的存储空间。这是程序最常的设计方式。通过定义下面的符号来改变程序的开始地址: _TEXT_START_ADDR(为MicroBlaze) _START_ADDR(为PowerPC)。溜是审谣诉尔憋无朽柄醇尺蛇握瞬较滇铡磨矛高炼妆文巢摆疏坍牺锡唇拘可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(存储器设计) 在一些特殊情况下,需要将ELF文件分别分配在不同的存储器空间,可以使用连接器命令语言(连接器脚本)。 下面给出了可能需要改变可执行文件的存储器映射: 1)将大的代码段分配在多个小的存储器内 2)将经常执行的部分重映射到快速的存储器内 3)将只读部分映射到非易失性flash存储器内竭新早佃个嗡佯仕幽孪朵雅株挂幌遵机岳厩寐备犁昂槛骄虫洋节焉揩内勉可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 通过从目标文件(.o)使用连接器将输入部分连接到一起,这样就建立了可执行文件。 编译器在默认状态下,在定义的区域部分建立代码。每部分给予相关的意义和目的分配给一个名字。图4.12给出了目标文件或可执行文件各部分的布局。责遏绽澄垣脉姬锯每符栏踩燃螟奥疑吴寻慈铸官唁廊昏层杀酪嫁午狠询糜可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件).text.rodata.sdata2.data.sdata.sbss.bss代码部分代码部分只读数据部分只读数据部分小的只读数据部分小的只读数据部分读读-写数据部分写数据部分小的读小的读-写数据部分写数据部分小的未初始化数据部分小的未初始化数据部分未初始化数据部分未初始化数据部分图图5.11 目标文件或可执行文件分布目标文件或可执行文件分布海第勾铅敬挽懒撞版咏袜案坎柯悼胆唇缕亨篷粗写闲谷围瑟话凶磅攻卸裕可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 1.text 这部分为目标文件包含可执行程序的指令。这部分有x (可执行),r(只读)和i(初始化)标志。这部分被分配到一个初始化的只读存储器ROM内,该ROM是可以通过处理器的指令总线寻址。 2.rodata 这部分包含只读数据。这部分有r(只读)和i(初始化)标志。这部分被分配到一个初始化的只读存储器ROM内,该ROM是可以通过处理器的指令总线寻址。厕双淤湛涪矾翼卖正颧摔销皿磕挛搀孰淡协暖悼庸综统晾搭绅剑义散冈忆可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 3.sdata2 这部分和.rodata部分相似。这部分包含的小的只读数据小于8个字节。这部分由只读小数据锚(就是一个已经被标记过的地方,在这个地方能被找到)访问。这样确保对该区域使用单指令访问。通过使用-G选项来改变该区域的大小。这部分有r(只读)和i(初始化)标志。 4.data 该部分包含读-写数据。这部分有w(读-写)和i(初始化)标志。这部分必须被映射到RAM中,而不能映射到ROM。志莽示察了章涤钻挡斋径喉莲花难肇帘贿掇努航堪轧涌雾遥辱芥册芍饼鉴可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 5.sdata 该部分包含了小的读-写数据,其大小小于指定的尺寸。默认为8字节。选择 G选项可以修改数据大小而进入这个区域。这部分由读-写小数据引擎访问。这样确保对该区域使用单指令访问。这部分有w(读-写)和i(初始化)标志。该部分必须映射到初始化RAM。 6.sbss 该部分包含小的未初始化的数据,其大小小于指定的尺寸。默认为8字节。选择 G选项可以修改数据大小而进入这个区域。这部分有w(读-写)标志。该部分必须映射到RAM。睦喳咕氏熟学药铀跟结述轴言韧丙澈八韶橱呈睹绢曰欲喜僵授黑镜碘瘫骡可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 7.bss该部分包含未初始化的数据,程序堆栈和堆也被分配到这个区域。这部分有w(读-写)标志。该部分必须映射到RAM。 8、.init 该部分包含语言初始化代码。这部分和.text有相同的标志,该部分必须映射到ROM 9.finit 该部分包含语言清除代码。这部分和.text有相同的标志,该部分必须映射到ROM讨财两窘郁呕暖显瘦损叁扰罚柜夏忘赃蠢肝南肖搁除泊霖宝嫩冲粥盖逞畔可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(目标文件) 10.ctors 该部分包含一列函数,该函数在程序启动时被调用。该部分和.data有相同的标志,该部分必须映射到RAM 11.dtors 该部分包含一列函数,该函数在程序结束时被调用。该部分和.data有相同的标志,该部分必须映射到RAM 12.got2/.got 该部分包含到程序数据的指针。该部分和.data有相同的标志,该部分必须映射到RAM 13.eh_frame 该部分包含帧展开信息,这些信息用来处理异常。该部分和.rodata有相同的标志,该部分必须映射到ROM嫡矿彩奖床必橡汲症啦踞禄悄吭韩兰匿裳炔二厚站俏斋荆力戳堤唱秽碴寓可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接脚本 ) 连接工具使用连接脚本指定的命令来确定在存储器不同块的程序。它描述了所有输入目标文件到可执行文件的输出部分的映射。输出部分被映射到系统的存储器。 如果不需要改变默认的连续分配程序内容到存储器的设置,那么不需要连接脚本。连接器提供了默认的连接脚本,知道如何连续的分配程序。设计者可以通过定义连接符号:_TEXT_START_ADDR(为MicroBlaze)和_START_ADDR(为PowerPC)来选择只修改程序的开始地址。比如:襄厂胳情胰孕伟拴梁范事矾瓢佬油瘴征篷荔诱拎丰凛跳来轨轻饺砒忙咯优可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接脚本 ) mb-gcc -Wl, -defsym Wl, _TEXT_START_ADDR=0x100 powerpc-eabi-gcc -Wl, defsym Wl,_TEXT_START_ADDR=0x2000 mb-ld -defsym _TEXT_START_ADDR=0x100蒙骑阮嗽寇晓堆网孪翅宫痈偏纪匡读响贰豺甲拟利勇海氛囚俺睹啪貉牡对可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接脚本 )选择默认脚本将使用来自下面目录: $XILINX_EDK/gnu/ / /lib/ldscri的连接器:elf32 当没有使用下面的情况时,默认使用elf32 当使用-n选项调用连接器elf32 当使用-N选项调用连接器elf32 当使用-N选项调用连接器elf32 当使用-r选项调用连接器elf32 当使用-Ur选项调用连接器elf32 当使用-n选项调用连接器率嘎煎邑沸芬眺镜鸭伙够阶暑妈入臣膨氖钓送塔滔臂授芝蚀湛及篡绦邯酌可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接脚本 ) 在gcc命令行使用连接脚本。为编译器使用命令行选项-Wl,-T,-Wl,,正如下面所描述的那样: compiler Wl,-T Wl, linker_script 馏纂厉缠庆捣丘疲娥姓凋镜评窖赋肛熬伯深袱租拳乏枪侧饺簧褐拈酣圃唐可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-编译器使用(连接脚本 ) 如果执行连接器,用下面的命令包含脚本: linker T linker_script 通过这个命令告诉GCC使用设计者自己的脚本,而不使用内建的默认的连接脚本。从XPS可以产生程序的连接脚本。在XPS中,选择Tools-Generate Linker Script。这样就打开连接脚本产生器工具。存储器映射也由该工具完成。堆栈和堆的尺寸在存储器映射时,设置完成。一旦产生了连接器脚本,当应用程序在XPS中编译时,自动作为GCC的一个输入。连接脚本定义了布局和输出可执行文件的每一部分的开始地址。仍购吻苛砷瞧憾毙惟掠谊贾残闰努律暗嫩丫眠积涎荫技涕轿巢蓬哼负涎幸可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-MicroBlaze编译器及选项编译器及选项 MicroBlaze的GNU编译器有自己独特的选项和特点。当使用MicroBlaze编译器时,预处理器自动提供_MICROBLAZE_定义。可以在任何有条件代码的地方使用这个定义。表4.12给出了MicroBlaze指定的选项。 集郡倘噬入贵瓣坛房甸淆筋蒜景创议饭糕潞墙臭揖辙刑闸程荆屠兄尽毙狡可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-MicroBlaze编译器及选项编译器及选项选项解解释说明明-xl-mode-executable使用使用该选项为MicroBlaze去去编译常常规嵌入式嵌入式应用程序,用程序,这是是编译的默的默认设置置-xl-mode-xmdstub使用使用该选项编译应用程序,用程序,该程序在程序在软件插入行件插入行为(即(即XMDSTUB)下)下进行行调试。当使用。当使用XMDSTUB下下载到到MicroBlaze时,使用,使用该选项。在。在这样的程序的程序下,地址下,地址0x0-0x800的地方被的地方被XMDSTUB使用。使用使用。使用这个个选项的作用:的作用:1设计的程序由的程序由0x800开始。开始。2ctr1.o用作初始化文件。当程序用作初始化文件。当程序执行完后,行完后,该文件将控制返回文件将控制返回给XMDSTUB注意:当硬件注意:当硬件调试打开或者非打开或者非调试时,不要使用,不要使用这种模式。种模式。-xl-mode-bootstrap 使用使用该选项编译应用程序,用程序,该程序能使用引程序能使用引导启启动程序来引程序来引导启启动。使用。使用该选项编译的的应用程序缺少复位向量。典型的引用程序缺少复位向量。典型的引导启启动驻留在非易失性存留在非易失性存储器器映射到映射到处理器的复位向量。理器的复位向量。 如果普通的可如果普通的可执行程序使用行程序使用这个引个引导启启动代代码加加载,应用程序的复位向量用程序的复位向量将覆盖引将覆盖引导启启动代代码的复位向量。在此情景中,在的复位向量。在此情景中,在处理器复位理器复位时,启,启动引引导代代码不会首先不会首先执行重行重载该应用程序和做其它初始化工作。用程序和做其它初始化工作。为了避免了避免这种情况,种情况,设计人人员使用使用这个个编译器器标志来志来编译启启动引引导应用程序。用程序。在在处理器复位理器复位时,控制就能到达启,控制就能到达启动引引导代代码而不是而不是应用程序。用程序。这种模式种模式使用使用crt2.o作作为启启动文件文件酝绥洽枉惋缩储樱遇辅登堪膨吁载贺仆刻吱喻话陀筋轨丝淡桓貉秤镐殿篆可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-MicroBlaze编译器及选项编译器及选项-xl-mode-novectors 使用使用该选项编译应用程序,用程序,该程序不需要使用任何的程序不需要使用任何的MicroBlaze的向量。的向量。这种模式使用种模式使用crt3.o作作为启启动文件。文件。-mxl-gp-opt使用小数据区域使用小数据区域锚,为性能和尺寸性能和尺寸进行行优化化 如果程序包含地址的高如果程序包含地址的高16位非位非0,则加加载/存存储操作需要操作需要2个指令,个指令,MicroBlaze ABI提供了两个全局小数据区域(最大提供了两个全局小数据区域(最大64KB),在),在这个区域的个区域的数据可以使用小数据区域数据可以使用小数据区域锚和和16位立即数位立即数访问,只需要一个指令用于加,只需要一个指令用于加载/存取操存取操作。作。-mxl-soft-mul为所有的乘法操作使用所有的乘法操作使用软件例程(件例程(_mulsi3)。)。对没有硬件乘法器的没有硬件乘法器的设备使使用用这个个选项。这对mb-gcc编译器是默器是默认选项-mxl-xl-soft-mul使用硬件乘法器。使用硬件乘法器。编译器器产生生mul指令指令-mxl-soft-div 为所有的除法操作使用所有的除法操作使用软件例程(件例程(_divsi3,_udivsi3)。)。对没有硬件除法没有硬件除法器器的的设备使用使用这个个选项。这对mb-gcc编译器是默器是默认选项-mxl-xl-soft-div使用硬件除法器。使用硬件除法器。编译器器产生生div指令指令-mxl-stack-check 产生在运行生在运行时的代的代码用于用于检查堆堆栈溢出。当溢出溢出。当溢出产生生时,程序跳到子例,程序跳到子例程程_stack_overflow_exit。该子程序将子程序将变量量_stack_overflow_error设置置为1譬杰扇踌苯宵黍秀骚肛颅季阁咳野咸敦止觅逗嚎待录汛绦厂惹耸希黎边振可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器-MicroBlaze编译器及选项编译器及选项-mxl-barrel-shift使用硬件的桶形移位寄存器。使用硬件的桶形移位寄存器。编译器器产生硬件桶形移位指令生硬件桶形移位指令-mxl-pattern-compare 产生代生代码时,使用模式比,使用模式比较(pattern compare)指令。当)指令。当MicroBlaze硬件有硬件有模式比模式比较选项使能使能时,使用,使用该选项。使用模式比。使用模式比较,可以加速程序中的布,可以加速程序中的布尔尔操操作。模式比作。模式比较操作,也允操作,也允许对字字长的数据的数据进行操作,例如行操作,例如strcpy,strlen,strcmp等。等。-mhard-float 产生硬件浮点指令。当生硬件浮点指令。当MicroBlaze硬件的硬件的FPU使能使能时,使用,使用该选项。该选项使能在使能在编译器中使用器中使用fadd,frsub,fmul,fdiv指令。也使用指令。也使用fcmp.p指令指令,p为谓词条件,例如条件,例如le,ge,lt,gt,eq,ne。当使能。当使能FPU时,这些指令由些指令由MicroBlaze译码和和执行。行。-mno-clearbss这个个选项用来用来编译程序,程序,该程序用来仿真。根据程序用来仿真。根据C语言言标准,未初始化全局准,未初始化全局变量被分配在量被分配在.bss区域和当程序开始区域和当程序开始执行行时,保,保证其其为0。典型的是通。典型的是通过在程序开在程序开始始执行行时,C启启动代代码运行一个循运行一个循环来填充来填充.bss区域。此外,区域。此外,优化化编译器能器能为C代代码内全局内全局变量分配量分配0到到.bss区域。区域。在仿真在仿真环境中,境中,这两种两种语言特征被多余的开言特征被多余的开销(不需要使用)。一些仿真器自(不需要使用)。一些仿真器自动的将整个存的将整个存储器清器清0。甚至在普通。甚至在普通环境下,写境下,写C代代码而不依靠全局而不依靠全局变量量为0来来开始程序。开始程序。这样,可以使,可以使C启启动文件不需要用文件不需要用0初始化初始化.bss区域。区域。-msmall-divides 当没有硬件除法器当没有硬件除法器时,为小的除法小的除法产生生优化代化代码。对于有符号的整数除法,于有符号的整数除法,当分子和分母在当分子和分母在0-15之之间时,该选项提供快速的提供快速的查找表除法。当硬件除法器找表除法。当硬件除法器使能使能时,该选项不起作用。在内部使不起作用。在内部使编译器不分配被初始化器不分配被初始化为0的全局的全局变量到量到.bss而将其分配在而将其分配在.data区域。区域。目楔哉工赠疆熬养北寺炽宴匝滤非关扛庐描及氦多灿镣肺宛肿晤忙镀酬椅可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze汇编器 用于Xilinx的MicroBlaze软核处理器的mb-as汇编器支持标准的GNU编译器的可选项。也支持同样的标准GNU汇编器支持的汇编指令集。mb-as支持所有的MicroBlaze机器指令集提供的操作码(除了imm指令)。当使用大的立即数时,mb-as汇编器产生imm指令。汇编语言编程器并不要求用imm指令书写代码。绥伍毅凉右肠虐四楚衡似软幂嗜撒蚕丰捉限韧碧质娩痪娟吉陌薪殆坏保庶可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze汇编器 mb-as汇编器要求MicroBlaze内使用立即数的指令必须指定为一个常数或标识。如果指令要求PC相关的操作数,mb-as汇编器计算它,如果需要的话,包含一个imm指令。比如,如果相等,分支立即指令要求PC相关的操作数。汇编编程器应该这样使用该指令: beqi r3,mytargetlabel 其中mytargetlabel是目标指令的标号。mb-as汇编器计算指令立即数的值作为mytargetlabel。如果立即数的值大于16位,mb-汇编器自动插入一个imm指令。如果mytargerlabel的值在编译时不知道,mb-as汇编器总是插入一个imm指令。使用连接器的relax选项来去除任何不需要的imm指令。仑羽仿壬倦实辣艰玖鳖屈症余凤厩立小遵咽耽敷体淖御捎意钻疚锐中惰颤可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze汇编器 在支持MicroBlaze标准指令集时,mb-as汇编器还支持一些伪代码来减轻汇编编程的任务。表4.13给出了所支持的伪代码。据廊非憎福叔悍募懈割佩秉尚积论胰乡掘端蔚声铭份鼓洁迢聘淋壬厢跌沦可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze汇编器伪操作操作码解解释说明明nop不做任何操作,用指令不做任何操作,用指令or R0,R0,R0代替代替La Rd,Ra,Imm被指令被指令addik Rd,Ra,imm;=Rd=Ra+Imm代替代替not Rd,Ra被指令被指令xori Rd,Ra,-1代替代替Neg Rd,Ra被指令被指令rsub Rd,Ra,R0代替代替sub Rd,Ra,Rb被指令被指令rsub Rd,Rb,Ra代替代替私诽米渤挠灰筒安搅战瓷寡臂赃夹橇捞阔蔷近攘官芝谱孝吵戳靖策馏逝英可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze连接器 1、-defsym_TEXT_START_ADDR=value 默认情况下,输出代码的代码部分从地址0x28的地方开始执行(0x800在XMDStub模式)。能使用该选项来改变执行地址。如果给mb-gcc提供这个的话,输出代码的代码部分可以从给定的value开始执行。如果使用默认的开始地址,则不需要使用这个选项 这是一个连接器的选项,当设计者独立调用连接器时应该使用这个选项。如果连接器作为mb-gcc的一部分调用,设计者必须使用下面的选项: -Wl,-defsym Wl,_TEXT_START_ADDR=value贩障肄戳宁焚憨淆货呻扎以芥烘失斥皿矽体拟怕勒差狙伸蓝晦识灸冬颗耸可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze连接器 2、-relax 这是连接器的一个选项,用来去除所有不需要的由汇编器产生的imm指令。汇编器为每一条在汇编时不能计算立即数的指令生成一条imm指令。这些指令的大部分并不需要imm指令。当设计者独立调用连接器时应该使用这个选项。如果连接器作为mb-gcc的一部分调用,自动提供给连接器。 韵茨捡涸窥怪沤眯炬瘩蜀里赣评颇及墅手烃逢篷牙廓帅舆无伙违澈蛾圾住可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU编译器- MicroBlaze连接器 3、-N 将代码和数据区域设置成可读的和可写的。并不采用页面对齐数据段。该选项只针对MicroBlaze处理器。顶层的GCC编译器自动包含这个选项,同时调用连接器,但如果设计者不使用GCC调用连接器,则应该使用该选项。嫂宰慎夏啪柬皑廓蚁刘绒绎汾檬讶泌翌丝帆咙遗贷柠啊咬贞猫傀辅郡谅努可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件启动文件启动文件 当生成一个可执行文件时,编译器在最后的连接命令中包含一个预编译的启动和结束文件。启动文件在开始执行代码前,设置语言和平台环境。启动文件执行下面的行为: (1)设置所需要的复位,中断和异常向量 (2)设置堆栈指针,小数据锚和其它寄存器 (3)将BSS存储器清0 (4)调用语言初始化函数,比如C+构造器 (5)初始化硬件子系统,比如,如果程序被统计分析(Profile),则初始化统计分析定时器 (6)为主程序设置参数,并调用它锈粘开早蔡狈碰级俏氰娩店菱传膛叛妖殿邦如恫挞伯两委龙坞色漂吾诅班可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件启动文件启动文件 类似的,结束文件包含在应用程序执行完后必须执行的程序。下面是结束文件执行的行为: (1)调用语言清除程序,比如C+析构函数 (2)退出硬件子系统。比如,如果程序被统计分析,清除统 计分析子系统昭勒瓮搁绎蔷转图喉街肇庭兢候谗蚊钉秤汪偶锗厨肪此镣帘撂屠温蜂噶贴可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 这些初始化文件在各种应用模式中使用,这些信息为高级用户提供改变或理解对于应用程序的启动代码。比如MicroBlaze,这里存在两个重要的C运行初始化阶段。第一个阶段用来设置向量,然后调用第二阶段初始化。它也基于不同的应用模式来提供退出存根。 这些初始化文件在各种应用模式中使用,这些信息为高级用户提供改变或理解对于应用程序的启动代码。比如MicroBlaze,这里存在两个重要的C运行初始化阶段。第一个阶段用来设置向量,然后调用第二阶段初始化。它也基于不同的应用模式来提供退出存根。卜尔俺琶亥裙捻谣枕磷秘遭昏纹祟池之寅懂炼乍云淹邀茂掀原峦妓使廉适可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件 初始化文件初始化文件 第一级初始化文件 1)crt0.o 这个初始化文件用于那些运行在独立模式下的程序,这些程序不使用启动引导或调试存根(debug stub),比如:xmdstub。CRT文件填充(populate)复位,中断,异常和硬件异常向量,并且调用第二级启动例程_crtinit。从_crtinit返回,在退出标号执行无限循环来结束程序。郑幻挣雨敬扇搜翌造釉贬孙伺摄帽详捞领吠百骸扁盲响秋杰含阑剿嗽喊汲可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第一级初始化文件 2)crt1.o 当应用程序在软件插入行为下进行调试时,使用该初始化文件。它填充所有的向量(除了断点和复位向量),并且将控制传递到第二级_crtinit启动例程。从_crtinit返回将控制返回XMDStub,用于通知调试器程序已经完成。礼岸肠墒辖氦数巨蕊摧寻呕帛落咸将田慧罢桃孵漾颐嚷常杖鞭靖芥恩区煽可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第一级初始化文件 3)crt2.0 当可执行程序用启动引导代码加载时,使用该初始化文件。它填充所有的向量(除了复位向量),并将控制传递到第2级_crtinit启动例程,从_crtinit返回,通过在退出标记处执行无限循环。由于没有填充复位向量,在处理器复位时,控制被传送到启动引导代码,用于重新加载和重新开始程序。职筋替丧簇馒钾泪奴汝啮播拢缓快展阂邹彪擅眶妓啡真嘉课简笑椿距撩示可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第一级初始化文件 4)crt3.0 当可执行程序没有使用任何向量,并希望减少程序代码时,使用该初始化文件。它只填充复位向量,并将控制传递到第2级_crtint启动例程,并且从_crtinit返回,通过在退出标记处执行无限循环。由于没有填充其它向量,GNU连接机制并不添加任何中断和异常处理相关的例程,这样可以节约代码空间。食穗儒涉鹿扣融靴痴嘱捞峙跳晴咙闸哈晓彤地演哎卤挛两囚犁映辜赤吊幌可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第二级初始化文件 1)crtinit.o 这是默认的第二级C启动文件。该启动文件执行下面的步骤: 1将.bss清除为0 2调用_program_init 3调用“构造器”函数(_init) 4为main函数设置传递参数,并调用该函数 5调用“析构器”函数(_fini) 6调用_program_clean并且返回侥抠旭贱烂抽瘤杂陋辑郡任促嗡蔡柳揭泰像守败楼尸慰居袱前醇西亩仇愈可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第二级初始化文件 2)pgcrtinit.o 该文件在程序统计分析时使用。这个开始文件完成下面的步骤: 1将.bss区域清除为0 2调用_program_init 3调用_profile_init来初始化统计分析库 4调用“构造器”函数(_init) 5为main函数设置传递参数,并调用该函数 6调用“析构器”函数(_fini) 7调用_program_clean,清除统计分析库 8调用_program_clean,并且返回寨厉割污铃电普悬焉骋浩讲寥简臼冒窝囱田涤县邱绷痰骋窟温桃卸藐聂湖可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第二级初始化文件 3)sim-crtinit.o 当编译器使用_mno-clearbss选项时,使用该启动文件。这个开始文件完成下面的步骤: 1调用_program_init 2调用“构造器”函数(_init) 3为main函数设置传递参数,并调用该函数 4调用“析构器”函数(_fini) 5调用_program_clean并且返回裹爪两孩荚瓦邢定霜晤差榔胸掏搅棒假圈具戊好境趣叹踩城凳涨瀑桂庆墅可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第二级初始化文件 4)sim-pgcrtinit.o 在分析统计时,当编译器使用-mno-clearbss选项,使用该启动文件。这个开始文件完成下面的步骤: 1调用_program_init 2调用_profile_init来初始化统计分析库(profiling library) 3调用“构造器”函数(_init) 4为main函数设置传递参数,并调用该函数 5调用“析构器”函数(_fini) 6调用_program_clean,清除统计分析库 7调用_program_clean,并且返回篷酱营蹋禁柒麓祥悠盔冠误蚀描厉杆似疏诵咙帅朝曳章刑植梨迢惩培赛惹可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件初始化文件初始化文件 第二级初始化文件 5)其它文件 编译器也使用某种标准开始和结束文件为C+语言提供支持。包括crti.o,crtbegin.o,crtend.o和crtn.o。这些文件是标准的编译器文件,这些文件为.init,.finit,ctors和.dtors区域提供内容。维拽牛趁秩共炮叭寒怔症柄髓实昼句逻跨贵嘘抠庚囊疚卢捞拜骆偿块掘赖可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件修改启动文件修改启动文件 初始化文件分配给预编译器和源代码中。预编译器目标文件在编译器库目录下可以找到。用于MicroBlazeGNU编译器的初始化文件的源可以在 /sw/lib/microblaze/ Src目录下找到,其中为EDK的安装位置。 惭舔腹纺及坡惜怜砍勿仅隧皋食氓裂贰政行捍栅雕勃闸嵌堪凑赢絮试驱雍可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件修改启动文件修改启动文件 为了实现定制的启动文件要求,设计者可以从源文件区域得到这些文件,并且通过包含这些文件把它作为应用程序的一部分。可以选择的方法是,设计者可以汇编文件为.o文件,并且将其放在公共区域。在调用mb-gcc时使用-B directory-name命令行选项,可以指向新创建的目标文件,而不是标准文件。在最后编译行使用-nostartfiles,防止使用默认的启动文件。粥循咨匹妈警码蜘娠獭牺眷述亿达坷粉悲芳坠脏率钾害峪獭哦狱激莽曲蛰可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件为C程序减少启动代码尺寸 如果对C程序代码的大小有严格的要求,需要去除所有额外的源代码的开销。这部分描述了如何减少调用C+构造器或析构器代码的额外开销。通过这种修改,可以减少大约220字节的代码空间。 1遵守前面部分所描述的为建立来自安装区域的定制拷贝启动文件的规定。 2修改 pg-crtinit.s,并且删除下面的行: brlid r15,_init /调用语言初始化函数 nop brlid r15,_fini /调用语言清除函数 nop挺峨堤襟栽约物同剔裙屎垒店饿忆鳃凋储寨噎有拐勺君队养寇忍裳事簧背可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件为C程序减少启动代码尺寸 3编译这些文件到.o文件中,并将其放在所选择的目录中,或者在应用程序中包含这些文件。 4编译器添加-nostartfile选项。如果需要在特定的文件夹下汇编文件,则添加 B 选项 5编译应用程序 如果应用程序在不同的模式下运行,则选择合适的CRT文件。怔吊体氛咸警瘪籽莱慰逾蒲恨旧醚烟盲柔镣喝净调菏陵默诈抒级寇搔剧埠可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU调试器 GNU调试器(GNU Debugger,GDB)是一个强大而灵活的工具,为在开发的不同阶段用来验证MicroBlaze和PowerPC系统提供了统一的接口。它使用XMD(Xilinx MicroBlaze Debugger)作为基本引擎与处理器目标通讯。 MicroBlaze GDB的使用: mb-gdb options executable file弱她菇殆绽仲戚诡肛悦畦虚膛检汛糙蛤寄嗡拼啊犊弯随宽验雁笋出吼熬翠可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU调试器- GDB调试流程调试流程 1从XPS启动XMD 2连接到处理器目标,位置在 Simulator/ Hardware/ Virtual Platform。通过它为目标打开GDB服务器 3从XPS启动GDB 4在XMD上连接到远程GDB服务器上 5下载程序和调试应用程序郝酷津查扁局峭薄陶愧考涡妒或枫搞铀才件垦桅彤经黑夜邓冤烬求孽遣强可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU调试器- MicroBlaze的的GDB目标目标 MicroBlaze的GNU调试器和XMD工具支持三个可能的远程目标。 通过XMD实现远程调试。通过仿真器目标,硬件目标和虚拟平台目标,主机上开始XMD服务器程序,这对mb-gbb是透明的。周期精确的指令集仿真器(ISS)和硬件接口提供强大的调试工具用于验证一个完整的MicroBlaze系统。通过在TCP/IP套接字上使用远程协议,将调试器mb-gdb连接到XMD。幂十垒虽遏壕欺钉愤左畦徐揣鲜孟罩虑摄颅范迫弧眩聋屯跳高捂疡甭逊惯可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU调试器- MicroBlaze的的GDB目标目标 1)仿真器目标 XMD仿真器是MicroBlaze系统一个周期精确的ISS,指示被仿真的MicroBlaze系统到GDB的状态。 2)硬件目标 使用硬件目标,XMD通过串行电缆或JTAG电缆与运行在目标板上的opb_mdm调试核或xmdstub程序通信,指示运行的MicroBlaze系统到GDB的状态。 3)虚拟平台目标 虚拟平台是一个周期精确的MicroBlaze的固定参考设计。支持LMB和外部存储器,UARTlite和GPIO接口。劲嘴雾岳沂唱坯莽熟贪茨喧艇耶婿塌晚布惹绩芭订惦琅徘离归毗福掂珠涅可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GNU调试器- 在MicroBlaze目标上为调试进行编译 为了调试程序,当编译程序时,必须产生调试信息。调试信息保存在目标文件中;它描述了每个变量或函数的数据类型,以及在源文件行数目和可执行文件的地址的一致性。当指定了合适的修饰符时,用于Xilinx的MicroBlaze软件的mb-gcc编译器包含这个信息。在mb-gcc的-g选项允许执行源代码级的调试。调试器mb-gcc给可执行文件添加合适的调试信息,用于帮助调试代码。mb-gcc调试器提供了在源代码,汇编,以及源程序和汇编混合的调试功能。萎惧页路妮靛镐续商惹悯铁花匙慧锤掖浸玲帕直毁伸蜗赋毕东榴狼灵打煮可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器 Xilinx微处理器调试器(Xilinx Microprocessor Debugger,XMD)是一个工具,用来方便调试程序和验证使用MicroBlaze或PowerPC处理器的系统。可以使用XMD调试运行在硬件板、周期精确的指令集仿真器ISS或者周期精确地虚拟平台系统上的程序。 XMD提供工具命令语言(Tool Command Language ,Tcl)接口。这个接口能用于命令行控制和目标调试,以及运行复杂的测试脚本来测试一个完整的系统。孽尧宽名展驴痊轿甲京擒崇挝疲圭龚钙冲砧雌帅砌尸菇雏掠尿霍蝎辊雇瘫可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器 XMD支持GNU调试器(GDB)远程TCP协议来控制对目标的调试。一些图形化的调试器使用这个接口用来调试,其中包括PowerPC和MicroBlaze GDB,SDK和EDKs的软件IDE。在这些情况下,调试器连接到运行在同一台计算机上的XMD或者连接到网络上的远程计算机。 XMD读取XMP,MHS和MSS系统文件,用于理解所调试的硬件系统。这些信息用于执行存储器范围测试,用于在较快的下载速度下确定MicroBlaze到MDM的连接性和执行其它动作行为。图4.12给出了XMD的目标结构泵创辟圃蔓垦膊齿购栈烩橇闯疹亩兜灸踊埃和励吃瞄雄摆数攀永翔答叔倍可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器Xilinx Microprocessor Debug(XMD)GDB远程协议接口远程协议接口XMD Tcl 接口接口XMD 套接字接口套接字接口MicroBlaze ISSGDB和和SDK手工调试器手工调试器/Tcl脚本脚本外部调试器外部调试器板上板上PowerPC/MicroBlaze处理器处理器使用串口的使用串口的MicroBlaze XMDSTUBPowerPC ISSMicroBlaze UP图图5. 12 XMD目标目标斜垛柬鹊巴衣龋依拷絮票琐糜酶杖嗅羽徒全汲兹抓朴惕娱旅援受霉歌矫回可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-XMD使用 在启动时,XMD执行下面的步骤: 1、如果指定一个XMD的Tcl脚本,XMD执行脚本,然后退出 2、如果没有指定一个XMD的Tcl脚本,XMD开始交互模式。在 这种情况下,XMD执行下面的操作:什麻徽秃棕原份靳绣警稚午藩辛诱役杜颗产吕背考挂琉院召碍啥厘浅团旧可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-XMD使用 1)建立源$HOME/.xmdrc文件。可以使用这个配置文件和 XMD命令来形成定制的Tcl命令。 2)如果有-ipcport选项,则打开XMD套接字服务器。 3)如果有-xmp选项,则加载系统XMP文件。 4)如果有-opt选项,则使用连接选项文件去连接到处理器目标。 5)如果没有-nx选项,当前目录中有xmd.ini文件,则提供它。 6)显示XMD%提示。从XMD Tcl提示中,可以使用XMD命令来 调试。 表5.11给出了XMD用户命令。渭组郭因孩寸蔽倪数累裙龋委卓竞寝漾砒跑屈括浸绑辐各盆宙邢他博忠凝可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项命令命令选项示例用法示例用法描述描述xload xmp xmpfilemhs mhsfilemss mssfilexload xmp system.xmpxload mhs system.mhsxload mss system.mss加加载XMP,MHS,MSS系系统文文件件connect Target connect Type Optionsconnect mb mdmconnect ppc hw连接到目接到目标。有效的目有效的目标文件:文件:mb,ppc,mdmvpconnect mbvpconnect mb连接到接到MicroBlaze虚虚拟平台平台targets target idtargetstargets 0所有所有现在目在目标的列表或者的列表或者现在目在目标的的变化化Disconnectdisconnect 0断开与当前断开与当前处理器目理器目标的的连接,接,关关闭当前当前DGB服服务器,并且器,并且恢复到以前的恢复到以前的处理器目理器目标劳冤兆搐克敢再绑抓凳惋拴单棺菩绑坡朴蜘棕闲狙偶譬詹傣喀鹤巷拄皆卖可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项Debugconfig -step_mode-memory_datawidth_matchingdisable|enable-vpoptions-reset_on_runDebugconfig step_modeenable_interruptDebugconfig memory_datawidth_matching enable为目目标配置配置调试会会话dow -dataaddrdow executable.elfdow executable.elf 0x400dow data system.dat 0x400下下载ELF文件格式或数据文件文件格式或数据文件到当前目到当前目标的存的存储器器runrun从程序的开始地址运行程序从程序的开始地址运行程序conaddressconcon 0x400从当前从当前PC或者地址或者地址继续运行运行stpnumber of instructionsstpstp 10单步步执行行1条或多条指令条或多条指令争椿析牵苞髓奋泣部鸭疗功疮摈犹级露盛占婿昆钒守彩刺辛曝窃苔汾余对可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项cstpnumber of cyclescstpcstp 10单步步执行一个或多个周期行一个或多个周期rst -processorrst复位系复位系统stopstop停止目停止目标rrd reg numrrdrrd r1(or ) rrd R1rrd 1读所有的寄存器或所有的寄存器或读reg num 寄存器寄存器srrd reg namesrrdsrrd pc读特殊目的寄存器或特殊目的寄存器或读reg num 寄存器寄存器rwrreg num|reg name wordrwr pc 0x400寄存器写寄存器写mrd w|h|bmrd 0x400mrd 0x400 10mrd 0x400 10 h从从address开始,开始,读num存存储器器位置;如果指定了位置;如果指定了变量名字,量名字,根据下根据下载的的ELF文件的全局文件的全局变量量读取存取存储器器伤畸衷辫镍夷甫啃池腥甥梭涩或闯辩榆诺华谜困雄檀竭蔬募益脏稳拣罕煽可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项mrd_var Elf filenamemrd gloable_var1executable.elf读存存储器,根据下器,根据下载的的ELF文文件中的全局件中的全局变量量mwr w|h|bmwr 0x400 0x12345678mwr 0x400 0x1234 hmwr 0x400 0x12345678 0x87654321 2写到写到num存存储器开始地址。器开始地址。bpssw|hwbps 0x400bps main hw在在address或或function开始的地开始的地方方设置断点。最后下置断点。最后下载的的ELF文件用来文件用来function查找找watchr|wdatawatch r 0x400 0x1234watch r 0x40x 0x12x4watch r 0b01000000xxxx 0b00010010xxxx0100watch r 0x40x在在address设置置读、写、写监视点。点。如果如果值与与data相比相比较,停在,停在处理器上。理器上。bpr bpr 0x400bpr mainbpr all去除断点去除断点/监视点点荧弥疟羹锤爸郸渡宪杆随影甜卖宪挤佬唾丸滴卵焚土陪呼槽殖莎妇裔炭竿可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项bplbpl列出断点列出断点/监视点点tracestart pc trace filename -function_nametracestart pctrace.txttracestart pctrace.txt function_name fntrace.txttracestart开始搜集指令和函数跟踪信息开始搜集指令和函数跟踪信息到文件到文件tracestopdonetracestoptracestop done停止搜集跟踪信息,停止搜集跟踪信息,选择done指示跟踪停止指示跟踪停止stats filenamestats trace.txtstats为ISS目目标显示示执行行统计。文。文件是来自跟踪搜集的跟踪件是来自跟踪搜集的跟踪输出出profile -o GMON output fileProfile o gproff.out写分析写分析统计(profile)输出文出文件,件,该文件能被文件能被mb-gprof识别来来产生生profile(分析(分析统计)信)信息息state target idstate显示所有目示所有目标的当前状的当前状态或者或者target id目目标臻弟皆耍匿庄萍聊兼婶轻憾抑咳允苇讳墅铬裤筏锤肝趋游君丝痈明翔逗处可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项dis address num_wordsdis 0x400 10反反汇编指令(支持指令(支持MicroBlaze目目标)terminal -jtag_uart_server port noterminalterminal jtag_uart_server 4321基于基于JTAG的超的超级终端与端与mdm UART通信。在通信。在mdm内使能内使能UART接口。接口。如果指定了如果指定了-jtag_uart_server选项,在,在port_no打开打开TCP服服务器。器。使用任何一个超使用任何一个超级终端工具和端工具和opb_mdm的的UART接口通信。接口通信。read_uartstart|stopTCL Channel IDread_uart startread_uart stopread_uart start$channel_id从从mdm UART接口。通接口。通过指定指定一个一个Tcl通道通道ID,O/P能被重新指能被重新指向文件。向文件。VerboselevelVerbose切切换冗余模式冗余模式 ON/OFF。在冗余。在冗余模式,模式,XMD打印打印调试信息信息helpoptionshelphelp inithelp connecthelp connect mb列出所有的命令列出所有的命令竹茵赏肚诀逃疲泵痔派碴咙衅禄蹿坯驭涣如磺见乳陕送忧香歪装吏岸棒荤可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件Xilinx微处理器调试器-连接命令选项连接命令选项 XMD能在不同的目标(处理器或者外设)上调试程序。 为了和目标通信,XMD与目标连接。在连接后,给每个目标分配一个唯一的目标ID。 当与处理器目标连接时,启动gdb服务器,能与GDB服务器或SDK通信。 使用下面的命令进行连接: connect mb|ppc|mdm Options筷妊袜偷董椽哆教听裤杨贩搏斟挺咳梭筐桶痛手咆企拌普模秘哉敲邻微毛可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件连接命令选项连接命令选项- MicroBlaze处理器目标 XMD通过JTAG,并且使用opb_mdm微处理器调试模块外设来连接一个或多个MicroBlaze处理器。XMD可以通过JTAG或串口与ROM监视器通信,比如XMDStub。可以使用MicroBlaze ISS调试程序。晾终蔽贼惭啥卤起茂膳开眯逮维旦桓蓖膊舰蔡旱洋愧促滑啦鸳牧阉陇碗吸可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze MDM硬件目标 使用命令connect mb mdm连接到MDM目标,启动远程GDB服务器。MDM支持非插入式的使用硬件断点和硬件单步的调试(不需要ROM监视器)。图4.13给出了MicroBlaze的MDM目标。 当命令没有使用选项时,XMD自动监测JTAG和包含MicroBlaze-MDM系统的FPGA芯片。如果不能自动连接则使用下面的命令: Connect mb hw-cable -configdevice-debugdevice -pfsl 蛊服茨奶嘲窗冠畅赢选霜近皱襟脾屯麦散勋闽鳃崇绽扯久蹲骤画驳澳避莹可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze MDM硬件目标MicroBlaze调试信号调试信号MicroBlazeMicroBlazeXMDMDMUARTJTAGMicroBlazeMicroBlazePLB总线总线图图5.13 MicroBlaze 的的MDM目标目标赁棠支鸿声垮柏避瑟某爷拟切众超尹病技射夯雌闸局刺放网粹负耽咸崔室可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze MDM目标要求 1)使用MicroBlaze的硬件调试特性,比如硬件断点和硬件调试控制函数(比如停止和单步),MicroBlaze的硬件调试端口必须和MDM和opb_mdm连接。 2)使用MDM目标的UART功能,必须在系统的opb_mdm例化时设置C_USE_UART参数。将程序的STDOUT打印到XMD控制台上,设置C_UART_WIDTH=8踩省绘镑逊乘瓜舰啃楞岿衣膝帝针端推怔荧匪款丑乳陛碎糙果淡趴苟桥抓可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze存根硬件目标 使用XMDStub(运行在目标的ROM监督程序)连接到MicroBlaze目标,并且为目标启动GDB服务器。XMD通过JTAG或串口与XMDStub连接。默认设置使用JTAG接口。 1)MicroBlaze存根 JTAG目标连接命令 Connect mb stub comm jtag -cable -configdevice -debugdevice 2)MicroBlaze存根串口目标连接命令 Connect mb stub comm serial 草填颇祷键颊引廷靶寨陶归喉乐欲摇眩宣钡辰呻还韶赫谴辅溜较历奇子柯可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze存根硬件目标图图5.15 MicroBlaze的的 MDM目标目标本地存储器本地存储器XMDMDMUARTJTAGMicroBlazexmdstubPLB总线总线本地存储器本地存储器XMDUartliteRS-232MicroBlazexmdstubPLB总线总线纯填蛾蛛儡镊蝴颠棚纵烷啤司譬闪绩砾悼邮快股薯记故仰樊沏壤毋雕阁掸可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件存根目标要求 4、使用XMD在硬件板上调试程序,必须满足下面的条件: 1)XMD使用JTAG或串口与板上的XMDStub通信。所以,在 MicroBlaze目标系统的MSS文件中指定opb_mdm或者UART 作为XMDSTUB_PERIPHERAL。 平台产生器能建立一个系统,该系统包括opb_mdm或者 UART(当MHS文件指定),XMDStub模式下的所支持的JTAG 电缆为:Xilinx的并行电缆和平台USB电缆 际目徐溪敛辆存嘶倡烘侗拟柬瓢加锹毁皿增散椽伺唤梗榜潍惹原枕啊黑削可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件存根目标要求 2)板上的XMDStub使用opb_mdm或者UART与主计算机通 讯。因此MicroBlaze系统中必须使用opb_mdm或者URAT。 Libgen工具能配置XMDStub在系统中使用XMDSTUB _PERIPHERAL。Libgen为 XMDSTUB_PERIPHERAL产生一个 配置的XMDStub,并且将其加入到code/xmdstub.elf作为MSS文 件里XMDStub指定的属性。飘赣汰讯獭刽昭阑校陌绣箕概兵侠删匡软吁酌涯硷俯孤供睹纬疹训骄出僚可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件存根目标要求 3)当系统启动时,XMDStub可执行文件必须包含在MicroBlaze 本地存储器中。 Data2MEM能使用XMDStub填充MciroBlaze存储器。Libgen可以产生Data2MEM脚本文件用来去填充包含MicroBlaze系统比特流的BRAM内容。它使用在DEFAULT_INIT所指定的可执行文件。 4)对于那些必须下载程序到板上进行调试的情况,程序地址必须大于0x800,并且程序使用crt1.o内的启动代码。 当使用-xl-mode-xmdstub选项时,mb-gcc编译器程序能满足以上两种情况。陶伴釜翰房亨毯踩俊膘捎寺扛挞猩苇虏气钳唬奇钳宅玲倪趣烟直愚钧扛捐可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze仿真器目标 使用mb-gdb和XMD在精确周期仿真器上调试程序,使用下面的命令: Connect mb sim -memsize 其中,memsize是指在仿真器内所分配的地址总线的宽度。程序可访问的范围是0-(2SIZE-1)。 在ISS上调试程序,必须编译程序用于调试,并且使用ctr0.o内的启动代码来连接它们。使用-g选项时,编译器用调试的信息编译程序。默认,mb-gcc使用ctr0.o连接所有的程序。明确的选项是-xl-mode-executable。存储器的大小不能超过64KB,并且从地址0启动。程序必须保存在存储器的首个64KB的地方。这种仿真下,不支持OPB外设的仿真。权毙鬼勘梅圈矛愧且端翁万寺诈咱涡缄纬轰纬觅赡像身魁冷吕动奖恤蛹厚可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MicroBlaze仿真器目标 6、MDM外设目标 可以连接到opb_mdm外设,使用UART接口去调试系统和搜集系统信息。使用下面的命令进行连接: connect mdm 陋豌降悟晰织忻诧态索伐饼熔药郁汲介遭殆卤拐中峻近待风橇噬茶冲巨煮可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件MDM目标的要求 为了在XMD目标中使用UART功能,当初始化系统中的opb_mdm时必须设置C_USE_UART参数。为了打印程序STDOUT的输出到XMD控制台上,将C_UART_WIDTH设置为8。 通过使用xuart w命令,也能够从主机到MicroBlaze运行程序提供UART输入。使用terminal命令打开超级终端接口从UART进行读/写操作。read_uart命令提供了写到STDIO或者文件的接口。申靴旅烷恃塑秤熔货昨讨驱赐闪焰炎签幼痘逆浩穿剩揭堤了圣鼎佛正团睁可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件系统ACE文件产生器 系统ACE文件产生器(Systerm ACE File Generator,GenACE) ACE文件用来配置FPGA,初始化BRAM,用有效的程序或数据初始化外部存储器,启动处理器。EDK提供Tcl脚本genace.tcl,使用XMD命令产生ACE文件。 产生ACE文件要求下面的工具:genace.tcl,xmd,ISE的iMPACT工具。GenACE具有下面的特点:支持带有MDM目标的PowerPC和MicroBlaze从硬件比特流和软件ELF/数据文件产生ACE文件初始化PowerPC和MicroBlaze系统的外部存储器支持多处理器系统支持单个/多个FPGA芯片系统双炳圣垄扛式滦绩氮概寄杂皂靠揭最貌涝桌药叭采框青鸟臆吩染感拆虱笋可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件 GenACE模型 ACE文件产生支持系统ACE CF配置芯片的配置方案。系统ACE使用JTAG指令和边界扫描链配置芯片。系统ACE CF是一个两片解决方案,要求系统ACE CF控制器,CF卡或者1英寸的微驱动硬盘驱动技术作为存储介质。系统ACE文件从串行向量格式(Serial Vector Format,SVF)文件产生。SVF文件是一个文本文件包含编程指令和配置数据,用于执行JTAG操作。 闺泻撮酬公矿纪郸镐型拭锁签轿唬馏痛焚笨歧唯括跺板劲萨匠敷呆刷磊么可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GenACE模型 XMD和iMPACT为软件和硬件系统文件分别产生SVF文件。SVF文件包括指令和数据用来执行这些操作: (1)使用iMPACT配置FPGA; (2)连接到处理器目标; (3)下载程序,从XMD运行程序。 SVF文件然后转化到ACE文件,然后写到存储介质中。这些操作通过系统ACE控制器执行来实现所确定的操作。外粱合陶贡惫毁什嘲繁拍诈诛耗汰罗橙羊骆忙漾暇妻湖斯呢丫泼卫际沽血可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件GenACE模型 下面是使用iMPACT和XMD对一个简单硬件和软件配置的操作序列,然后转换成ACE文件。 1)使用iMPACT下载比特流,比特流down.bit,包含系统配置和启动代码; 2)使芯片脱离复位状态,引起DONE信号变高。开始启动处理器系统; 3)使用XMD连接到处理器; 4)下载多个数据文件到BRAM或外部存储器; 5)下载多个可执行文件到BRAM或外部存储器。PC指向最后一个下载的ELF文件的开始的位置; 6)从PC指令地址连续执行;市氮辉磅顶特众务驰岛佬旁敖寞稍蒋浅肋泅另揍匣觅韵搭针枚习肿楚彬嘿可编程片上系统开发平台ppt课件可编程片上系统开发平台ppt课件
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号