原创 【博客大赛】小梅哥FPGA学习笔记之带有JTAG UART 的NIOS II处理器系统异常死机问题解析

2016-1-29 23:40 2319 20 23 分类: FPGA/CPLD 文集: FPGA深入学习

 

    今天,有网友在群里提问“我这个简单的闪灯程序(无其它任何多余的逻辑或*.c),运行久了,居然会死机!运行环境:EPCQ+片上RAM+NIOS II的方式。时钟:37.125MHz,通过JTAG电缆Debug NIOS,则不会。这是怎么回事呀 ?”

1.jpg

    相信这样一个问题,很多人都遇到过,我之前在做NIOS II应用开发时,也遇到过这个问题,当时怀疑是NIOS II不稳定导致的,因为各大网络论坛和QQ群,吐槽NIOS II处理器鸡肋的实在是太多了。这里,小梅哥不去评判NIOS II处理器究运算竟性能几何,稳定性如何,因为各人有各人的观念和实际大环境,有的公司打死不愿用NIOS II,而有的公司做产品却离不开NIOS II。对于一个Altera推广了十多年的软核处理器,我不相信经过十多年的发展,还存在这么弱智的BUG。

    该网友的问题,实际是可以合理解释并且解决的。

 

    因为jtag uart实际是由jtag模拟的,本质上是个fifo,当你在NIOS II中使用printf(alt_putchar、alt_printf、alt_putchar)函数时,实际是将需要发送的数据写入了这个fifo中,这个fifo中的数据由PC机上的NIOS II EDS软件中附带的程序通过JTAG协议去读取并显示在NIOS II Console中。

2.jpg

    那么,假如因为某些原因pc上的console断开(用户手动关闭Console通信,或者JTAG线缆被拔掉),则不会再有程序去持续读取这个fifo中的值,因此,一旦NIOS II中仍旧有发送请求,则会继续去写这个FIFO,因为没有PC机去及时读取这个FIFO中的值,所以当FIFO被写满之后,则NIOS II的JTAG UART驱动会判断得到当前发送FIFO已满,不能再写入数据,因此程序会一直停在这个地方等待,直到FIFO中的数据被读走一部分,以有足够的空间写入需要发送的数据。

    所以,因为console已经断开了,所以永远不会再去读取FIFO中的值了,因此这个FIFO在被写满之后也将永远处于满状态,不能再写入新的数据,所以NIOS II CPU的程序也会一直卡在发送函数这里,不会继续执行,就发生了程序死机的现象。

    另外,大家可能遇到过,带JTAG UART的并经常有数据通过JTAG UART传输的系统,在运行过程中,我们去进行一下其他的操作,然后Eclipse for NIOS II就停止响应了,程序会强制退出,其实也是受这个JTAG UART的影响。我就经常因为不小心就这样把eclipse搞死了,所以我现在比较保守了,一半不使用JTAG UART进行调试,而是直接用RS232 UART来进行调试。

小梅哥

2016年1月29日

芯航线电子工作室

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1526342 2016-2-4 08:46

那么经常遇到Verilog改一行与NIOS无关的程序,编译以后,Verilog程序可以下载,NIOS程序却下载不进去,或者导致其他无关的部分出现错乱,是怎么回事?

用户1526342 2016-2-4 08:43

呵呵,真心遇到过,我当时也是这么分析的,从此之后直接RS232.

用户1465088 2016-2-2 21:34

支持小梅哥,点个赞!
相关推荐阅读
小梅哥 2019-09-04 22:10
小梅哥FPGA时序分析笔记(6.2)深入现象看本质——庖丁解牛之FPGA内数据传输模型
通过上一节,我们了解了FPGA内部数据的传输形式,接下来我们就可以根据上一节的内容来总结一下FPGA内部的数据传输模型了。 时钟和数据传输路径 通过上一节内容中,我绘制的那个FPGA内部数据在逻辑...
小梅哥 2019-09-01 21:28
小梅哥FPGA时序分析笔记(6.1)深入现象看本质——庖丁解牛之FPGA可编程原理
上一次发博客,已经是2个月前了,这中间两个月,干了件很有意义的事情,尤其是对于自己来说,感觉学到了非常多的知识和经验,每天都很忙,忙到没时间逛网站博客,终于忙完闲下来了,连载的事情可不能忘,终于可以书...
小梅哥 2019-07-02 08:57
小梅哥FPGA时序分析笔记(五)I/O约束显神威——深入龙潭
大家一定对我上一节的突然结尾表示一脸茫然:我是来学习时序约束的,然后你告诉我时序约束里面IO约束很重要,然我又跟着你的文章继续往下看,本以为你就要讲如何进行IO约束了,结果呢,你一个取反时钟就把我们打...
小梅哥 2019-06-30 11:07
小梅哥FPGA时序分析笔记(四)I/O时序定成败——化险为夷
小梅哥FPGA时序分析从遥望到领悟系列没有遇见过I/O时序问题,没有通过I/O约束方式实际解决过I/O时序问题,就很难明白I/O约束的重要性,也很难相信各种EDA软件真的有那么的傻白甜。 我遇到的最...
小梅哥 2019-06-22 10:32
小梅哥FPGA时序分析笔记(三)时钟约束真重要——事实说话
小梅哥FPGA时序分析从遥望到领悟系列以前,那是在以前,经常有网友(原谅我行文动不动就是网友说,网友问,毕竟我是卖开发板的,正面接触学FPGA的网友相对多一些,所以这些也都是事实存在的事情)问我:小梅...
小梅哥 2019-06-21 10:33
小梅哥FPGA时序分析笔记(二)时钟质量是生命——初遇时序
小梅哥FPGA时序分析从遥望到领悟系列第一次遇到时序问题并通过相应的手段解决问题,算是2年前做百兆以太网图像传输的时候了吧。当时遇到的问题为:同一个工程,每次编译结果的效果都不一样,有的时候编译了,下...
EE直播间
更多
我要评论
3
20
关闭 站长推荐上一条 /3 下一条