All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] read data from serial device
@ 2006-03-22 15:46 Marco Jackel
  2006-03-23 10:08 ` [Xenomai-help] " Marco Jackel
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Marco Jackel @ 2006-03-22 15:46 UTC (permalink / raw)
  To: xenomai

Hi there,

ATTENTION: I'm a xenomai-newbie
I want to read data from the serial device

I got the serial driver loop demo from
http://www.captain.at/xenomai-serial-port-example.php
It worked without any problems.
Then I modified the demo to read data only (remove all the write_task
stuff).

But I get this error when I do a "echo 123 > /dev/ttyS0" on a other
computer connected with a serial cable.

> voyage:/usr/src/tests/getserial# ./getserial
> rt_serial_uprog: PRESS CTRL-C to EXIT
> rt_serial_uprog: timer started
> rt_serial_uprog: rtser_file opened
> rt_serial_uprog: serial-port-config written
> rt_serial_uprog: read-task created
> rt_serial_uprog: starting read-task
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (1 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (2 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (3 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (4 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (5 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (6 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (7 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (8 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (9 times)
> rt_serial_uprog: rtser0 (rtser) -> EAGAIN (10 times)
> rt_serial_uprog: delete write_task
> rt_serial_uprog: stop timer
> rt_serial_uprog: exit

and:

> Mar 22 15:02:46 voyage kernel: 00000000
> Mar 22 15:02:46 voyage kernel: PREEMPT
> Mar 22 15:02:46 voyage kernel: Modules linked in: xeno_16550A xeno_rtdm ohci_hcd usbcore sis900 mii dm_mod
> Mar 22 15:02:46 voyage kernel: CPU:    0
> Mar 22 15:02:46 voyage kernel: EIP:    0060:[<00000000>]    Not tainted VLI
> Mar 22 15:02:46 voyage kernel: EFLAGS: 00010002   (2.6.15.4-gx1-25)
> Mar 22 15:02:46 voyage kernel: EIP is at _stext+0x3feffdc0/0xb4
> Mar 22 15:02:46 voyage kernel: eax: c0316b80   ebx: c03168e0   ecx: c03173a0   edx: c03168e0
> Mar 22 15:02:46 voyage kernel: esi: 00000004   edi: c03168e8   ebp: c03173d0   esp: cdc8ddd4
> Mar 22 15:02:46 voyage kernel: ds: 007b   es: 007b   ss: 0068
> Mar 22 15:02:46 voyage kernel: Process read_task (pid: 1320, threadinfo=cdc8c000 task=ce951a50)
> Mar 22 15:02:46 voyage kernel: Stack: c010c6ad 00000004 00000000 cffdf2fa 00000048 c03173e0 00000000 c03168e0
> Mar 22 15:02:46 voyage kernel:        ffffffff 00000001 00000000 00000002 c03168e0 c03168e0 00000046 c012f6fe
> Mar 22 15:02:46 voyage kernel:        018f7a35 00000048 00000000 00000000 ffffffd5 ce84a110 d0054c07 c02482c6
> Mar 22 15:02:46 voyage kernel: Call Trace:
> Mar 22 15:02:46 voyage kernel:  [__ipipe_sync_stage+468/606] __ipipe_sync_stage+0x1d4/0x25e
> Mar 22 15:02:46 voyage kernel:  [ipipe_unstall_pipeline_from+196/238] ipipe_unstall_pipeline_from+0xc4/0xee
> Mar 22 15:02:46 voyage kernel:  [pg0+265423879/1070375936] rtdm_event_timedwait+0x167/0x171 [xeno_rtdm]
> Mar 22 15:02:46 voyage kernel:  [tcp_v4_rcv+1295/2273] tcp_v4_rcv+0x50f/0x8e1
> Mar 22 15:02:46 voyage kernel:  [pg0+265260884/1070375936] rt_16550_ioctl+0x571/0x70e [xeno_16550A]
> Mar 22 15:02:46 voyage kernel:  [xnpod_announce_tick+83/164] xnpod_announce_tick+0x53/0xa4
> Mar 22 15:02:46 voyage kernel:  [xnintr_clock_handler+16/19] xnintr_clock_handler+0x10/0x13
> Mar 22 15:02:46 voyage kernel:  [__ipipe_sync_stage+468/606] __ipipe_sync_stage+0x1d4/0x25e
> Mar 22 15:02:46 voyage kernel:  [pg0+265416973/1070375936] rtdm_context_get+0x10d/0x116 [xeno_rtdm]
> Mar 22 15:02:46 voyage kernel:  [pg0+265418994/1070375936] _rtdm_ioctl+0x3c/0x50 [xeno_rtdm]
> Mar 22 15:02:46 voyage kernel:  [pg0+265428189/1070375936] sys_rtdm_ioctl+0x15/0x19 [xeno_rtdm]
> Mar 22 15:02:46 voyage kernel:  [hisyscall_event+521/768] hisyscall_event+0x209/0x300
> Mar 22 15:02:46 voyage kernel:  [__ipipe_dispatch_event+91/222] __ipipe_dispatch_event+0x5b/0xde
> Mar 22 15:02:46 voyage kernel:  [__ipipe_syscall_root+78/186] __ipipe_syscall_root+0x4e/0xba
> Mar 22 15:02:46 voyage kernel:  [system_call+32/65] system_call+0x20/0x41
> Mar 22 15:02:46 voyage kernel: Code:  Bad EIP value.

I think the error is in the following part:



> void read_task_proc(void *arg) {
>   int ret;
> //  RTIME irq_time   = 0;
>   ssize_t sz = sizeof(RTIME);
>   ssize_t red = 0;
>   struct rtser_event rx_event;
>   unsigned char buf[17];
> 
>   // we are in secondary mode now
>   while (1) {
>     /* switch to primary mode */
>     ret = rt_task_set_mode(0, T_PRIMARY, NULL);
>     if (ret) {
>       printf(RTASK_PREFIX "error while rt_task_set_mode, code %d\n",ret);
>       goto exit_read_task;
>     }
>     /* waiting for event */
>     // be careful not to do printf or so here. Otherwise rt_dev_ioctl
>     //    returns with an error, because we're not in hard real time
>     //    anymore (primary mode)
>     ret = rt_dev_ioctl(my_fd, RTSER_RTIOC_WAIT_EVENT, &rx_event );
>     if (ret) {
>       printf(RTASK_PREFIX "error while RTSER_RTIOC_WAIT_EVENT, code %d\n",ret);
>       goto exit_read_task;
>     }
>     //irq_time = rx_event.rxpend_timestamp;
>     sz = sizeof(buf);
>     red = rt_dev_read(my_fd, &buf, sizeof(buf));
>     if (red == sz ) {
>                 printf(RTASK_PREFIX "rt_dev_read=%s\n",buf);
>     } else {
>       if (red < 0 ) {
>         printf(RTASK_PREFIX "error while rt_dev_read, code %d\n",red);
>       } else {
>         printf(RTASK_PREFIX "only %d / %d byte received \n",red,sz);
>       }
>       goto exit_read_task;
>     }
>   }
> exit_read_task:
>   if (my_state & STATE_FILE_OPENED) {
>     if (!close_file( my_fd, READ_FILE " (rtser)")) {
>       my_state &= ~STATE_FILE_OPENED;
>     }
>   }
>   printf(RTASK_PREFIX "exit\n");
> }

When I use the kernel serial-drivers and do a "cat /dev/ttyS0" I get the
data that I sent from the other computer

Thanks Marco



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2006-03-25  1:06 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-22 15:46 [Xenomai-help] read data from serial device Marco Jackel
2006-03-23 10:08 ` [Xenomai-help] " Marco Jackel
2006-03-23 12:41 ` Marco Jackel
2006-03-23 12:49   ` Philippe Gerum
2006-03-23 12:56     ` Marco Jackel
2006-03-23 13:22       ` Philippe Gerum
2006-03-24 12:20         ` Jan Kiszka
2006-03-23 12:56   ` Gilles Chanteperdrix
2006-03-23 13:21     ` Marco Jackel
2006-03-24 12:36 ` [Xenomai-help] " Jan Kiszka
2006-03-24 17:09   ` [Xenomai-help] " Marco Jackel
2006-03-24 17:23     ` Jan Kiszka
2006-03-24 17:42       ` Marco Jackel
2006-03-25  1:06       ` Marco Jackel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.