"); //-->
学习NIOS-II的流程-2——初体验
——艾米电子工作室
2——初步学习体验NIOS
这里包括 LED、 串口、 LCD、 按键输入、 中断、 定时器等等,这个过程跟单片机开发其实没什么区别,只是注意一下NIOS 中软件的开发特点即可,比如对IO的输入输出控制、方向控制等等。
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);】
附一个程序如下:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main (void)
{
alt_u8 led = 0x2;
alt_u8 dir = 0;
volatile int i;
while (1)
{
if (led & 0x81)
{
dir = (dir ^ 0x1);
}
if (dir)
{
led = led >> 1;
}
else
{
led = led << 1;
}
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);
i = 0;
while (i<200000)
i++;
}
return 0;
}
如图所示,程序中的
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);
对端口的输出进行操作,里面的base 对应Quartus中的
out_port_from_the LED[7..0]
注意,NIOS 编程时这个地址一定要大写,而在SOPC Builder中可以小写命名。比如——SM_bit,而程序中必须大写,如下:
IOWR_ALTERA_AVALON_PIO_DATA(SM_SEGMENT_BASE, leddata[i+1]);
IOWR_ALTERA_AVALON_PIO_DATA(SM_BIT_BASE, bit_sel[i]);
NIOS 一个工程的操作步骤顺序:
第一步,建立Quartus工程
这里面包括,在SOPC Builder中建立 NIOS的软核,并定制系统外设,完成基本编译,配置引脚之后,修改一些没有用到的IO属性为三态输入,最后完全编译系统。此时生成系统的配置文件sof。
第二步,建立NIOS IDE开发环境
写C语言代码,并编译工程,开始仿真或者直接调试,调试的技巧需要一点一点的积累总结。不过玩过单片机的朋友,我相信都很熟悉这个的设置与技巧。
第三步:系统的下载
系统编译调试通过后,我们需要把 sof文件和elf文件下载到EPCS配置芯片中,这样下次上电时候才能运行程序。
点击 tools》flash programer 》
第四步-重新定制系统
如果在前三步发现问题,返回差错,然后分别重新编译工程,如果期间需要加入新的模块,也需要重新定制系统,然后重新编译。
这期间由三个步骤的时间耗时非常长,所以为了节省开发时间,尽量不要反复编译工程
1 quartus的完全编译
2 SOPC Builder 生成系统文件
3 NIOS的第一次 Build
硬件系统完成后,NIOS也完成了第一次的完全编译,之后的软件开发工作就相对简单多了,每次只需要简单编译,很快就ok!
补充:run或者debug的时候 有可能会出现如下界面。
nios2-terminal: connected to hardware target using JTAG UART on cable
nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0
nios2-terminal: Warning: The JTAG cable you are using is not supported for Nios
nios2-terminal: II systems. You may experience intermittent JTAG communication
nios2-terminal: failures with this cable. Please use a USB Blaster revision B
nios2-terminal: cable or another supported cable. Please refer to the file
nios2-terminal: errata.txt included in the Nios II development kit documents
nios2-terminal: directory for more information.
nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)
提示 JTAG的类型不匹配,但不影响使用,这里面用公版的USB-Blaster就没有问题的,具体的就不多说了,有可能是软件里面做的手脚。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。