[ECOS] Problem with getchar / gets / fgets
Peter Graf
p.graf@itknet.de
Wed Oct 6 14:44:00 GMT 2004
Nicolas Brouard wrote:
>Hi,
>Does somebody have a council to solve my problem?
>I have a Shell application and input lost a lot of characters. On my PowerPc
>MPC860 target, I have to hit each character several times to display it on
>minicom.
>
>
IIRC you reported that Redboot worked fine, so it reminded me of having
a similar problem. I can only refer to eCos 2.0, but I guess this has
not changed. In io/serial...serial.c, serial_read() attempts to fill a
buffer of more than one character, even if the upper layer has requested
only one, e.g. when the caller was getchar(). Now when your lowlevel
driver supports no interrupt driven buffer fill operation (reflected
here by cbuf->len==0), this will be done by calling several blocking
(funs->getc)(chan), i.e. you must send several characters until the
buffer is filled and serial_read() decides to return to its caller.
Check if the characters properly arrive in your lowlevel driver first.
If they do, it might be related to this. I resolved it by a quick hack
in serial.c, never blocking for more than one character, but the proper
way is an interrupt driven lowlevel driver.
Peter
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list