今天遇到了奇怪的问题,我以uart作为标准的输入输出,nios核的reset和exception address都设为了SDRAM,而运行时的text和ro也设为了sdram,在用while循环printf(“hello world”)命令时,按理说这时只会向uart输出信息的,可是我在niosIDE的console窗口下也看到了helloworld,关掉nios-terminal进程后,用串口助手也能看到helloworld。可是当我重新编译了sopc核后,就不能在console中看到向uart输出的信息了,同时,再使用串口助手也看不到向uart发出的helloworld了。
实际上,我唯一一次能用串口助手看到信息就是在console中同时可以看到hello的条件下,当console中不显示hello了,在串口助手中也看不到hello了。。。
困惑啊,为什么会在console下看到向uart输出的信息呢???就算这是巧合,那为什么后来重新编译后,就再也不能在串口助手上看到输出信息了呢???
[em14]一般来说不可能同时出现console中和uart同时都有输出的情况,看看你标准输出端口设置在什么地方,是jtag_uart还是uart呢?
使用JTAG_UART进行调试时,要在system library中把stdout\ stdin\ stderr都导向jtag_uart,这样在调试时就会在nios II的console中看到结果了。
nios II在调试时,启动了一个叫nios2-terminal的进程,该进程相当于一个串口调试软件,因此你可以在nios II的console中看到结果。当选择stdout\ stdin\ stderr为JTAG_UART时,nios II会分配一个虚拟的串口给nios2-terminal,但是如果你选择stdout\ stdin\ stderr为其他UART时,nios II会分配一个实际的硬件串口给nios2-terminal,在run的Tatget connetion中可以选择和更改串口号,这样你就没必要使用其他的串口调试软件来调试了。
如果你想同时使用JTAG_UART和其他UART时,system library中就一定不要选上Lightweight device driver API和reduced device drivers,然后在max file descriptors中填上一个合适的数字。这样你就可以在nios II的console中和其他串口调试软件中分别看到JTAG_UART和其他UART发送的数据了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |