本文记录了在使用NIOS中遇到的一些问题和相关的原因分析及解决办法,做个总结方便以后查阅。也希望可以帮到有同样问题的攻城狮。本文长期更新,遇到了就写下。
本人使用软件版本:QuartusII 13.0sp1,NIOS13.0sp1
[TIPS]NIOS工程的一些基本设置
这里简单的介绍一下自己在使用NIOS中我常有的一些操作,用来保证整个使用过程中错误的警报数量减少。
- Qsys中,自定义IP核,在Tools中Option添加V文件所在路径
- NIOS中,Project->Properities中添加include 路径,防止出现include后变量查找不到的情况
- 在下载ELF程序时,Run Config钟勾选两个ignore选项框
[ERROR]Qsys添加自定义IP核时综合错误
很多时候我们都需要使用自定义的IP核来完成我们所需要的操作,操作步骤就是在New Components->Files中添加了编写好的V文件然后进行综合。
- 错误产生现象:弹出错误提示框,综合失败。
- 错误原因定位:编写的V文件存在语法错误。
- 对应修改处理:检查编写的V文件,找出错误所在。当工程不大的时候,可以使用一个简便方法,将编写的V文件设置为顶层TOP文件然后编译,根据提示错误进行更改,编译通过后再去Qsys中就不会有错误产生啦。
[ERROR]NIOS程序ELF文件下载失败
- 错误产生现象:下载SOF文件后下载ELF文件失败
- 错误原因定位:Qsys中NIOS核时钟的检查
- 对应修改处理:检查修改Qsys中NIOS核的时钟,将其改正为正确值。
[ERROR]片上RAM资源不足
- 错误产生现象:在NIOS中编译失败,提示改错误
- 错误原因定位:
- 片上RAM资源空间分配不够
- BSP设置不当
- 对应修改处理:
- 检查Qsys中On-Chip RAM的配置空间是否设置过小,如果是将其调大(最大数值可以再QuartusII中看器件信息得知)。
- 如果Qsys中的资源足够仍编译不通过,打开BSP Editor,勾选
enable_small_library
、忘记了后面补充,囧
。
[ERROR]NIOS中断持续触发
- 错误产生现象:程序下载后持续触发中断
- 错误原因定位:
- 进入中断后,需要跳出中断方可
- Qsys中NIOS核的选择类型是否正确,选择精简型即可
- 对应修改处理:
- 在执行完操作后跳出中断,即为中断信号(可以通过读或写寄存器的方式)
- Qsys中NIOS核选择精简型即可,复杂型的需要额外考虑一些知识,暂时还没有使用场景
[ERROR]NIOS下载固化后重新上电程序未能正常运行
- 错误产生现象:elf和sof文件固化下载后断电重启程序未能正常运行,在线写入NIOS后正常,再次固化断电重启仍然异常。
- 错误原因定位:
- 疑似NIOS中的输出printf()造成了一些寄存器的阻塞,但未能实际确定是此原因
- 最终定位为BSP Editor中仍然为JTAG模式造成了该异常
- 对应修改处理:
- 将BSP Editor中的stderr、stdin、stdout由jtag_uart更改为none,然后重新生成bsp文件再次编译工程即可,这里一定要记得再次编译工程。
时间: 2024-10-12 23:51:51