tty设备驱动问题--为什么设备会把接收到的数据又发送出去?详细见内
调试设备时,发现没有对设备发送数据,但设备的接收端总会收到一些数据。   
 跟踪发现无用数据是linux-2.4.19/drivers/char/serial.c里的rs_put_char函数写进xmit.buf,最后被中断函数发送出去的。 
 而这些无用数据恰好是从设备接收来的数据。为什么会这样呢? 
 n_tty.c中似乎有对rs_put_char函数的间接调用,原理是什么呢?rs_put_char原本应该是应用程序调用的啊……迷糊中……   
 如何让rs_put_char函数只发送应用程序传给设备的数据呢? 
 望高手指教……   
 static   void   rs_put_char(struct   tty_struct   *tty,   unsigned   char   ch) 
 { 
 	struct   async_struct   *info   =   (struct   async_struct   *)tty-> driver_data; 
 	unsigned   long   flags;   
 	if   (serial_paranoia_check(info,   tty-> device,    "rs_put_char ")) 
 		return;   
 	if   (!tty   ||   !info-> xmit.buf) 
 		return;   
 	save_flags(flags);   cli(); 
 	if   (CIRC_SPACE(info-> xmit.head, 
 		                     info-> xmit.tail, 
 		                     SERIAL_XMIT_SIZE)   ==   0)   { 
 		restore_flags(flags); 
 		return; 
 	} 
 	info-> xmit.buf[info-> xmit.head]   =   ch; 
 	info-> xmit.head   =   (info-> xmit.head   +   1)   &   (SERIAL_XMIT_SIZE-1); 
 	restore_flags(flags); 
 } 
------解决方案--------------------Linux的串口默认是调试模式的,它就是接到你发出的数据然后回传,设下相应的参数就可以关掉这种模式