大概有一年没做NIOS II的开发了,回想上一次做NIOS II还是去年做毕业设计的时候。那时候做的是基于SOPC的频率特性测试仪,我大约花了2个月的时间,从无到有的学习了NIOS II开发。学习过NIOS II的都知道,如果没有人带着学,那么最开始的那一段时间一定是最痛苦的,因为几乎每走一步,总会遇到一堆错误。我当时上手的时候,SOPC Builder已经退出了历史舞台,取而代之的是全新的Qsys环境。虽然说是全新,也不过就是在原来的SOPC Builder上升级了一下,但是,升级后,所有的总线都得自己手动来连接了。这让人非常郁闷,因为网上能够找到的教程,大部分都还是讲的SOPC Builder的,SOPC Builder中,这些线是不需要我们自己去连接的,都是默认连接好了的。因此只能硬着头皮,一点一点的去摸索,大约花了一个半月的时间吧,每天都是在痛苦纠结中度过,每天都会遇到各种问题,然后百度上,QQ群里面找答案。经过了这么长时间的一段努力之后,终于,NIOS II开发环节中会遇到的各种问题我都遇到了,也都找到了科学的或者旁门左道的解决方法。
如今,因为项目需要,再次上马NIOS II。不过现在的开发相对以前来说,就要轻松多了,首先是经过一年的深入学习,对于Altera的各种开发环境和工具都已经掌握的很熟练了。其次,我认为也是最重要的,我学会了科学的查找资料,解决问题的方法。以前遇到问题都是各种百度,对官方手册有着绝对的畏惧心理,没有信心去看。在经过了一段时间的项目强化训练之后,回头再来看看,原来看英文手册也就那么回事。现在的我,遇到问题,首先想到的就是去英文数据手册中找答案了。
废话了这么多,现在来总结一下,一年后再次上手NIOS II开发遇到的各种问题与解决方法。当然,我的方法不一定就是最科学的,如果大家有更加科学的解决方法,欢迎探讨。
?
结合上一篇介绍在DE1-SOC上运行NIOS II + UC/OS的内容,本篇就不再详细介绍整个流程,只把过程中容易出错的地方列举出来,以在以后自己忘记了之后能有个查阅的地方。
?
- 在需要最终将程序固化到EPCS的系统中,需要添加EPCS/EPCQx1 Serial Flash Control。该控制器的reset信号一定要与jtag debug module reset信号(cpu模块中)相连,另外,最好其他所有模块的reset信号都与jtag debug module reset信号连接上,否则,在最终通过Flash Programmer固化程序时,会出错。如下图所示:
- epcs的Avalon Memory Mapped端口需要与CPU的data_master和instruction_master均进行连接。如下图所示:
- EPCS的external信号需要导出到顶层(针对Cyclone III和Cyclone IV器件),以便进行引脚分配,如下图所示:
这里,导出到顶层后具体怎么分配引脚,在Altera的《Embedded Peripheral IP User Guide》中有相关介绍,
4、CPU的复位向量设置为EPCS,CPU的异常向量设置为内存(on_chip_memory或SDRAM),如下图所示: