|
基于FPGA的嵌入式系统设计流程,为系统开发者提供了很多优势,并带来了很多新挑战。 主要的优势是加速了设计流程,使您可以更快地从设计、测试阶段转到营销和销售阶段。 使用这个加速的流程,在整个设计周期内同时考虑硬件和软件设计,显得更为重要。
Accelerated Technology是Mentor Graphics公司的一个分部,已经开发出了与Xinlinx® 嵌入式开发套件(EDK)集成的Nucleus嵌入式软件套件。 在FPGA嵌入式系统设计流程中,提供了软件系统的紧密集成。 EDK是一个基于数据驱动的代码库,它是可扩展的、开放的。 利用这个功能,Nucleus软件可以使基于FPGA的嵌入式系统设计流程实现前所未有的集成度。
用于Xilinx FPGA系统设计的Nucleus嵌入式软件套件,包括一个完整的工具和目标软件平台,包含利用xtUML实现的高级建模和使用基于Eclipse的Nucleus EDGE环境实现的高级目标软件调试。
利用MLD进行自动配置
Xilinx方法的基础技术是微处理器库定义(MLD)。 该技术实现了自动内核配置并可生成板支持包(BSP)。 这种独特的、直接的方法,使Nucleus嵌入式软件套件能够配置EDK中创建的FPGA系统设计。 这样,在每个硬件设计周期,就无需向新的存储器映射和外设报告软件系统。
数据驱动方法
EDK使用两个主要的数据库,来存储于硬件和软件设置相关的信息。 所有与硬件相关的设置都存储在MHS (微处理器硬件描述)文件中,而与软件相关的设置存储在MSS (微处理器软件描述)文件中。 这些文件提供了一个数据库,对任何给定的工程,Xilinx系统中的其它工具都可以访问这个数据库。
如TCL文件中定义的,数据生成元件从MHS数据文件中获取硬件详情,从MLD文件中获取定制信息,并决定生成哪些文件、定制哪些参数。 TCL文件的特定Nucleus函数压缩整个算法,生成Nucleus内核使用的一致信息,支持广泛的硬件IP配置(见图1所示)。
由数据生成文件修改的Nucleus PLUS实时内核元素包括:
- 使用的外设的数量和类型
- 存储器映射信息
- 存储器映射器件寄存器的位置
- 定时器配置
- 中断控制器配置
生成核
目前,Xilinx为FPGA的实现提供了两种处理器选择:PowerPC™ 405硬核处理器和MicroBlaze™软核处理器。 目前,Nucleus嵌入式软件套件支持这两种选项。 一旦您选定了处理器,并在EDK内部配置了您的系统,激活Nucleus就像选择下拉式菜单一样简单。
配置Nucleus和生成BSP
在生成了基本系统设计,并在EDK中选定了核以后,您就可以执行Nucleus嵌入式软件套件了。 如图2所示,我们使用Xilinx MLD技术,将这个功能添加到EDK中。
一旦您对Nucleus进行了配置来满足您的系统要求,就可以直接生成相应的BSP。 从EDK中的Tools(工具)菜单选项中选择“Generate Libraries and BSPs(生成库和BSP)”, 就会构建出正确的库和Nucleus嵌入式套件需要的任何相关应用,以便在您新设计的系统上运行。
利用Nucleus EDGE进行系统调试
现在,您已经指定了硬件,并配置了在您的新平台上运行的Nucleus PLUS内核。 但是,软件开发怎么办? 它会将我们带向何处?
Nucleus EDGE简介
Accelerated Technology提供了基于Eclipse的Nucleus EDGE开发环境,这个完整的开发环境支持PowerPC和MicroBlaze处理器的JTAG调试。 Nucleus EDGE将Eclipse平台进行扩展,可以用于多核、多进程、多线程调试。 它可以单独安装或集成到Platform Studio SDK中,以提供高级调试和项目管理能力。
Nucleus EDGE是先进的调试技术,包括下面的特性:
- 完全多核/多进程/多线程调试,同时支持多核的同步操作
- 高级、类似C的脚本语言(codelets)
- 数据驱动的目标/核/外设描述(XML)
- 支持冻结模式/运行模式调试(取决于操作系统和硬件)
- 可插入式内核识别(数据驱动)
- 可插入式连接器件
- 可插入式核支持
- 可插入式实时跟踪支持
- 可插入式配置引擎
创建和构建应用
Nucleus EDGE提供了一个功能强大的构建和项目管理环境。 Nucleus EDGE生成器是将一个或多个文件从一种格式转换到另一种格式的工具;实例包括将C文件转换成目标模块的编译器或将N个目标模块转换成可执行模块的连接器。 通过向该工具写入简单的XML描述,您可以将工具插入到Nucleus EDGE生成器中。 目前,我们为32种不同的工具套件提供了内置支持,包括用于PowerPC和MicroBlaze处理器的Xilinx GNU。
BSP
当使用Nucleus EDGE指向传统的处理器时,您必须创建并维护调试器和项目管理器使用的BSP。 Nucleus软件与EDK集成的一个优势就是可以自动生成BSP,使维护变得很简单。 当您完成硬件设计并生成了BSP时,也就生成了Nucleus EDGE BSP。 然后,在创建应用的过程中,就可利用该BSP来决定合适的工具缺省值,或在调试时,了解存储器和外设的布局。
着手进行项目管理
Nucleus EDGE提供了功能强大的用户界面,可以改变给定项目的编译器设置,或对特定的文件进行有选择地超越。 如果您了解如何使用它们,您可以随意键入命令行变量,或者使用树状结构仔细研究这些选项,包括命令和允许的设置方面的信息。 无需在含糊不清的编译器文档中找到您需要的设置及其语法(如图3所示)。
编辑和组建
Nucleus EDGE为C/C++和汇编提供功能完备的、上下文相关的编辑器。 编辑器具有下列特性:
- 可配置的语法标记(您可以改变颜色)
- 为您的有效源文件提供导航辅助的概要文件
- 右击导航进行函数调用声明/定义
- 调试过程中,在变量中搜索,显示变量的当前值。另外,您可以定义自己的脚本函数,为您的应用数据类型提供工具提示
- 生成用于函数和宏的代码
构建过程中,您的源代码的任何错误都会显示在构建控制台中。 您可以点击错误,编辑器为您同步到这个位置。 编辑器用特殊图标标记所有的警告或错误来源位置(如图4所示)。 图4也显示了文件右边的概要文件。
调试PowerPC和MicroBlaze处理器
对于Nucleus PLUS内核应用而言,Nucleus EDGE支持运行模式调试,调试单独任务的同时,系统的其余部分继续运行。 为此,可以使用一个串行端口、以太网连接,甚至Xilinx JTAG UART。
对于MicroBlaze处理器而言,目前,Nucleus EDGE支持通过XMD (Xilinx 微处理器调试器)进行调试。 对于PowerPC而言,连接选项包括XMD;或者对于您已经进行例示的PowerPC设计而言,包括专用JTAG扫描链、Abatron的BDI2000和MacCraigor片上系统演示系列连接之类的第三方JTAG器件。
平台调试(硬件/软件协同调试)
通过进行XMD连接而获得的一个有用特性是,您可以同时利用ChipScope™ Pro的硬件调试特性,并且使用Nucleus EDGE调试您的软件。 在ChipScope Pro GUI中,您可以对核内部的信号进行逻辑分析。 然后,您可以对ChipScope Pro分析仪进行配置,在某些外设状态改变等情况下,停止运行处理器。 发生这种情况时,Nucleus EDGE同步,您可以看到事件发生时软件的真实情况。
调试
Nucleus EDGE包括很多用于嵌入式调试的特殊性能。 例如,寄存器视图可以显示出固有的处理器寄存器组和存储器映射的外设。 设置的寄存器中的这些位,在可选择的图形化控制中被突出出来。 位映射寄存器表明位的设置,允许您对其进行单独控制。 图5中,您可以看到“Exception Enable”是MSR中的第6位(位周围的粗框),现在没有设置这个位(蓝色背景)。 用计算器进行二进制变换和位计数来确定位是否被设置的时代,已经一去不返了。 图5还表明上一步改变的值是如何被使用颜色进行编码的(红色)。
断点
除了Platform Studio SDK能力外,Nucleus EDGE提供的其它引人注目的特性是与硬件断点的内置集成。 您可能知道,在给定的MicroBlaze设计中,您可以定位多达8个程序计数器硬件断点(用于步进),以及4个读观测点和4个写观测点。 Nucleus EDGE提供完全集成和图形化方法,设置两种类型的断点。 而且,Nucleus EDGE调试引擎可以使用硬件断点,无缝实现ROM中的步进。
多核调试
设计中可以放入的MicroBlaze核的数目仅受FPGA尺寸的限制。 但是,MicroBlaze调试模块可以同时支持多达8个MicroBlaze核的调试。 Nucleus EDGE用户接口和调试引擎能够产生不同核的同步组。 当其中一个核停止时,组中的所有核都停止。
尽管目前Xilinx不发售支持多核同步控制配置的IP块,如果您拥有FPGA,那么实现这样的IP块是轻而易举的。 仅需要将存储器映射的寄存器和MB_HALT引脚(表明核已经进入调试状态)以及DBG_STOP引脚(命令核进入调试状态)上的一些MUX逻辑结合起来。 这样,当组中的一个核遇到断点或遇到异常时,所有的核停止工作。 然后,在Nucleus EDGE中,您可以提供一个codelet脚本,正确设置这个寄存器。
Codelets/脚本
Nucleus EDGE包括对我们称为“codelets”的脚本语言的支持。语法是标准的ISO/ANSI C,具有一些扩充。 简而言之,codelets是运行在调试器中的脚本,但是,具有完全的可见性和对目标的控制。
您可以访问目标寄存器、存储器和变量,并从codelet中调用目标函数。 您可以阅读和编写主文件和端口。 你可以在调试其图形用户界面打开“通道阅读器”,并通过不同的表达式评估来执行它们。 您可以从命令行调用它们,或者在遇到断点时调用,或者通过在观察窗口键入表达式来调用。 Codelets是一项非常有用的技术。 这项技术使您可以查看您的硬件内部,其它技术是不可能提供这种方法的。 用户使用codelets进行的工作包括:
- 调试过程中进行板初始化
- 复杂的条件断点
- 定制的硬件验证/回归测试
- 虚拟控制台I/O
- “Poor man’s”内核识别
- SmartWatch-具备定义codelet的能力,用来将一个给定的数据类型赋给一个字符串,调试时,为您的数据结构提供很好的工具提示。
通道
Nucleus EDGE包括通信提取,我们称为通道。 任何字节流可称为通道。 文件、sockets和串行口都可以是通道。 Codelets也可以用来产生通道。 另外,图形用户界面提供书写“通道阅读器插件”的能力,这是提交来自这些通道的数据的一种方法。 这种基础结构提供了大量有意义的性能。 目前,Nucleus EDGE与下面的内置通道阅读器一起发售:
- 普通文本控制台I/O(带应用的标准I/O)
- 与VT-100兼容的控制台I/O (支持换码顺序)
- 可以实时描绘任何值随时间变化的带状纪录纸记录器
- Windows Media Player流体插件 (播放MP3、MPEG视频)(仅在Windows主机上)
- 二进制数据阅读器(类似存储器查看,实际上是一个“协议分析仪”)
这些阅读器仅仅是通道应用的起点。 例如,通道也允许我们对配置接口连接的机理或运行模式调试的机理进行提取。 当与Xilinx JTAG UART耦和使用时,可以实现功能强大的基础结构,查看您的应用的内部。
内核识别
Nucleus EDGE内核识别使您可以看到系统状态的瞬象,并提供取决于线程的断点能力。 目前,我们为Nucleus PLUS内核提供现成的内核识别。 不过,Nucleus EDGE也使您可以配置自己的内核识别。 可以用于第三方RTOS、固有核或根本没有RTOS时。
Nucleus EDGE提供数据驱动机理,描述如何复述给定类型的目标并显示它们的特性。 它们甚至不必是软件目标,它们可以是存储器映射的任何东西(如图6所示)。
结论
可配置核是嵌入式开发的未来。 由于Nucleus目标软件的自动配置与利用Nucleus EDGE实现的高级调试结合使用,Accelerated Technology填补了集成系统设计方面长期存在的空白。 通过支持基于PowerPC和MicroBlaze的FPGA系统,Accelerated Technology在竞争中脱颖而出,为FPGA系统设计者提供了无与伦比的软件工具和支持。
了解这些激动人心的技术方面的更多信息、评价和更新,请访问:www.acceleratedtechnology.com/xilinx.
带图形的、可打印PDF英文版文章。 (9/1/05) 320 KB
|