This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Serial FIFO problem (i386 only)
- To: "Fabrice Gautier" <Fabrice_Gautier at sdesigns dot com>
- Subject: Re: [ECOS] Serial FIFO problem (i386 only)
- From: "Dave Airlie" <airlied at parthus dot com>
- Date: 22 Nov 2000 13:04:34 +0000
- Cc: "Ecos-List (E-mail)" <ecos-discuss at sourceware dot cygnus dot com>
Hi,
the RT_14 means the FIFO will interrupt after 14 chars, *or* if a
rx timeout occurs on the FIFO (which happens if it doesn't
receive a character within a specified time frame
.... check the pc_serial (out of date I
thought PC use ser_165xx or something similiar), that it process a FIFO rx
timeout correctly..
Dave.
On Tue, 21 Nov 2000, Fabrice Gautier wrote:
> 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
>
--
David Airlie, Software Engineer, Parthus Technologies plc.,
Mary Rosse Centre, National Tech Park, Limerick, Ireland.
t: +353-61-508116 / f: +353-61-508101 / David.Airlie@parthus.com