• 一.背景介绍
    介于最近在使用FPGA( altera芯片 CYCLONE IV E ) 做项目开发,遂在之前基础上深入探索。使用NIOS II 软内核开发FPGA,在损失一部分FPGA内存资源和逻辑资源的情况下,NIOS能够帮开发者实现类似在ARM、DSP中才能做了复杂逻辑、复杂计算和分析工作。

- 二.工具
1) Quartus ii V13.14 Bit32
2 ) 内部集成工具 Qsys 和 Eclipes等

- 三.Qsys实现操作过程
直接来干货,实现步骤如下 :
1)首先,建立NIOS II 内核,在Qsys中;具体过程在本人上一章中有具体描述;
2)在Qsys工程里,添加 EPCS 控制器模块

3)EPCS模块配置;跟其他模块配置方式相同,
a) 复位引脚配置到CLK模块和JTAG-UART模块,重点:必须两个RESET都连接。
b) 时钟正常配置,连接CLK的时钟;数据总线和NIOS 模块的数据总线连接。
c) External引脚配成外部引脚,重点:必须是外部引脚,在Quartus工程中需要用到。
d) EPCS定义起始地址:这里之前我配置成0x0000的起始地址,导致在ECLIPSE 用FLASH PROGRAM 过程使用无法通道,提示"No EPCS registers found:tried looking at addresses 0x00001000 …"故障;
这个地方网上找了很多排故方式,都徒劳。最后灵光一闪;将它改成 0x7000。后面编译通过下载成功。。。如果有朋友知道真正原因,请指导。
4)生成代码 Gernerate

- 四. Quartus 工程实现
1) 将上述生产的HDL文件,添加到自己的Quartus工程中,(所有都添加)不然容易报错缺少.V文件。
2)在顶层文件中添加刚刚生成的NIOS HDL文件模块名,实例化。
3)将实例化中的EPCS芯片操作引脚分配到FPGA的外部EPCS实际管脚上,这步非常重要;决定了NIOS 能够操作EPCS芯片。注意:这里容易遇到一个问题,EPCS芯片操作引脚无法配置的问题,Quartus提示报错,这里也有解决办法。
工程>Device>Device advanced options > Dual-purpose > 将所有引脚都选 Use as regular I/O 模式,简单理解成这几个EPCS专用引脚配置成通用型引脚。
4)最后编译该工程;生成了JTAG 配置的 sof 文件;
5)将sof文件下载到FPGA中,此时FPGA的内部NIOS就已经跑起来了。只是程序仅仅在FPGA内部RAM中,没有存到外部FLASH内,掉电即消失。

- 五. Eclipse 工程实现
1) 在Quartus工程中启动 Eclipe工具;新建工程 Filse > New > Nios ii application and BSP from Template ,意思是建立实例工程;包含了应用工程和FPGA底层驱动工程。如下所示:三步,第一选择Quartus工程里的"xx.sopcinfo"配置文件,一个工程只有一个;第二步取个名称;第三步骤选择工程模版,这里选用Hellow Word Small ,占用内存小。

2)出现两个工程,其中bsp结尾的是库工程,即FPGA的内存、引脚等等分配说明;

3)我们需要操作的仅仅只有TT2该应用工程;简单举例,在main中添加如下
#include “sys/alt_stdio.h”
#include “altera_avalon_pio_regs.h” // 在bsp工程中的FPGA 操作库

int main()
{
alt_putstr(“Hello from Nios II!\n”);
while (1)
{
IOWR_ALTERA_AVALON_PIO_DATA(0x6000,0xFFFF);
usleep(100000);
IOWR_ALTERA_AVALON_PIO_DATA(0x6000,0x0000);
usleep(100000);
}
return 0;
}
4)测试在RAM中运行;
选择工程,在菜单RUN中RUN AS > NIOS II HARDWARE ;这个时候在ECLIPE 的窗口可以看到运行情况;如果添加了指示灯,在开发部的LED灯将会闪烁。
说明NIOS 运行正常。

5)在进行最后一步,保存ECLIPSE工程与Quartus固件库工程同时到FLASH前;要处理的问题。Eclipse自身问题,需要配置一个文件“ nios2-flash-override.txt ”
首先该文件的目的是,告诉Eclipes软件,你所使用的外部FLASH芯片是什么配置。
然后,操作方法是,直接网上DOWNLOAD,或者新建txt文件,添加下面内容。
[EPCS-202011] # EPCS1N (lead-free)
sector_size = 32768
sector_count = 4

[EPCS-202013] # EPCS4N (lead-free)
sector_size = 65536
sector_count = 8

[EPCS-C22013] # EPCS4N (lead-free)
sector_size = 65536
sector_count = 8

[EPCS-202013] # EPCS4N (lead-free)
sector_size = 65536
sector_count = 8

[EPCS-202015] # EPCS16N (lead-free)
sector_size = 65536
sector_count = 32

[EPCS-202017] # EPCS64N (lead-free)
sector_size = 65536
sector_count = 128

[EPCS-010215] #EPCS32N(lead-free)
sector_size = 65536
sector_count = 64

[EPCS-010216] # EPCS64N (lead-free)
sector_size = 65536
sector_count = 128

[EPCS-FF] # EPCS64N (lead-free)
sector_size = 65536
sector_count = 128

[EPCS-012018] #EPCS128N(lead-free)
sector_size = 262144
sector_count = 64

重点:当你不知道你的外部FLASH名称时,不着急,直接在后面的步骤中看到报故障信息里,会告诉你的FLASH名称。上面加粗的信息是我的FLASH信息。
当然,该TXT文件必须放在 NIOS安装目录下bin文件夹中,才能被识别到。

