jiangjx 发表于 2010-10-14 16:38:57

关于nios中printf的问题

最近在调程序才发现:在nios中,有printf的程序,在线调试没有什么问题,但是下到flash里面,程序跑了一段时间就死掉了!
一直想不通这一问题!
不解!!有哪个大虾曾经碰到这一问题的,或者知道原因的,请求解答一下,在下不胜感激!!

jiangjx 发表于 2010-10-14 16:42:37

网上一搜,
发现也有人出现类似的问题,
但是没有提到是什么问题

yangshuhe33 发表于 2010-10-14 21:35:57

nios却实有很多不同寻常之处,有很多都和相像的不一样,比如usleep()的延时就很没规则。
不过你下载到板子里面去了就没必要用printf啊

marco.ma 发表于 2010-10-14 22:36:40

回复【楼主位】jiangjx
最近在调程序才发现:在nios中,有printf的程序,在线调试没有什么问题,但是下到flash里面,程序跑了一段时间就死掉了!
一直想不通这一问题!
不解!!有哪个大虾曾经碰到这一问题的,或者知道原因的,请求解答一下,在下不胜感激!!

-----------------------------------------------------------------------

肯定的啊, jtag_uart有buffer的, 你不插着调试器, jtag_uart输出到buffer满掉后cpu就halt住了。

marco.ma 发表于 2010-10-14 22:41:20

回复【2楼】yangshuhe33
nios却实有很多不同寻常之处,有很多都和相像的不一样,比如usleep()的延时就很没规则。
不过你下载到板子里面去了就没必要用printf啊
-----------------------------------------------------------------------

usleep() 没有规律? 啥意思
我知道如果你的cpu选择最小的那个的话, usleep()会变得不太准, 但是其它两个都是可以的。
而且精确定时, 应用软核的timer或者自己用HDL写一个模块

yuphone 发表于 2010-10-14 22:52:31

回复【3楼】marco.ma
-----------------------------------------------------------------------
肯定的啊, jtag_uart有buffer的, 你不插着调试器, jtag_uart输出到buffer满掉后cpu就halt住了。

这个解释到位。

jiangjx 发表于 2010-10-14 22:53:44

回复【3楼】marco.ma
-----------------------------------------------------------------------

我是插着调试器的啊

jiangjx 发表于 2010-10-14 22:54:42

回复【2楼】yangshuhe33
nios却实有很多不同寻常之处,有很多都和相像的不一样,比如usleep()的延时就很没规则。
不过你下载到板子里面去了就没必要用printf啊
-----------------------------------------------------------------------

是的,我只是想搞清楚是什么问题导致的

yangshuhe33 发表于 2010-10-14 22:55:21

回复【4楼】marco.ma
-----------------------------------------------------------------------

http://www.vvcha.cn/c.aspx?id=194837

jiangjx 发表于 2010-10-14 22:55:53

回复【5楼】yuphone .COM 缺氧®
回复【3楼】marco.ma   
-----------------------------------------------------------------------
肯定的啊, jtag_uart有buffer的, 你不插着调试器, jtag_uart输出到buffer满掉后cpu就halt住了。
这个解释到位。

-----------------------------------------------------------------------

我绝对是插着调试器的

marco.ma 发表于 2010-10-15 09:11:35

回复【9楼】jiangjx
回复【5楼】yuphone .com 缺氧®
回复【3楼】marco.ma   
-----------------------------------------------------------------------
肯定的啊, jtag_uart有buffer的, 你不插着调试器, jtag_uart输出到buffer满掉后cpu就halt住了。
这个解释到位。
-----------------------------------------------------------------------
我绝对是插着调试器的
-----------------------------------------------------------------------

你插着jtag, 同时有看到调试信息不断打印出来吗? 还是仅仅物理上插着而已?

jiangjx 发表于 2010-10-15 16:11:14

回复【10楼】marco.ma
-----------------------------------------------------------------------

没看到有打印出来数据 ,我是插着调试器的
请问你说的插着调试器 是什么意思呢?

yuphone 发表于 2010-10-15 16:26:33

回复【8楼】yangshuhe33
-----------------------------------------------------------------------

这个网站真是的,淡淡(韩彬)写的东西,他转载过去也不注明出处。

sytu_xww 发表于 2010-10-15 16:48:53

将输出映射到UART上面就好了
JTAG_UART是阻塞式输出,他只是将数据输出到buffer中,等待你上位机读取,当你的buffer满了之后就会停止cpu。所以在调试模式下面可以正常运行,因为nios2IDE会读取buffer里面的值。
UART是不管你有没有接受,都会一直发送数据的。不会阻塞CPU。
当你下载到flash里面运行需要改为UART输出信息。

marco.ma 发表于 2010-10-15 20:18:19

回复【11楼】jiangjx
回复【10楼】marco.ma
-----------------------------------------------------------------------
没看到有打印出来数据 ,我是插着调试器的
请问你说的插着调试器 是什么意思呢?
-----------------------------------------------------------------------

当然是说要用nios2-terminal 不停读取jtag-uart的输出才可以。 如果只是物理上插着jtag, 没有用jtag程序看结果, 效果一样。

楼上说的对, 你可以将标准输出设备改成uart, 或者null, 就没有这问题了。

jiangjx 发表于 2010-10-18 10:02:58

回复【14楼】marco.ma
-----------------------------------------------------------------------

原来如此,
要用nios2-terminal 不停读取jtag-uart的输出 该如何来操作呢?
哪里有说明文档呢?
怎么在网上都没看到有类似的解析说明?
页: [1]
查看完整版本: 关于nios中printf的问题