【问题标题】:Nios 2 "Hello World"?Nios 2“你好世界”?
【发布时间】:2013-07-31 17:36:46
【问题描述】:

我设法在 Nios 2 Altera DE2 板上运行了一个复杂的项目,在该板上我使用输入和输出创建了一个带有汇编和 C 代码的计时器。使用 Nios 2 IDE,我可以将项目下载到 DE2 FPGA,时钟按预期运行。但我并不了解编程模型的所有内容,而且我还试图了解基本的 Hello World 示例和 IDE 附带的诊断示例。

Hello World 示例只是

/*
 * "Hello World" example.
 *
 * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on
 * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example
 * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
 * device in your system's hardware.
 * The memory footprint of this hosted application is ~69 kbytes by default
 * using the standard reference design.
 *
 * For a reduced footprint version of this template, and an explanation of how
 * to reduce the memory footprint for a given application, see the
 * "small_hello_world" template.
 *
 */

#include <stdio.h>

int main()
{
  printf("Hello from Nios II!\n");

  return 0;
}

但是当我“作为 Nios 2 硬件”编译和运行它时,它只会在 IDE 中按照标准输出 Hello World,它不会下载并在板上运行 - 不应该这样做吗?如果它不在板上运行,该示例的意义何在?我有没有做错什么,如果是这样,因为示例编译并运行了?我必须设置 BSD 编辑器吗?

更新

它根本不起作用。我在 BSP 编辑器中尝试了不同的组合,但没有任何效果。当我尝试将项目作为“Nios II 硬件”运行时,板上没有任何反应,即使它在 IDE 中显示项目正在下载到板上。为什么容易的事情很难?用户体验很糟糕,不得不猜测是不科学的。

【问题讨论】:

    标签: c fpga intel-fpga nios


    【解决方案1】:

    基本上你可能不了解它的工作流程

    1. 您必须将 JTAG-UART 模块包含到您的所有 NIOS II 系统中。这是系统的 CPU 调试器和 UART 通信的组合。
    2. 无论何时使用 pritnf 或 scanf 语句,硬件中都没有标准 IO。因此系统将使用 JTAG-UART 外设与 IDE 进行通信。
    3. 同样的 USB 数据线用于下载以及 JTAG UART

    实际上程序正在硬件中下载,并使用与套件连接的 USB 电缆,在控制台中打印。

    如果用户希望更改它,请在 BSP 编辑器中进行,但在系统中添加相应的 IP。

    【讨论】:

      【解决方案2】:

      程序正在板上运行。从程序 cmets...

      此示例将“Hello from Nios II”打印到 STDOUT 流。

      本例中的 STDOUT 流是软件终端。所以 Nios II 板正在运行 hello world 程序并将输出发送到计算机。要使用板上的屏幕,您必须在 SOPC builder 的配置中包含 LCD 显示器,然后直接写入 LCD 屏幕。

      【讨论】:

      • 今天我可以通过串口捕获输出,使用程序minicom读取计算机串口,然后我看到FPGA的输出。
      【解决方案3】:

      这是来自哥伦比亚大学嵌入式系统设计课程的a link

      查看link to lab 3,了解在 Altera DE2 板上使用 VHDL 和 C 实现 LED 闪烁。

      此实现使用 Altera Quartus、Nios II 和 SOPC Builder。我将尝试总结以下步骤:

      1. 您需要用 VHDL/Verilog 编写 SRAM 和 LED 控制器才能连接到 Avalon 总线。在 SOPC Builder 上创建一个系统。使用这些控制器在 SOPC Builder 中创建组件(SRAM 和 LED 组件)。

      2. 将组件连接到 Nios II 处理器和 JTAG 调试模块。分配基地址并生成您的系统。

      3. 在 Nios II 中,使用 SOPC Builder 生成的 SOPC 文件创建一个 C 项目(Nios II 应用程序和来自模板的 BSP)。

      4. 将模板中的代码替换为 C 程序(在本例中为 LED 闪光灯程序)。使用您之前生成的基地址访问 LED。

      5. 作为 Nios II 硬件构建和运行您的程序。

      更多信息here

      【讨论】:

      • 在你的答案中包含链接的上下文,以防链接失效,答案仍然相关。
      【解决方案4】:

      根据 Nios II 文档 (Nios II Software Developer’s Handbook),您必须更新您的 BSP 以将 stdout 设置为正确的设备。

      例子:

      nios2-bsp hal my_bsp --default_stdio uart1
      

      【讨论】: