Nios® II 处理器裸机开发人员中心
Nios II处理器裸机开发人员中心页面将帮助您在没有操作系统 (OS) 或实时操作系统 (RTOS) 的情况下开始裸机开发。
简介
裸机开发使用软件运行时环境,无需操作系统 (OS) 或实时操作系统 (RTOS)。为支持裸机开发,英特尔为英特尔® FPGA 中的 Nios II 处理器提供了硬件抽象层 (HAL) 库。您可以将此库用作 FPGA 中 Nios II 处理器系统的设备驱动程序包,并在系统中提供一致的外设接口。
以下链接将帮助您入门英特尔 FPGA 上的裸机开发。如果您是第一次使用,我们建议您按顺序阅读这些资源。
1.前提条件
创建您的“我的英特尔”帐户
- 从“我的英特尔”页面创建您的“我的英特尔”帐户。
- 使用“我的英特尔”帐户,您可以提交服务请求、注册课程、下载软件、访问资源等。
设计注意事项
为何采用裸机方法?
- 使用裸机开发方法的优势如下:
- 对硬件进行绝对控制
- 提升效率
- 最大程度地减小尺寸(闪存和内存占用率)
- 不依赖于其他源代码或库
- 易于验证和代码覆盖率分析
以下情况下您也可以考虑进行逻辑开发:
- 不需要多任务或多线程操作
- 正在执行板卡启动且需要单独关注每个外设
- 正在复用已作为裸机开发的现有旧版代码
裸机考虑因素
要为 Nios II 处理器开发裸机应用程序,您必须熟悉运行时功能的开发,确保您的应用程序有效地利用 CPU 子系统中的可用资源。必要条件的示例如下:
- 深入了解硬件平台
- 由于典型裸机应用程序仅使用一个核心,如果您希望充分利用 CPU 子系统,应该能够开发运行时功能,以便管理核心与缓存子系统之间的进程
- 开发管理和调度进程、处理进程间通信以及同步应用程序内事件的功能
对于您计划的项目,如果没有足够的时间来熟悉以上几点,建议您考虑使用商用 Linux* 或 RTOS 解决方案。
裸机替代方案
考虑到上述因素,通常合理的做法是使用操作系统,以最少的工作量实现 Nios II 处理器的最高性能。
以下表显示了 Linux 操作系统与 RTOS 之间的基本对比。
标准 |
Linux 操作系统 |
RTOS |
---|---|---|
主要差异 |
Linux 操作系统中的任务调度并非基于优先级,因此将公平处理所有线程。此公平政策可实现较高的总体计算吞吐量,但缺点是对分派延迟毫无约束。Linux 中的调度延迟通常随要调度和执行的线程数的增加而累加。 |
RTOS 是基于优先级的系统,可提供抢占式任务调度,以确保及时、确定地响应事件或中断。高优先级且时间紧迫的线程比优先级较低的线程先行执行。RTOS 中的线程具有有限延迟。流程或线程在指定时间限制内执行。 |
应用 |
需要较高的总体计算吞吐量且对时间要求宽松的应用程序的理性选择。 |
需要较快速且可预测响应的应用程序的理想选择。 |
资源 |
需要大量 CPU 资源并占用大量内存。 |
轻巧且占用的内存较少。 |
编码实践 |
通常不遵守严格的编码策略。 |
由于代码必须始终如一地持续执行,因此遵守严格的编码策略。 |
Linux 操作系统
随着 Nios II 处理器中引入内存管理单元 (MMU),您将有大批 Linux 提供商可供选择。英特尔的嵌入式 Linux 合作伙伴包含从提供商业支持的行业领导者到提供免费开源分发版的各类组织,可为您的 Linux 项目提供合适的支持级别。
- RocketBoards.org - 请参阅 Nios II Linux 用户手册,获取社区支持的开源 Linux 分发版。
- LinuxLink by Timesys - 从“板级过滤器”选项卡的“制造商”中选择“英特尔 FPGA”
- Wind River - 从“板级支持包”选项卡的“硬件供应商”中选择“英特尔 FPGA”
- 系统级解决方案 (SLS) - 在“下载”选项卡中选择所需的“板级支持包”
RTOS
简单的 RTOS 易于使用。与使用已实施的 C 函数库类似,无需自行编写这些函数。某些 RTOS 提供对所有外设的全面支持,而其他 RTOS 则仅对其中的一部分提供支持。若您所选的 RTOS 仅支持一部分外设,则 HAL 代码可提供所需的更多支持。欲了解详情,请参阅 Nios II 处理器生态系统网页。
Nios II 嵌入式设计套件 (EDS) 安装过程中将对 MicroC/OS-II RTOS 和全部 ANSI C 源代码进行免费评估。 欲了解详情,请参阅 Micrium MicroC/OS-II 实时操作系统网页。
设计流程图
下图展示了常规 Nios II 处理器系统开发流程。
Nios II 处理器开发流程包含如下所示的三个元素:
- 硬件设计
- 软件设计
- 系统设计,包括硬件和软件
开始 Nios II 处理器开发时,首先确定系统概念并执行系统需求分析。接下来,在 Platform Designer 中创建并生成系统,并生成一个 .sopcinfo 文件。Platform Designer 包括 Nios II 处理器内核、标准组件、自定义指令和外设逻辑。生成系统后,即可启动硬件和软件流程。
对于 Nios II 处理器硬件开发,必须:
- 将 Platform Designer 系统与英特尔® Quartus® Prime 软件项目集成。
- 分配引脚位置。
- 配置时序要求和其他设计约束。
- 编译硬件设计后,将 .sof 文件下载到目标板。
对于 Nios II 处理器软件开发,必须:
- 使用面向 Eclipse 的 Nios II 软件构建工具 (SBT) 开发软件。 Nios II 软件包含 HAL、外设驱动程序、用户 C/C++ 应用程序代码和自动化库。
- 构建应用程序和板级支持包 (BSP) 后,将 .elf 文件下载到目标板上的 Nios II 处理器系统。 Nios II 处理器系统已准备好进行测试和调试。
如果在测试过程中发现您的软件不符合规范,请返回到软件流程的起始位置,检查应用程序代码、驱动程序和 BSP 以纠正任何错误,同时确保 Nios II 处理器系统正常运行。
如果硬件不符合规范,请返回至 Platform Designer 系统定义和生成步骤,并重新启动硬件和软件流程。生成应用软件所需的主要文件是 Platform Designer 信息文件 (.sopcinfo)。由于此文件描述了硬件组件和连接,如果进行硬件更改,必须重新生成此文件。当软件和硬件均符合规范时,此系统即完成。
2.入门
选择目标板
我们建议通过英特尔提供的评估或开发套件开启开发流程,因为提供的大多数示例都在这些板上运行。
- Nios II 处理器评估套件:
- 低成本,易于使用
- 提供完整的设计示例、教程和软件示例
- 许多 Nios II 处理器社区在英特尔 FPGA Wiki 站点上贡献了设计示例和软件
- 示例: 英特尔® MAX® 10 FPGA Nios® II嵌入式评估套件 (NEEK)
- 英特尔 FPGA 开发套件:
- 所有新套件均包括名为主板更新门户的预封装 Nios II 处理器设计示例
- 通过 HTML Web 服务器应用程序开始设计处理器和以太网媒体访问控制 (MAC)
请参阅所有开发套件,获取可用主板的列表。要查看 Design Store 上提供的特定于主板的设计示例列表,请从下拉菜单中选择所需的开发套件。
安装 Nios II 嵌入式设计套件 (EDS)
要安装 Nios II 嵌入式设计套件 (EDS),首先必须从下载中心下载英特尔® Quartus® Prime 软件。英特尔 FPGA 软件安装和许可提供了有关下载和安英特尔® Quartus® Prime 软件(包括 Nios II EDS)的详细说明。
Nios II EDS 是用于 Nios II 软件设计的全面开发包。Nios II EDS 不仅含有开发工具,而且还有软件、设备驱动程序、裸机 HAL 库、一个商用级网络堆栈软件和评估版的 RTOS。
创建您的第一个 Nios II 处理器系统
《AN 717:Nios II硬件开发教程》和《Nios® II软件开发人员手册》可向您介绍Nios II处理器系统开发流程。使用英特尔® Quartus® Prime 软件和 Nios II EDS,您可以构建 Nios II 硬件系统设计并创建在 Nios II 系统上运行并与英特尔® 开发板上的组件对接的软件程序。
3.创建您自己的项目
裸机项目类型
Nios II EDS 可管理两种不同类型的项目。
下表说明了除 Eclipse GUI 外,这两种项目类型之间的差异。
特性 |
基于 GUI 的项目 |
基于命令行的项目 |
---|---|---|
项目类型说明 | 基于图形用户界面 (GUI) 的项目
|
基于命令行的项目
|
项目源文件管理 |
自动指定源文件,如通过拖放到项目进行指定 |
使用命令参数手动指定源文件 |
调试 |
是 |
将项目导入 Eclipse 环境 |
与自定义 Shell 脚本和工具流集成 |
否 |
|
创建项目的建议方法
为 Nios II 处理器编写软件与为任何其他微控制器产品家族编写软件类似。修改现有代码是学习如何在新环境中编写软件的一种常见且便捷的方式。Nios II EDS 提供了许多供您在自己的程序中检查、修改和使用的软件设计示例。
每个 Nios II 处理器程序示例均包括一个应用程序项目、可选的用户库项目 和一个 BSP 项目。
- 应用程序项目:由一系列源代码和一个 makefile 组成。应用程序的一个典型特征是其中一个源文件包含函数 main( )。应用程序中包含用于调用库和 BSP 中函数的代码。Makefile 对源代码进行编译,并将其与 BSP 及一个或多个可选库相链接,以创建一个 .elf 文件。
- 用户库项目是一系列源代码,这些源代码经编译后可创建一个库归档文件 (.a)。库通常包含可复用的通用函数,这些函数可在多个应用程序项目间共享。其中一个例子是一组常见的算数函数。
- BSP 项目:是一个包含系统特定支持代码的专用库,如 HAL、一个可选的自定义 newlib C 标准库、设备驱动程序、可选软件包和可选的实时操作系统。
遵循以下步骤,通过 Nios II SBT 创建软件项目:
- 获取运行软件所用的硬件设计。不论 是 Nios II 处理器设计示例还是其他人开发的设计,您都需要拥有 SOPC 文件 (.sopcinfo)。
- 生成 BSP 设置文件 (settings.bsp),接下来,在定义 BSP 所需的功能后生成一个 BSP makefile。
- 创建用户库(可选)。如果需要包含自定义软件用户库,请将用户库源文件收集到一个目录中,然后生成用户库 makefile。
- 编写应用程序源代码,然后生成一个应用程序 makefile。
- 构建软件项目以生成一个 .elf 文件,然后在您的主板上运行应用程序。
Nios II SBT 包含用于创建 makefile 的工具,这些工具对于 Nios II C 和 C++ 项目的构建至关重要。如果您愿意自行编写代码,那么没必要使用生成的 makefile。但是,我们建议您使用 SBT 管理并修改 BSP makefile。
欲了解更多信息,请参阅 Nios® II 软件开发人员手册。
4.示例
设计示例
英特尔的 Design Store 中提供了大量设计示例,可帮助您入门英特尔 FPGA 产品。所有示例均可作为自行设计的起点,且有些示例是针对特定开发套件而定制的。通过选择 IP 内核下拉菜单中的 Nios II 来搜索 Nios II 处理器设计示例。您还可以过滤其他搜索条件,如设备产品家族、开发套件和英特尔® Quartus® Prime 软件版本。
如何引导 Nios II 处理器应用程序?
要了解如何引导 Nios II 处理器应用程序,请参阅嵌入式设计手册中的“Nios II 配置和引导解决方案”章节。
Nios II 处理器提供了各种引导或软件执行选项。您可以配置 Nios II 处理器以从不同的内存位置引导和执行软件。
Nios II 处理器支持的引导内存:
- 通用闪存接口 (CFI) 闪存
- 英特尔® MAX® 10 FPGA 设备中的用户闪存 (UFM)
- 串行闪存 EPCQ 配置设备
- 四通道串行外设接口 (QSPI) 闪存
- 片上内存 (OCRAM)
Nios II 处理器引导选项:
- 就地执行
- 使用引导复制程序从闪存复制到 RAM
5.更多资源
支持中心
只需点击一次,即可查看帮助内容!支持中心提供从培训课程到设计示例再到论坛的在线技术资源,可指导您完成设计过程中的每个步骤。
知识库
知识库提供了大量支持解决方案、参考文章、错误消息和故障排除指南。它还实现了完全可搜索。
英特尔 FPGA 社区
英特尔社区是一个社区网站,为英特尔 FPGA 用户之间的协作提供支持。请查看 FPGA 开发人员下的 Nios II 嵌入式设计套件 (EDS) 章节。使用搜索引擎查找相关材料。我们还鼓励您进行更新和投稿。
我的英特尔
您可以使用我的英特尔帐户提交服务请求,获取有关特定主题的帮助。您还可以使用它注册培训课程并访问其它资源。需要注册。
基础学习 - 培训课程
以下表列出了在开始开发设计之前可以参加的基础培训课程。
课程 |
培养的技能 |
---|---|
(34 分钟在线课程) |
|
(30 分钟在线课程) |
|
(11 分钟在线课程) |
|
(27 分钟在线课程) |
|
其它文档和资源
以下文档将作为 Nios II 处理器的主要参考。
- 《Nios II软件开发人员手册》 介绍了为 Nios II Gen2 处理器开发嵌入式软件所需的基础信息。本手册中的相关章节介绍了 Nios II 处理器软件开发环境、可用的 Nios II 嵌入式设计套件 (EDS) 工具以及软件开发流程。
- 《嵌入式设计手册》是对嵌入式系统开发主要文档的补充。它介绍了如何最有效地利用工具,并提出了使用英特尔提供的工具开发、调试和优化嵌入式系统的建议设计风格和做法。本手册还向新用户介绍了英特尔嵌入式解决方案的概念,并可帮助有经验的用户提高设计效率。
- Nios II 处理器参考指南介绍了 Nios II Gen2 处理器从高层概念说明到低层实施细节的流程。本手册的相关章节描述了 Nios II 处理器架构、编程模型和指令集。
- 《嵌入式外设 IP 用户指南》介绍了与 Nios II 处理器无缝协作且包含在英特尔® Quartus® Prime 设计软件中的英特尔提供的 IP 内核。IP 内核针对英特尔® 设备进行优化,并可轻松实施,以缩短设计和测试时间。
有关 Nios II 处理器相关文档的完整列表,请访问 Nios II 处理器支持页面。
“工程师对工程师”视频
了解英特尔® 工程师为您带来的“操作方法”视频池。英特尔® FPGA快速视频包含操作方法视频,可帮助您开发FPGA项目。