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]
Other format: [Raw text]

RE: Serial getc problem


I have not used this platform (860T), but essentially I did the following
(for ARM Integrator) using the GUI config. tool:

1) In the "Serial device drivers" section, I enabled the "TTY-mode serial
device drivers" subsection (CYGPKG_IO_SERIAL_TTY = 1).
2) In the "TTY-mode serial device drivers" subsection, I enabled the
"TTY-mode channel #0" subsection (CYGPKG_IO_SERIAL_TTY_TTY0 = 1).
3) In the "TTY-mode channel #0" subsection, I specified "TTY-mode device
channel #0 device" as "/dev/ser0" (CYGDAT_IO_SERIAL_TTY_TTY0_DEV =
"/dev/ser0")
4) I also did 2 and 3 for "TTY-mode channel #1" subsection, but this may not
be necessary
5) Check the "Hardware serial device drivers" sections thoroughly to make
sure they are what you want for /dev/ser0 (and /dev/ser1 maybe)
6) In the "ISO C Library" section, "ISO C Library standard input/output
functions" subsection, I specified "Default console device" to be
"/dev/tty0" (CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE = "/dev/tty0")

This allowed me to use printf() and scanf() etc. on /dev/tty0 (and
ultimately /dev/ser0), which should be fully interrupt driven and thus allow
blocking (sleeping) in a thread which is waiting for user input. IIRC,
/dev/ttydiag does a busy polling wait on data on the UART Rx side, which
prevents it from being used effectively in a thread.

HTH

Robert Cragie, Design Engineer

Direct: +44 (0) 114 281 4512
________________________________________________________
Jennic Ltd, Furnival Street, Sheffield, S1 4QT,  UK
www.jennic.com  Tel: +44 (0) 114 281 2655   Confidential


> -----Original Message-----
> From: ecos-discuss-owner@sources.redhat.com
> [mailto:ecos-discuss-owner@sources.redhat.com]On Behalf Of George
> Sosnowski
> Sent: 08 July 2002 17:35
> To: ecos-discuss@sources.redhat.com
> Subject: RE: [ECOS] Serial getc problem
>
>
> I have come across a similar situation using the 860T. My platform has
> one serial port (SMC1 used as diag and console port) and currently I
> inherit the serial channel from redboot. Is it still possible to have a
> 'proper' /dev/tty0 that uses the inherited serial channel (diag/console)
> from redboot? Or does the ecos ram image have to install its own
> /dev/ser0 for console and diag channels since these are the same device?
>
> Thanks,
> George
>
> -----Original Message-----
> From: Robert Cragie [mailto:rcc@jennic.com]
> Sent: Thursday, July 04, 2002 10:26 AM
> To: Daniel Lidsten; ecos-discuss@sources.redhat.com
> Subject: RE: [ECOS] Serial getc problem
>
> You need to use a 'proper' serial driver (/dev/tty0 or /dev/tty1), not
> /dev/ttydiag. These allow blocking reads which will allow other threads
> to
> run; as you  have seen, /dev/ttydiag does a busy wait on a character
> which
> will stop other threads from running. You can configure eCos so that
> stdio
> uses /dev/tty0 or /dev/tty1.
>
> Regards,
>
> Robert Cragie, Design Engineer
>
> Direct: +44 (0) 114 281 4512
> ________________________________________________________
> Jennic Ltd, Furnival Street, Sheffield, S1 4QT,  UK
> www.jennic.com  Tel: +44 (0) 114 281 2655
>
>
> > -----Original Message-----
> > From: ecos-discuss-owner@sources.redhat.com
> > [mailto:ecos-discuss-owner@sources.redhat.com]On Behalf Of Daniel
> > Lidsten
> > Sent: 04 July 2002 17:19
> > To: ecos-discuss@sources.redhat.com
> > Subject: [ECOS] Serial getc problem
> >
> >
> > Hi,
> >
> > I am running a MPC850 with a few different threads in the application.
> > The network stack is also enabled and up and running. However, when a
> > thread calls the HAL_DIAG_READ_CHAR to wait for input from the user
> then
> > my net stack stops working. I cant reach it with a ping from my local
> > host.
> >
> > My first thought was that the application was running with a higher
> > priority (lower value) then the net stack but that was not the case.
> The
> > application runs at prio 8 and net at 6 and 7 (background).
> >
> > I have seen in the serial driver that when reading a char from the
> port
> > then the following is done:
> >
> > while ( !getc_non_block(..) )
> >
> > Can the problem be that this code is running in some form of "kernel
> > state" i.e. in a very high prio state since the driver lies within
> eCos?
> >
> > Regards, Daniel
> >
> > --
> > Before posting, please read the FAQ:
> http://sources.redhat.com/fom/ecos
> > and search the list archive: http://sources.redhat.com/ml/ecos-discuss
> >
> >
>
>
> --
> Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
> and search the list archive: http://sources.redhat.com/ml/ecos-discuss
>
>
> --
> Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
> and search the list archive: http://sources.redhat.com/ml/ecos-discuss
>
>


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


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