nios II--实验4——按键中断软件部分

软件开发

  1. 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分;打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进行Workspace Launcher(工作空间)路径的设置,需要注意的是路径中不要含有空格等,然后单击OK即可。

?

  1. 新建工程。单击File -> New ->?Nios II Application and BSP from Template,弹出Nios II Application and BSP from Template对话框。先选择对应的SOPC系统,单击SOPC Information File name后面的浏览按钮,选择之前硬件部分做好的软核文件,后缀名为.sopcinfo,这里一定要注意,选择的文件一定要对应起来,否则会因为软硬不匹配导致系统失败。这里选择的lab3_bnt.sopcinfo,然后系统会自动读取CPU name,不用再进行设置,下面填写Project name,这里填写为lab3_bnt,工程模板(Project template)使用默认的即可。然后单击Finish完成即可。这时候会在左侧的Project Explorer中生成两个工程文件。

    代码设计如下,具体看源工程

  2. 右击工程,选择Nios II -> BSP Editor,进入Nios II BSP Editor配置界面。主要在main选项卡下hall中进行配置。然后单击Generate,生成BSP库。生成完成后,单击Exit退出即可。

  3. 编译工程。右击选择Build Project。第一次编译的话,时间也会比较常,耐心等待一下。
  4. 编译完成后,先将.sof文件下载到FPGA;

    ?

  5. 右击工程,选择Run As -> Nios II Hardware,弹出Run Configurations对话框,默认Project选项卡中Project name和Project ELF file name应该都是有内容的,没有的选一下。然后进入Target Connection选项卡,Connections中如果没有东西的话,单击右侧的Refresh Connection来查找下载器,查找后单击System ID Prroperties…,进行系统ID检测,检查是否是之前设置的ID号,无误后点击Apply,然后再点击Run,这是程序会被自动下载,最终在Nios II Console选项卡中会显示下载完成后程序运行的结果。

  6. 运行结果,在调试窗口输出Hello from Nios II!,按下板上的key1按键,调试窗口输出 button interrupt!表明测试成功!

实验代码


/*

* "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>

#include "system.h"

#include "unistd.h"

#include "alt_types.h"

#include "altera_avalon_pio_regs.h"

#include "sys/alt_irq.h"

alt_u8 key_flag =
0;

void ISR_handle_button(
void* context )

{

key_flag =
~key_flag;

printf("button interrupt!\n");

IOWR_ALTERA_AVALON_PIO_EDGE_CAP( BNT_PIO_BASE,
0x0
);
// clear the interrupt

}

void init_button_pio(
void
)

{

IOWR_ALTERA_AVALON_PIO_IRQ_MASK( BNT_PIO_BASE,
0x1
);
// 使能按钮中断

IOWR_ALTERA_AVALON_PIO_EDGE_CAP( BNT_PIO_BASE,
0x0
);
// 清边沿捕获寄存器

alt_ic_isr_register(BNT_PIO_IRQ_INTERRUPT_CONTROLLER_ID, BNT_PIO_IRQ, ISR_handle_button,
NULL,0x0
);

}

int main()

{

int i;

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

init_button_pio();

for( i=0; i<4; i++
)

{

IOWR_ALTERA_AVALON_PIO_DATA( LED_PIO_BASE,
1<<i );

usleep(
10000
);//each one 0.5s delay

}

while(1)

{

if( key_flag )

{

IOWR_ALTERA_AVALON_PIO_DATA( LED_PIO_BASE,
1);

}

else

{

IOWR_ALTERA_AVALON_PIO_DATA( LED_PIO_BASE,
0);

}

}

return
0;

}

时间: 2024-10-11 14:05:29

nios II--实验4——按键中断软件部分的相关文章

【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置

切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: 2. 我们创建了正确的NIOS II软件工程并能够正常运行 3. 由于某种需求(如SRAM内存不够用了,需要换成内存更大的SDRAM),我们在面在QSYS中将NIOS II CPU的复位地址和异常地址修改为SDRAM 4. 我们需要继续使用之前创建的NIOS II软件工程. 这里,如果我们更改后直接

nios II--实验4——按键中断硬件部分

按键中断 硬件开发 新建原理图 1.打开Quartus II 11.0,新建一个工程,File -> New Project Wizard-,忽略Introduction,之间单击?Next>?进入下一步.分别设置工程工作目录.工程名称.这里需要注意的是工程工作目录中请使用英文,不要含有空格等,否则在后面使用Nios II IDE的时候会出现问题.设置好后如图1所示.然后进行下一步.这里工程命名为lab3_bnt 2.添加已经存在的文件,这里没有需要添加的文件,直接单击?Next>?进入

ARM实验5 —— 按键中断实验

key_int按键中断实验 实验内容: 通过开发板上的按键中断控制led灯并打印信息. 通过简单事例说明猎户座4412处理器的GIC中断处理的应用,设置key2按键连接的引脚为中断模式,当识别按键被按下时进入相应的中断处理函数 实验目的: 熟悉开发环境的使用 掌握猎户座4412处理器的中断过程及编程. 实验平台: fs4412开发板,eclipse,secureCRT. 实验步骤: 1.查看key2在开发板的位置: 2.查看UART_RING在核心板的位置: 3.查看GPX1在芯片手册的位置:

在做nios ii uart232 实验时出现undefined reference to `fclose&#39;等错误。

程序如下 #include<stdio.h> #include<string.h> #include "system.h" int main () { char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt = 0; printf("Please Enter some characters: \n"); fp = fopen ("/de

Nios下按键中断

中断类型:电平中断和沿中断. 操作步骤:中断使能,中断类型选择,中断服务函数注册. 这里操作是使用库函数(其实不是函数,就是一种预定义),这样主要是为了提高程序可读性,用的是官方的东西,大家都能看明白. static void Initial_Keys() { IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_OK_BASE,1);//中断使能 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_OK_BASE,0); alt_irq_register(

使用华邦的SPI FLASH作为EPCS时固化NIOS II软件报错及解决方案

Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:"EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash".就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定:并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性

给NIOS II CPU添加一颗澎湃的心——sysclk的使用

给NIOS II CPU添加一颗澎湃的心--系统时钟的使用 ? 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchdog工程复制.粘贴并重命名为08_sysclk_timer.在Quartus II中打开该工程,然后点击Qsys快捷图标打开Qsys组件,如下图所示: 在Qsys中,打开工程目录(08_sysclk_timer)下的mysystem.qsys工程. 打开后,在左侧的IP列表中输入"timer&q

nios II--实验3——led 100M软件部分

软件开发 参照实验二(led),该实验与实验二(led)的不同之处在于系统的时钟由50M提成为100M.运行结果,在调试窗口输出Hello from Nios II!,并且板上的四个LED灯流动显示,表明测试成功!通过此实验证实,板子支持的运行频率足够高,可达到100M. 实验代码 /* * "Hello World" example. * * This example prints 'Hello from Nios II' to the STDOUT stream. It runs

NIOS II 例程之Hello CS

1 新建工程 在quartus ii 中新建一个工程(hello.Prj) 2 Qsys硬件系统搭建 在quartus ii中开启Qsys: 打开Qsys界面发现System Contents下已经有了一个clk_0,如下图所示.为搭建一个最小系统还必须添加一些必要组件,比如NIOS II 处理器.JTAG.onchip_ram.systemID等. 添加JTAG: 添加NIOS II 处理器 添加onchip_ram 添加pio 添加system ID 在system contents 的co