Nios 2“Hello World”?

时间:2013-07-31 09:13:35

标签: c fpga intel-fpga nios

我已经设法在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中说项目正在下载到电路板上,也没有任何事情发生在电路板上。为什么这件事很难?用户体验非常糟糕,不得不猜测是不科学的。

enter image description here

4 个答案:

答案 0 :(得分:4)

这是来自哥伦比亚大学嵌入式系统设计课程的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 Application和BSP)。

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

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

  6. 更多信息here

答案 1 :(得分:2)

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

示例:

nios2-bsp hal my_bsp --default_stdio uart1

答案 2 :(得分:1)

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

  

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

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

答案 3 :(得分:0)

可能你根本没有理解它的工作方式,基本上

  1. 您必须在所有NIOS II系统中加入JTAG-UART模块。这是系统的CPU调试器和UART通信的组合。
  2. 每当使用pritnf或scanf语句时,硬件中都没有标准IO。因此系统将使用JTAG-UART外设与IDE通信。
  3. 使用相同的USB电缆进行下载以及JTAG UART
  4. 实际上,程序是在硬件中下载并使用与套件连接的USB电缆,在控制台中打印。

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