使用JTAG调试,串口开了FIFO。
问题1:见图1,LSR = 0x60, IER = 0x07, 理论上应该有发送空中断,即IIR应该为0xC2, 但为什么是0xC1呢?(调试过程中发现IIR有时候也会出现0xC2,但通过仿真器单步一条无关指令后,IIR会立马变为0xC1)
问题2:见图2,IIR = 0xCC,IER = 0x07,串口接收到数据应该产生了中断,但为什么CIC中的RAW_STATUS_REG中的相应位没有置位呢?
是我理解不对,还是设置不对,还是说串口有BUG呢,急盼回复。
图1
图2
Andy Yin1:
参考STK UART例程:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
flying9920:
回复 Andy Yin1:
Andy,谢谢。
我是这样使用的,串口使用普通中断模式,没有开EDMA,实现了串口设备驱动(类字符设备驱动),并将printf重定向到了串口设备,并基于串口实现了一个shell。
问题可能没说清楚,并不是完全不能用。在没有使用SRIO时,printf没有问题,串口shell使用都是好的。但在开SRIO后,printf较短字符串没有问题,但printf较长字符串时输出一部分字符后就卡住不动了(我是利用串口发送空中断从缓冲区取数据,然后写入FIFO发送出去,所以卡住的原因是发送空中断没有产生了)。利用仿真器看,串口中断都是打开的(IER=7),并且串口应该产生中断(IIR=0xCC),但CIC中的RAW_STATUS_REG中的相应位没有置位。
能否根据现象解释一下中断没有产生的原因,你给的测试用例,我相信也是没有问题的,但这不是问题的本质。