为软件工程师揭开 FPGA 的神秘面纱
时间:10-18
来源:互联网
点击:
澄清误解
在工程设计界已经出现了一些有关在FPGA中开发处理器代码很困难的误解。我们希望能澄清这些误解。
误解:在FPGA中为处理器编写代码很困难。
事实:大多数FPGA嵌入式处理开发都是在现代化软件开发环境中用C或C++完成的。
许多FPGA供应商现在都支持使用Eclipse进行软件开发。Eclipse是一种支持插件的灵活软件开发环境,提供文本编辑器、编译器、链接程序、调试器、跟踪模块和代码管理等功能。
作为一个开放的环境,Eclipse拥有一个庞大的开发人员社区,不断地增加新功能。例如,如果程序员不喜欢提供的编辑器,他们可以安装一个更符合其需求的编辑器。
误解:FPGA没有像ASSP那样的处理器系统。
事实:现在已经有预置的FPGA软嵌入式处理器设计,也有具备像ASSP那样的外设集的硬处理器设计。
包含软处理器和硬处理器的FPGA增加了一个额外的功能。FPGA嵌入式软处理器参考设计整合了32位RISC处理器、内存接口以及符合行业标准的外设。此类处理器的灵活特性允许用户用逻辑换取额外的性能功能,如增加支持最新操作系统的MMU。众多的FPGA选择使用户可以选择某个处理器配置、外设、数据处理逻辑和逻辑性能级别来满足其系统要求。预置的类似于ASSP的参考设计使得软件设计人员可以立刻开始编写代码,不一定需要硬件工程师先实现一个处理器系统。在许多情况下,预置的设计会满足嵌入式处理器系统的要求,从而无须硬件工程师来进行进一步的处理器系统设计。在少数情况下,硬件工程师拥有一个出色的平台,可以在上面增加外设以及连接定制的硬件加速器。
误解:使用FPGA中的处理器调试代码很困难。
事实:FPGA嵌入式处理器的软件调试跟非嵌入式处理器的调试一样方便。调试器支持下载代码、运行程序、在源代码和对象代码级别单步执行、设置断点、检查存储器和寄存器。另外,还有其他工具可用于对代码进行特性分析和跟踪。
误解:不支持我喜爱的操作系统。
事实:大多数常见的嵌入式处理器都支持最常见的操作系统,并且这个名单还在不断增加中。Xilinx MicroBlaze支持Linux、ThreadX、MicroC/OS-II和eCos等操作系统。
误解:没有驱动程序。
事实:FPGA嵌入式处理器有一个很大的外设库,其中包含了驱动程序。表1是一个有代表性的名单,其中列出了FPGA软处理器可用的一些软外设。所有这些设备都存在相应的驱动程序。
误解:硬件工程师必须先建立它之后我才能编写代码。
事实:可以使用经过测试的预置处理器系统设计,因此可以立即进行软件开发。
这些预置的类似ASSP的处理器系统中包含处理器、内存控制器和内存、闪存控制器以及UART、GPIO和以太网接口等外设。这些系统在交付时都带有参考软件设计实例,其中包括对Linux引导的展示。
误解:无法使用FPGA嵌入式处理器进行特性分析或跟踪。
事实:特性分析和跟踪工具也是可以使用的。开发人员可以通过特性分析了解处理器在各个函数上所用的时间,以及对任何指定函数的调用次数。
误解:FPGA软件开发工具价格太贵了。
事实:ASSP和FPGA供应商为其嵌入式软件开发功能提供的定价在200美元到500美元之间。此外,许多供应商还提供试用版本以及免费或功能受限的版本,另外还有打折的评估套件。
创建和调试代码
FPGA嵌入式处理器系统的软件开发流程遵循一些常规步骤:
● 创建软件开发工作区并导入硬件平台。
● 创建软件项目和板支持包。
● 创建软件。
● 运行并调试软件项目。
可选步骤:对软件项目进行特性分析。
步骤3、4和5是大多数开发人员都熟悉的。有些开发人员可能不熟悉步骤1和2,但这些步骤都很明确。我们将采用Eclipse开发环境作为例子,更具体地了解每个步骤。
创建工作区并导入硬件平台
启动Eclipse以后,系统会提示用户要使用的工作区。工作区就是一个目录路径,用于存储项目文件。接着,用户指定硬件平台(设计)。硬件开发工具会自动生成此文件。该文件对处理器系统进行描述,其中包括存储器接口和外设以及存储器映射。该文件是硬件开发工具的输出内容,硬件工程师通常会向软件开发人员提供此文件。指定以后,就会导入硬件平台,此步骤也宣告完成。
创建软件项目和板级支持包
板级支持包 (board support package,BSP)包含供软件应用使用的库和驱动程序。软件项目是软件应用源和设置。
在针对Xilinx项目定制的Eclipse版本中,可以选择“File(文件)”→“New(新建)”→“Xilinx C Project(Xilinx C项目)”。对于Xilinx C项目,Eclipse会自动创建Makefiles,将源文件编译成对象文件,并将这些对象文件链接到一个可执行文件中。在此步骤中,用户可以定义“Project Name(项目名称)”,通过提供在步骤1中创建的硬件平台名称将其与硬件平台关联,然后指定项目名称。
接下来,系统会确认BSP的生成情况,并根据定义的硬件平台和操作系统自动加载适用的驱动程序。随后会编译这些驱动程序,生成BSP。
在工程设计界已经出现了一些有关在FPGA中开发处理器代码很困难的误解。我们希望能澄清这些误解。
误解:在FPGA中为处理器编写代码很困难。
事实:大多数FPGA嵌入式处理开发都是在现代化软件开发环境中用C或C++完成的。
许多FPGA供应商现在都支持使用Eclipse进行软件开发。Eclipse是一种支持插件的灵活软件开发环境,提供文本编辑器、编译器、链接程序、调试器、跟踪模块和代码管理等功能。
作为一个开放的环境,Eclipse拥有一个庞大的开发人员社区,不断地增加新功能。例如,如果程序员不喜欢提供的编辑器,他们可以安装一个更符合其需求的编辑器。
误解:FPGA没有像ASSP那样的处理器系统。
事实:现在已经有预置的FPGA软嵌入式处理器设计,也有具备像ASSP那样的外设集的硬处理器设计。
包含软处理器和硬处理器的FPGA增加了一个额外的功能。FPGA嵌入式软处理器参考设计整合了32位RISC处理器、内存接口以及符合行业标准的外设。此类处理器的灵活特性允许用户用逻辑换取额外的性能功能,如增加支持最新操作系统的MMU。众多的FPGA选择使用户可以选择某个处理器配置、外设、数据处理逻辑和逻辑性能级别来满足其系统要求。预置的类似于ASSP的参考设计使得软件设计人员可以立刻开始编写代码,不一定需要硬件工程师先实现一个处理器系统。在许多情况下,预置的设计会满足嵌入式处理器系统的要求,从而无须硬件工程师来进行进一步的处理器系统设计。在少数情况下,硬件工程师拥有一个出色的平台,可以在上面增加外设以及连接定制的硬件加速器。
误解:使用FPGA中的处理器调试代码很困难。
事实:FPGA嵌入式处理器的软件调试跟非嵌入式处理器的调试一样方便。调试器支持下载代码、运行程序、在源代码和对象代码级别单步执行、设置断点、检查存储器和寄存器。另外,还有其他工具可用于对代码进行特性分析和跟踪。
误解:不支持我喜爱的操作系统。
事实:大多数常见的嵌入式处理器都支持最常见的操作系统,并且这个名单还在不断增加中。Xilinx MicroBlaze支持Linux、ThreadX、MicroC/OS-II和eCos等操作系统。
误解:没有驱动程序。
事实:FPGA嵌入式处理器有一个很大的外设库,其中包含了驱动程序。表1是一个有代表性的名单,其中列出了FPGA软处理器可用的一些软外设。所有这些设备都存在相应的驱动程序。
误解:硬件工程师必须先建立它之后我才能编写代码。
事实:可以使用经过测试的预置处理器系统设计,因此可以立即进行软件开发。
这些预置的类似ASSP的处理器系统中包含处理器、内存控制器和内存、闪存控制器以及UART、GPIO和以太网接口等外设。这些系统在交付时都带有参考软件设计实例,其中包括对Linux引导的展示。
误解:无法使用FPGA嵌入式处理器进行特性分析或跟踪。
事实:特性分析和跟踪工具也是可以使用的。开发人员可以通过特性分析了解处理器在各个函数上所用的时间,以及对任何指定函数的调用次数。
误解:FPGA软件开发工具价格太贵了。
事实:ASSP和FPGA供应商为其嵌入式软件开发功能提供的定价在200美元到500美元之间。此外,许多供应商还提供试用版本以及免费或功能受限的版本,另外还有打折的评估套件。
创建和调试代码
FPGA嵌入式处理器系统的软件开发流程遵循一些常规步骤:
● 创建软件开发工作区并导入硬件平台。
● 创建软件项目和板支持包。
● 创建软件。
● 运行并调试软件项目。
可选步骤:对软件项目进行特性分析。
步骤3、4和5是大多数开发人员都熟悉的。有些开发人员可能不熟悉步骤1和2,但这些步骤都很明确。我们将采用Eclipse开发环境作为例子,更具体地了解每个步骤。
创建工作区并导入硬件平台
启动Eclipse以后,系统会提示用户要使用的工作区。工作区就是一个目录路径,用于存储项目文件。接着,用户指定硬件平台(设计)。硬件开发工具会自动生成此文件。该文件对处理器系统进行描述,其中包括存储器接口和外设以及存储器映射。该文件是硬件开发工具的输出内容,硬件工程师通常会向软件开发人员提供此文件。指定以后,就会导入硬件平台,此步骤也宣告完成。
创建软件项目和板级支持包
板级支持包 (board support package,BSP)包含供软件应用使用的库和驱动程序。软件项目是软件应用源和设置。
在针对Xilinx项目定制的Eclipse版本中,可以选择“File(文件)”→“New(新建)”→“Xilinx C Project(Xilinx C项目)”。对于Xilinx C项目,Eclipse会自动创建Makefiles,将源文件编译成对象文件,并将这些对象文件链接到一个可执行文件中。在此步骤中,用户可以定义“Project Name(项目名称)”,通过提供在步骤1中创建的硬件平台名称将其与硬件平台关联,然后指定项目名称。
接下来,系统会确认BSP的生成情况,并根据定义的硬件平台和操作系统自动加载适用的驱动程序。随后会编译这些驱动程序,生成BSP。
赛灵思 FPGA 嵌入式 集成电路 电路 硬件工程师 Verilog VHDL C语言 ARM Cortex Xilinx 总线 Linux 相关文章:
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)
- FPGA可帮助搜索引擎降低功耗和碳排放(09-12)
- 基于Spartan-3A DSP的安全视频分析(05-01)
- 赛灵思新版视频入门套件加快视频开发速度(05-29)
- 赛灵思“授之以渔”理论:危机中如何巧降成本(06-04)
- 赛灵思详解新近推出的FPGA领域设计平台(12-16)