Board logo

标题: 求助!!uart核通信时串口被占用的问题 [打印本页]

作者: aomaom    时间: 2008-5-22 10:06     标题: 求助!!uart核通信时串口被占用的问题

构建带uart核的niosII之后,进行IDE编程,编译可以通过,但是当在system property中的标准输入输出选择uart时,若使用串口助手来向com1发送数据,则会发生错误提示,说该串口已被占用。若不开串口调试助手则可以运行。
1. 有没有方法可 以让uart核可以接收串口助手发送的数据??
2.在使用uart作为标准的输入输出时,连最简单的hello world都无法得到验证,因为若打开了串口调试助手来观察结果,在IDE运行程序时就会报错,说串口com1已被占用。
3. 若标准输入输出选择null,则可以在debug中看到使用fopen可以正常打开串口(fp返回值不为0),但是run时却运行不出结果,不知什么原因??
4.sopc中加入了jtag_uart核,但在IDE环境中的标准输入输出选项中却只有null和uart两个,难道是因为我使用了sdram的原因吗??
几个问题困扰已久,导致串口程序开发不下去了,还请版主能不吝赐教。。。。。。
感激不尽!!!!

[此贴子已经被作者于2008-5-23 0:11:42编辑过]


作者: aomaom    时间: 2008-5-23 00:13

我想这个问题应该有不少人也遇到过吧,希望各位能在此留个脚印。。。
作者: aomaom    时间: 2008-5-26 16:56

烦请版主大人指点一下拉,遇到这个问题真是郁闷死了。难道必须要把使用串口输出的程序存到flash中才行吗????


作者: kzw    时间: 2008-5-27 17:01

楼主,如果你把标准输入输出口设置为uart的话,那肯定会占用你的com端口。比较好的做法就是用jtag_uart作为标注输入输出端口,这样可以利用编程控制uart和PC的串口通信。

至于你说的你的系统构建有jtag_uart,但是IDE里面没有这个选项,楼主仔细查一下,一般来说不会出现这样的问题。


作者: flanix    时间: 2008-5-27 17:12

我也出现过这个问题,不过好像5.0是可以用的。
作者: aomaom    时间: 2008-5-27 22:42

“至于你说的你的系统构建有jtag_uart,但是IDE里面没有这个选项,楼主仔细查一下,一般来说不会出现这样的问题。”

版主说的对,我在sopc中将jtag_uart与cpu的data master相连了,编译后在IDE中终于有了JTAG_UART选项。

"比较好的做法就是用jtag_uart作为标注输入输出端口,这样可以利用编程控制uart和PC的串口通信。"

版主的意思是说,用jtag_uart来辅助调试pc与uart的通信了?比如把发往uart的信息同时也发往jtag_uart喽?有道理,但最后验证pc的com端是否能收到数据时就只能把程序烧到flash中运行了吧??

[em04][em04]
作者: thanksat    时间: 2008-5-28 10:19

1、jtag_uart是配合console窗口来辅助调试的,在系统属性中把输入输出流重定向到uart目的是为了能让printf等函数能直接使用,如果改为jtag_uart,则printf等函数显示的内容会在console中显示。在调试的时候可以定向到jtag_uart,调试成功之后重定向为uart就可以直接使用了。

2、要把发往uart信息同时发给jtag_uart,要使用指针,因为在系统属性中重定向对象只能选一个。

3、不是必要的,如果选择的调试等级支持running on Hardware,不烧入flash也是可行的

有不对之处请各位指正

[em01][em01][em01]
作者: aomaom    时间: 2008-5-29 16:27

2.版主是指用FILE *fp

fp=fopen("dev/uart")这个命令吧?

3.如果只是running on hardware的话,用串口助手接收时肯定会报com1被占用的!!(我遇到过这种情况)而且现在最担心的是就算把程序烧到flash来运行,在用串口助手接收时还会报com1占用,那样的话把数据通过uart口输出还有什么意义。。。。

肯请版主指点

[em08]
作者: aomaom    时间: 2008-5-31 09:21

自己顶一下,还请高手留下脚印。。

作者: flanix    时间: 2008-5-31 21:39

我有一个解决方法,也是朋友介绍的。

步骤:

一:在你库属性设置输入输出为UART

二:你先运行NIOS程序

三:打三任务管理器,关掉SH—TERMIANL 不知道打错了没,反正就是NIOS那个终端进程。

四:打开串口调试工具,进行你的实验。

如有不明白,欢迎交流!!

[此贴子已经被作者于2008-5-31 21:40:45编辑过]


作者: aomaom    时间: 2008-6-2 23:52

感谢楼上的方法,终于能看到信息了,裸奔中。。。。

[em51]
作者: aomaom    时间: 2008-6-4 11:56

今天又遇到了一个奇怪的问题,在自己的nios核里运行helloworld的示例工程时,以uart作为标准的输入输出时,却在niosIDE的console中看到了helloworld,然后,按照版主的方法,在串口助手中也看到了helloworld(我用了while循环不断输出hello),为什么在console中能看到向uart输出的信息呢????

p.s.我重新编译了另外几个niosII的核,结果都不能在console中看到向uart的输出信息,同时用版主的方法也无法在串口助手中看到向uart输出的信息,真是怪了。。。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0