From: Marco Jackel <ich@domain.hid>
To: xenomai@xenomai.org
Subject: [Xenomai-help] read data from serial device
Date: Wed, 22 Mar 2006 16:46:21 +0100 [thread overview]
Message-ID: <dvrrgc$g2a$1@domain.hid> (raw)
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
next reply other threads:[~2006-03-22 15:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-22 15:46 Marco Jackel [this message]
2006-03-23 10:08 ` [Xenomai-help] Re: read data from serial device 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='dvrrgc$g2a$1@domain.hid' \
--to=ich@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.