文章摘要:
本文以流水灯为例,描述了基于NIOS II系统的软件开发流程;


硬件平台:EP4CE6F17C8
开发环境:Nios II 13.1


生成BSP(Board Support Package 板级支持包)

1.打开Nios II 13.1软件,新建BSP工程
File --> New --> Nios II Board Support Package

生成BSP


2.修改BSP
右键项目工程 --> Nios II --> BSP Editor...

完成后点击Generate,并退出。


3.编译工程

右键项目工程 --> Build Project


新建应用工程

File --> New --> Nios II Application
应用项目工程


创建源文件:

右键项目工程 --> New --> Source File

/*
 *  main.c
 *  Created on: 2017-4-18
 *  Author: alex
 */

#include "altera_avalon_pio_regs.h"
#include "system.h"

// 延时程序
void delay(int n)
{
    while(n--);
}

// 主程序
int main(void)
{
    while(1){
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x01);
        delay(500000);
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x02);
        delay(500000);
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x04);
        delay(500000);
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x08);
        delay(500000);
    }
    return 0;
}

编译工程:

右键项目工程 --> Build Project


运行配置:
Run --> Run Configures...

Project
配置

Target Connection
请输入图片描述

点击Refresh Connection,直到显示设备连接(如果一直不显示,则可能是Niso配置有问题);


运行测试:

Run --> Run


PIO接口说明:
PIO接口定义于altera_avalon_pio_regs.h中(bsp/drivers/inc):

IORD_ALTERA_AVALON_PIO_DATA  读数据寄存器
IOWR_ALTERA_AVALON_PIO_DATA  写数据寄存器

IORD_ALTERA_AVALON_PIO_DIRECTION 读方向寄存器
IOWR_ALTERA_AVALON_PIO_DIRECTION 写方向寄存器

IORD_ALTERA_AVALON_PIO_IRQ_MASK  读中断掩码寄存器
IOWR_ALTERA_AVALON_PIO_IRQ_MASK  写中断掩码寄存器

IORD_ALTERA_AVALON_PIO_EDGE_CAP 读中断标识寄存器
IOWR_ALTERA_AVALON_PIO_EDGE_CAP 写中断标识寄存器
     
IOWR_ALTERA_AVALON_PIO_SET_BITS      位操作置位    
IOWR_ALTERA_AVALON_PIO_CLEAR_BITS    位操作清零

实际上此操作接口比较繁琐,不如直接定义寄存器地址指针,然后直接操作更简单:

#define LEDS_PORT    *((volatile int *)(PIO_LEDS_BASE + 0))
LEDS_PORT = x;