Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1226954
  • 博文数量: 479
  • 博客积分: 12240
  • 博客等级: 上将
  • 技术积分: 4999
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 17:12
文章分类

全部博文(479)

文章存档

2014年(1)

2013年(1)

2012年(1)

2011年(95)

2010年(177)

2009年(167)

2008年(16)

2007年(21)

分类: LINUX

2009-11-02 16:44:18


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即可。

阅读(903) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~