[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How do I use rtems_termios_bufsize?! No doc!



Hi,

I have checked the termios configuration again, it seems ok. No software
flow control, no canonical mode. Also the same configuration works fine on a
x86.

I'm using gaisler's console driver and when i opened the rtems driver file
it said this:

 *  WARNING:  In sis 1.6, it did not appear that the UART interrupts
 *            worked in a desirable fashion.  Immediately upon writing
 *            a character into the TX buffer, an interrupt was generated.
 *            This did not allow enough time for the program to put more
 *            characters in the buffer.  So every character resulted in
 *            "priming" the transmitter.   This effectively results in
 *            in a polled console with a useless interrupt per character
 *            on output.  It is reasonable to assume that input does not
 *            share this problem although it was not investigated.

So, can it be that some bytes are lost / not written to the hardware buffer
because each byte causes an interrupt?


Best,
JM


On Fri, Sep 24, 2010 at 3:04 AM, Eric Norum <wenorum at lbl.gov> wrote:

> On Sep 23, 2010, at 6:29 PM, Chris Johns wrote:
>
> > On 23/09/10 7:52 PM, Jo?o Rasta wrote:
> >> Thanks Chris, there are still two things i don't understand:
> >>
> >> 1) When transmitting, the behaviour i expect from the rtems software
> >> buffer is that bytes are read from it one by one and passed to the uart
> >> hardware buffer and then serialized to the serial line. This software
> >> buffer is the raw_output buffer and the cooked buffer will not be used
> >> in this case. Is this correct?
> >
> > It depends on the termios configuration you use. This link may help:
> >
> >
> http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html#tag_11_01_03
> >
> > The section "Non-Canonical Mode Input Processing" is important for you.
> It is sometimes referred to as 'raw-mode'.
> >
> > Some drivers can take more than one character at a time. If you have the
> output cooked it will be buffered into the cooked buffer and transferred to
> the output buffer when a LF or flush happens.
>
> AFAIK the cooked buffer is for input only.  It's size determines the
> maximum line length that can be handled.  The raw input buffer holds
> characters directly from the seial port.  The cooked buffer holds the
> characters after erase/kill processing.
> >
>
> --
> Eric Norum
> wenorum at lbl.gov
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.rtems.org/pipermail/rtems-users/attachments/20100924/2cc8eb7e/attachment.html>