LPC3250 ttyS1,在应用程序中使用了usleep或者使用了线程等待操作,发送数据会出现只能发送一次,后续帧无法发送的问题,必须在超级终端按回车或者通过串口软件发送一个字符后才能发出后来的帧,问题解决如下:
 
将8250.c的__stop_tx函数改为如下代码:
1216 static inline void __stop_tx(struct uart_8250_port *p)
1217 {
1218     struct uart_8250_port *up = (struct uart_8250_port *)p;
1219
1220     if (p->ier & UART_IER_THRI) {
1221         p->ier &= ~UART_IER_THRI;
1222         serial_out(p, UART_IER, p->ier);
1223         if (up->port.line==1){
1224             serial_out(p, UART_IER, 0xFF);//ABING Fix ttyS1 send BUG
1225         }
1226     }
1227 }

为ttyS1进行特别处理,发送完成后,设置U2IER,将IER设置为0xFF即可。

posted on 2012-04-28 15:30  风行雪舞  阅读(400)  评论(0编辑  收藏  举报
无觅相关文章插件,快速提升流量