6)最后一步,写如外部FLASH 。FLASH PROGRAM 工具,在Eclipe软件菜单中NIOS II > FLASH PROGRAM 打开。
a) 添加固件库文件 File > New
添加 Eclipe 的 bsp工程中的固件库设置文件 “settings.bsp”
b) 在 Connection 中 测试 USB Blaster 和 SYStem ID

c) 添加 Quartus的工程文件 .sof 和 Eclipes应用工程文件 .LEF文件
d) 添加 Quartus的工程文件 .sof 和 Eclipes应用工程文件 .LEF文件
将菜单里的OPTIONS,最后四个都勾选。
e) START ,完成。上电重启即可。
f) 最后补充一点:在Qsys配置NIOS内核中,Reset Vator 必须选择 EPCS外设路径。这样启动才会从外部FLASH.

- 六. FLASH总结
1)Eclipse 工程,两个工程,想要使用Qys配置的NIOS外部模块时,必须查看bsp工程。比如:给GPIO输出电平,. IOWR_ALTERA_AVALON_PIO_DATA(0x6000,0xFFFF);

2)Flash Progarm 问题;主要是 START后遇到各种报错;
首先解决,Eclipse不认识FLASH芯片问题,添加上面的txt文件;
然后,在Qsys配置中,设置EPCS芯片的起始地址,如果0x0000,则报错。改为0X7000后正常。

3)对于刚入门的朋友,过程比较曲折,该教程希望能给你带来帮助,少走弯路。

NIOS II 内核使用 之 代码保存FLASH(EPCSX芯片)相关推荐

  1. nios ii 系统架构

    目录 1. NIOS II 处理器架构 ​2.NIOS II 3中运行模式 3. 寄存器文件 4. 异常和中断处理 5. 高速缓冲cache 6. 紧耦合存储器TCM 1. NIOS II 处理器架构 ...

  2. nios 双核 烧录_FPGA烧写NIOS ii程序至FLASH(epcs)中

    硬件平台:黑金开发板 软件平台:quartus 11.0  NIOS II 11.0IDE FPGA芯片:EP4CE6F17C8N 1.      新建工程,bdf文件,这些不做具体说明了,网络资料详 ...

  3. NIOS II程序Flash固化

    目录 NIOS II 程序flash固化 第一部分 EPCS flash固化 第二部分 CFI Flash程序固化 NIOS II 程序flash固化 这两天尝试着NIOS II程序固化,遇到很多问题 ...

  4. nios ii小实验——第一个demo指导书

    1.新建工程:打开Quartus II 13.0,点击File->New Project Wizard,点击Next后可以看到如图2所示的对话框,选择工程路径给工程命名(注意:工程名必须和顶层模 ...

  5. 【连载】【FPGA黑金开发板】NIOS II那些事儿--LED实验(四)

    声明:本文为原创作品,版权归本博文作者所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 这一节,我将给大家讲解第一个与硬件有关的程序,虽然内容简单,却极具代表性. ...

  6. 音频电平vu显示表软件下载_正点原子开拓者 Nios II资料连载第十章MCU TFT-LCD图片显示实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者 Nios II开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://w ...

  7. 【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)

    为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人. 首先需要声明一点,下面部分问题来自网络,如果版权 ...

  8. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...

    实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...

  9. NIOS II 创建示例设计_Quartus II 9.0

    安装设计文件 在继续之前,您必须安装 Quartus II 软件和 Nios II 嵌入式设计套件. 分析系统要求 本部分介绍的教程示例设计的系统要求.设计的目标如下: 有关这些和其他组件,完整详细信 ...

最新文章

  1. 知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞
  2. TorchScript的简介以及项目踩坑
  3. adb——Android的ADB工具使用
  4. 1 MM配置-企业结构-定义-定义评估级别
  5. jquery 获取checkbox 或 select 的选中值(一组和单个)
  6. 最近弄了个新的技术公众号,欢迎大家关注
  7. 代码规范七大原则_设计模式的七大原则详解||上篇
  8. node-red 可视化_可视化和注意-第4部分
  9. [译]直观理解信息论
  10. [ctfshow]web入门——命令执行(web54-web71)
  11. 中英文论文写作指导第三部分(实验、材料和方法部分)
  12. android英文菜单,安卓recovery菜单中英文对照
  13. python列表反向查询_Python反向索引查询
  14. html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
  15. docker-compose开机自启动设置
  16. 声音识别动画(下)-----线形(曲线)声音识别动画
  17. 2876: 吃货排排坐
  18. 思岚科技CES展发布新品“SLAM Cube” 构建智能移动机器人So easy
  19. JAVA 攻城狮 第三天
  20. Python解析html获取超链接地址并下载解析

热门文章

  1. Docker常用操作帅哥专供版
  2. SASS的安装与使用(windows系统)
  3. 虚拟机xp与Linux 【ping命令】
  4. JAVA Date 工具类 常用
  5. PPT文字很多的排版,PPT图片很多的排版,PPT图文排版
  6. 中国网:防火墙之父发声
  7. 重装win7系统后打开截图工具显示“截图工具当前未在计算机上运行”怎么办
  8. 欧文分校计算机科学硕士项目,申请2019加州大学欧文分校计算机科学硕士要求都有哪些?...
  9. 计算机维护维修是干啥的,IT维护主要做些什么工作?
  10. 计算机传输方式:串行传输/并行传输、同步传输/异步传输、单工/半双工/全双工