This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Serial FIFO problem (i386 only)


Hi,

I think other people have experienced some problem with serial, but I don't
remember if anyone has reported something like that.

I've configured eCos with a serial driver for com1 (aka /dev/ser0). But i
didn't get any interrutps. When the serial port was used by RedBoot i get
the interrupt (ctrl-C worked).

The IO chip in the PC board seems to be a Winbond w83877F. This is detected
as a 16550a, which is what the doc at winbond.com says it is.

The faulty code is here (pc_serial.c:231):

if (port->deviceType == s16550a)
	pc_outb(port->base + FCR, FCR_FE | FCR_RFR | FCR_TFR | FCR_RT14);

The bad thing is the FCR_RT14: this configure the UART to trigger an
interrupt only when 14 bytes are on. But I only want to read 1 byte. 

changing the whole line to :
	pc_outb(port->base + FCR, 0);
or simply replacing FCR_RT14 by FCR_RT1 seems to works but not very well.

The problem now is that it seems there is always one char keept in some
buffer. I don't get the actual char before sending another char.


Thanks
-- 
Fabrice Gautier
fabrice_gautier@sdesigns.com 



-- 
Fabrice Gautier
fabrice_gautier@sdesigns.com 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]