4

我设法在 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 中显示项目正在下载到板上。为什么容易的事情很难?用户体验很糟糕,不得不猜测是不科学的。

在此处输入图像描述

4

4 回答 4

5

这是哥伦比亚大学嵌入式系统设计课程的链接。

查看实验 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 Application 和 BSP from template)。

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

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

更多信息在这里

于 2013-08-16T06:36:34.630 回答
2

从 Nios II 文档(Nios II Software Developer's Handbook)中,您必须更新您的 BSP 以设置stdout为正确的设备。

例子:

nios2-bsp hal my_bsp --default_stdio uart1
于 2013-07-31T09:35:05.180 回答
2

该程序正在板上运行。从节目评论...

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

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

于 2013-08-21T18:55:26.140 回答
0

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

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

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

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

于 2015-04-29T06:12:25.770 回答