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


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

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


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

- 右击工程,选择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选项卡中会显示下载完成后程序运行的结果。


- 运行结果,板上的四个LED灯流动显示,表明测试成功!通过修改定时器的定时周期可以修改led流动显示的速度。

实验代码
|
/* * "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 "system.h" #include "altera_avalon_pio_regs.h" #include "altera_avalon_timer_regs.h" #include "alt_types.h" #include "sys/alt_irq.h" #include <stdio.h> #include <unistd.h> #include <io.h> #include <string.h> /******************************** variables ********************************/ void init_timer(void); , flag; }; // 这四个是定时器的时钟数,定时时间=定时器的时钟数/定时器的时钟周期 // 该实验中系统时钟为 50MHz,则上述定时时间为{0.1s,0.2s,1s,2s} /* *================================functions================================ Name: main Description: *========================================================================= */ int main(void) { init_timer();// 初始化定时器 ); ; } /* *================================functions================================ Name: ISR_handle_time1 Description: *========================================================================= */ void ISR_handle_timer1(void*context) { // 控制 4 个流水灯闪烁 <<i ); i++; == i ) ; // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_0_BASE,0x0); } /* *================================functions================================ Name: ISR_handle_timer2 Description: 通过定时器 2 来改变定时器 1 的周期,改变后需要重启定时器 *========================================================================= */ void ISR_handle_timer2(void*context) { // 改变定时器 1 的周期 IOWR_ALTERA_AVALON_TIMER_PERIODL( TIMER_0_BASE, timer_prd[j]); ); // 重启定时器 1 IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_0_BASE,0x07); // 闪烁频率先高后低然后又变高 == j ) ; == j ) ; == flag ) j++; else j--; // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_1_BASE,0x0); } /* *================================functions================================ Name: init_timer Description: 定时器初始化 *========================================================================= */ void init_timer(void) { // timer1 // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_0_BASE,0x00); // 设置定时周期 2s,输入的是时钟周期数 ); ); IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_0_BASE,0x07);// 使能中断 alt_ic_isr_register( TIMER_0_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_0_IRQ, ISR_handle_timer1,NULL,0x0);// 注册中断 // timer2 // 清除中断标志寄存器 IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_1_BASE,0x00); // 设置定时周期 10s,输入的是时钟周期数 ); ); IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_1_BASE,0x07);// 使能中断 alt_ic_isr_register( TIMER_1_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_1_IRQ, ISR_handle_timer2,NULL,0x0);// 注册中断 } |
每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。

nios II--实验5——定时器软件部分的更多相关文章
- 给NIOS II CPU添加一颗澎湃的心——sysclk的使用
给NIOS II CPU添加一颗澎湃的心——系统时钟的使用 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchd ...
- Nios II 程序固化(如何下载elf文件)
Nios II 程序固化(如何下载elf文件) 2018年10月15日 21:37:32 瓜儿不甜 阅读数:723 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed perio ...
- 【小梅哥SOPC学习笔记】给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 1. 设置计时溢出时间为1秒 2. 计数器位宽为32位 3. 勾选No Start/Stop control bits 4. 勾选F ...
- 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置
切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- sof文件和NIOS II的软件(elf)合并为jic文件以使用Quartus Programmer烧写
将Altera FPGA的sof文件和NIOS II的elf固件合并为一个jic文件以使用Quartus Programmer烧写 我们在学习和调试NIOS II工程的时候,一般都是先使用Quar ...
- 关于Quartus II 13.0对应开发NIOS II软件程序时报错Symbol 'NULL' could not be resolved问题的解决方法
关于Quartus II 13.0对应开发NIOS II软件程序时报错Symbol 'NULL' could not be resolved问题的解决方法 近期在评估使用NIOS II处理器进行项目的 ...
- 使用华邦的SPI FLASH作为EPCS时固化NIOS II软件报错及解决方案
Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的 ...
随机推荐
- SQL指令中一些特别值得注意的地方
SQL基本指令要频繁使用,要是理解错了,将来工作一定会出现很大的麻烦.今天再重新梳理一下基本的SQL语法 SQL指令 in: 这个指令,我曾经发生过把它和python中的in搞混的错误.python中 ...
- 批处理脚本为Mysql重置root密码(重置密码为123456)
@echo off title mysql ::从注册表找到Mysql的安装路径写入文件mysql.txt reg query HKLM\SYSTEM\ControlSet001\Services\M ...
- df,du,mount
df 查看当前系统中文件系统的使用情况 $df [-aTh]缺省选项查看当前系统的所有文件系统 -a列出所有的信息 -T列出文件系统类型 -hhuman-readable,用合适的单位表示大小 $df ...
- JavaScript为select添加option,select选项变化时的处理,获取slelect被选中的值
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 基于vitamio的网络电视直播源码
这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能 ...
- Android Native 程序逆向入门(一)—— Native 程序的启动流程
八月的太阳晒得黄黄的,谁说这世界不是黄金?小雀儿在树荫里打盹,孩子们在草地里打滚.八月的太阳晒得黄黄的,谁说这世界不是黄金?金黄的树林,金黄的草地,小雀们合奏着欢畅的清音:金黄的茅舍,金黄的麦屯,金黄 ...
- Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异常,或格式不正确。)
以前连接是正常的,就这两天连不上了.(没有耐心的直接看末尾解决办法) 错误消息如下: 1.尝试读取或写入受保护的内存.这通常指示其他内存已损坏.(System.Data) 2.已成功与服务器建立连接, ...
- 查看centos系统版本
1.查看系统版本 [root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) 2.查看内核版本 [ro ...
- MMORPG大型游戏设计与开发(UI SYSTEM SHOW)
接下来一段时间,这些文件可能不再更新,期间我会学习和掌握一些前端知识.虽然我非常欣赏剑侠网络版叁和九阴真经的画面,但是那是一个庞大的游戏引擎,一般人是无法窥伺的,除非你是天才而且要拥有机器毫无中断的毅 ...
- MMORPG大型游戏设计与开发(part2 of net)
网络第二部分的将要给大家描述的是网络代码方面的设计,从基础的代码讲起,了解详细的网络模块构架. 没有放出整个源代码,是因为其中还有许多不足的地方,不过想必大家应该也能猜想出这个项目源码的地址了.不过对 ...