Console problem update
Thomas Doerfler
Thomas.Doerfler at imd-systems.de
Fri Nov 5 14:56:10 UTC 2004
Etienne,
a baud rate difference of 2% is still tolerable, as
fas as I know. And you would be well below.
I just had another look into the data structure
snapshot you sent this morning (last night...). To
my suprise, the "flow_ctrl" fiels is non-zero. The
value 512 means, that the "input is controlled with
XON/XOFF protocol". Maybe you should try to clear
the "IXON" and "IXOFF" flags in the c_iflag field of
termios settings?
wkr,
Thomas.
> Hi Thomas,
> Yes, the buffer is empty. But, it shows that at least 1161 characters
> were received. After that, termios thinks there's no more data received
> or it lost sync or something else.
>
> I said before that my baudrate is really 9630 and not 9600. The computer
> is 9600. Do you think that can be the problem?
>
> Etienne
>
>
>
> -----Message d'origine-----
> De : Thomas Doerfler [mailto:Thomas.Doerfler at imd-systems.de]
> Envoyé : 5 novembre, 2004 02:23
> À : Etienne Fortin
> Objet : RE : RE : Console problem update
>
>
> Etienne,
>
> from the data you sent, the input and output buffer really is
> "empty", (for rawInBuf and rawOutBuf, "Head" and "Tail" have the
> same values) but I guess you already saw this.
>
> Which BSP are you using? Is it possible your console driver
> interrupt gets stuck, when there is a receive and transmit
> interrupt pending at the same time?
>
> wkr,
> Thomas.
>
>
> > Hi Thomas,
> > Yes a VERY nasty problem... It must have something to do with my
> > comprehension and the way I implemented the console driver... But, I
> > was able to make a lot of other things work before (I mean, the
> > balance of
> > RTEMS) and I got nasty problem with RTEMS before. But that one is
> > special. Its so stupid! And I hate to work with transfer protocol. You
> > know you'll be able to make it work, you just don't know when...
> >
> > Anyway, here's the snapshot of the rtems_termios_tty structure when
> > the semaphore get stuck.
> >
> > $2 = {forw = 0x0, back = 0x0, refcount = 3, major = 1, minor = 0, isem
>
> > = 436273159, osem = 436273160, cbuf = 0x80d542a4 "}", ccount = 0,
> > cindex = 0, column = 0, read_start_column = 0, termios = {c_iflag =
> > 9474, c_oflag = 4294967230, c_cflag = 2237, c_lflag = 32768, c_line =
> > 0 '\0', c_cc =
> >
> "\003\034\177\025\004\n\001\000\021\023\032\000\022\017\027\026\000\000"
> > }, vtimeTicks = 100, rawInBuf = {theBuf = 0x80d53a98 "", Head = 1161,
> > Tail = 1161, Size = 2048, Semaphore = 436273162},
> > rawInBufSemaphoreOptions = 0, rawInBufSemaphoreTimeout = 100,
> > rawInBufSemaphoreFirstTimeout = 0, rawInBufDropped = 0, rawOutBuf =
> > {theBuf = 0x80d543b0 "ransfer...\r\n\r\nC\006C.\r\nrawInBuf.Size =
> > 2048\r\nPress a key to begin t", Head = 17, Tail = 17, Size = 64,
> > Semaphore = 436273161}, t_dqlen = 0, rawOutBufState = rob_idle, device
> =
> > {firstOpen = 0x17a2 <console_first_open>, lastClose = 0x17ea
> > <console_last_close>, pollRead = 0, write = 0x16dc
> > <console_interrupt_write>, setAttributes = 0x172c
> > <console_set_attributes>, stopRemoteTx = 0x174e
> > <console_stop_remote_tx>, startRemoteTx = 0x1778
> > <console_start_remote_tx>, outputUsesInterrupts = 1}, flow_ctrl = 512,
> > lowwater = 64, highwater = 96, rxTaskId = 0, txTaskId = 0, t_line = 0,
> > t_sc = 0x0, tty_snd = {sw_pfn = 0, sw_arg = 0x0}, tty_rcv = {sw_pfn =
> 0,
> > sw_arg = 0x0}, tty_rcvwakeup = 0}
> >
> > As you can see, I "hardwired" the rawInBuf to be 2048 characters in
> > size. And surprisingly enough, the Head is at offset 1161. This mean
> > that I received the first 130 bytes packet (init packet) and some part
>
> > of the first data packet. But for some reason, termios lost sync and
> > lost all the next characters, stucking the semaphore and giving me
> > headaches :)
> >
> > What do you think???
> >
> > And by the way, you can't imagine how glad I am to have help from all
> > of you on RTEMS forum.
> >
> > Etienne Fortin
> > Sensio
> >
> >
> >
> > -----Message d'origine-----
> > De : Thomas Doerfler [mailto:Thomas.Doerfler at imd-systems.de]
> > Envoyé : 4 novembre, 2004 16:09
> > À : Etienne Fortin; rtems-users at rtems.com
> > Cc : rtems-users at rtems.com
> > Objet : RE : Console problem update
> >
> >
> > Etienne,
> >
> > can you provide a snapshot of the termios data structures when
> > your console input gets stuck? What values do the buffer
> > pointers have for the raw input buffer?
> >
> > What baud rate are you using currently?
> >
> > What happens, if you write a simple application with two tasks,
> > one sending a 1K buffer to the console, one receiving it, and
> > putting the console into loopback mode (with a nice little wire
> > between pin 2 and 3 of your serial connector)? Does it also hand
> > in that case?
> >
> > You really seem to have a nasty problem there...
> >
> > I have been using termios code for machine interfaces back with
> > RTEMS version 4.0.0, and I never had similar problems...
> >
> > wkr,
> > Thomas.
> >
> >
> > > I don'T know why I tought that even after releasing the sempahore, I
> > > was still stuck in the idle thread. To the contrary! Forcing the
> > > release of the semaphore make the task continue to execute code and
> I
> > > eventually get out of the code with an error (that's ok since the
> > > semaphore was forced to be released so no valid data is there
> > > waiting)...
> > >
> > > The question now is why the code is not notified of new characters.
> > > Is
> >
> > > it possible that the termios code, being designed for "human"
> > > interraction (at least I presume), can't cope with sustained binary
> > > data transfer and so I lost data and eventually the semaphore is
> > > struck waiting for characters that will never come? Is it possible?
> > >
> > > Etienne Fortin
> > > Sensio
> > >
> > >
> > >
> > >
> > >
> > > -----Message d'origine-----
> > > De : Joel Sherrill <joel at OARcorp.com>
> > > [mailto:joel.sherrill at OARcorp.com]
> > >
> > > Envoyé : 4 novembre, 2004 15:21
> > > À : Etienne Fortin
> > > Cc : rtems-users at rtems.com
> > > Objet : Re: Console problem update
> > >
> > >
> > > Etienne Fortin wrote:
> > > > Hello all, its me again, the console guy :)
> > > >
> > > > Little update for the ones that have an interest, or wish to help
> > > > me on that matter.
> > >
> > > Is your interrupt an RTEMS ISR or a raw one directly connected to
> > > hardware? If you do not go through the RTEMS ISR wrapper, you will
> > > NEVER schedule out of an interrupt.
> > >
> > > Also are you sure you are geting the serial port interrupts?
> > >
> > > > I tricked RTEMS to release the semaphore at each clock tick to
> > > > make sure the semaphore was the problem. And surprise surprise! It
>
> > > > still hang in the idle thread!!!!!!!!!
> > > >
> > > > Theory: My task/scheduler/... config is fu***d up. Anyone here
> > > > thinks
> > > > it can be possible? For what I know of the problem so far, it
> seems
> > > > that as soon as the idle thread is entered, no other thread ever
> > gets
> > > > executed... Really seems a config problem to me...
> > > >
> > > > Idea someone?
> > > >
> > > > Etienne Fortin
> > > > Sensio
> > > >
> > >
> > >
> > > --
> > > Joel Sherrill, Ph.D. Director of Research & Development
> > > joel at OARcorp.com On-Line Applications Research
> > > Ask me about RTEMS: a free RTOS Huntsville AL 35805
> > > Support Available (256) 722-9985
> > >
> > >
> >
> > --------------------------------------------
> > IMD Ingenieurbuero fuer Microcomputertechnik
> > Thomas Doerfler Herbststrasse 8
> > D-82178 Puchheim Germany
> > email: Thomas.Doerfler at imd-systems.de
> > PGP public key available at: http://www.imd- systems.de/pgp_keys.htm
> >
> >
>
> --------------------------------------------
> IMD Ingenieurbuero fuer Microcomputertechnik
> Thomas Doerfler Herbststrasse 8
> D-82178 Puchheim Germany
> email: Thomas.Doerfler at imd-systems.de
> PGP public key available at: http://www.imd- systems.de/pgp_keys.htm
>
>
--------------------------------------------
IMD Ingenieurbuero fuer Microcomputertechnik
Thomas Doerfler Herbststrasse 8
D-82178 Puchheim Germany
email: Thomas.Doerfler at imd-systems.de
PGP public key available at: http://www.imd-
systems.de/pgp_keys.htm
More information about the users
mailing list