On 03/30/2012 01:15 PM, Minh GIANG wrote:
> hello,
> 
> after testing a lot of time, i have one port which doesn't work well in
> writing (material problem i think). Now it works in writing and reading
> with one condtion that i have to remove the function
> "err=rt_dev_ioctl(...)" because it returns error.

Hm, what does rt_dev_ioctl() return?

> could you tell me the interet of this function? i think that rt_dev_read is
> enough to read the message.

Well, the ioctl waits for certain events and informs the task when they
occur. "cross_link.c" actually waits for the RTSER_EVENT_RXPEND meaning
that RX data are available. So, the sub-sequent read will/must work. You
do not need to call that ioctl but the read directly. But I doubt that
the read return successfully.

Maybe the interrupt service routine does detect errors due to hardware
problems:

http://www.rts.uni-hannover.de/xenomai/lxr/source/ksrc/drivers/serial/16550A.c#213

and that's why the interrupt counter increases.

You could check that by setting RTSER_EVENT_ERRPEND or reading the
status using the ioctl request RTSER_RTIOC_GET_STATUS.

Wolfgang.

> On Fri, Mar 30, 2012 at 10:45 AM, Minh GIANG <giang.hm...@gmail.com> wrote:
> 
>> hello,
>> thanks for your response. i compile cross-link program in ECLIPSE C++ so
>> my command in setting configuration is
>> command :   g++
>> All options:   -l/usr/xenomai/include -O3 -wall -c -fmessage-length=0
>>
>> i connected 2 serial port of my computer by one cable in order to make the
>> test. The write task works well but the other task is blocked by 
>> rt_dev_ioctl(...).as
>> i already mentionned and when i removed rt_dev_ioctl, the "rt_dev_read"
>> function return 0
>> I did what you said, but it doesn't work yet
>>
>> On Fri, Mar 30, 2012 at 8:43 AM, Wolfgang Grandegger 
>> <w...@grandegger.com>wrote:
>>
>>> On 03/29/2012 05:26 PM, Minh GIANG wrote:
>>>> i want to revive the topic over the problem RTSER_RTIOC_WAIT_EVENT
>>>> while compiling cross-link.c program. I cann't resolve my problem
>>>> after doing some solution given by the others
>>>>
>>>> Loading module:
>>>>
>>>> insmod ./xeno_16550A.ko io=0x3f8,0x2f8 irq=4,3 tx_fifo=10,20
>>>
>>> Hm, is a FIFO size of 20 supported by the hardware? For a first try I
>>> would drop "tx_fifo=10,20" (using the default of 16 for both uarts).
>>>
>>>> start_index=0 (i have two serial ports on my pc)
>>>>
>>>> running crosslink test:
>>>>
>>>> main : write-file opened
>>>> main : write-config written
>>>> main : read-file opened
>>>> main : read-config written
>>>> main : write-task created
>>>> main : read-task created
>>>> main : starting write-task
>>>> main : starting read-task
>>>>  Nr |   write->irq    |    irq->read    |   write->read   |
>>>> -----------------------------------------------------------
>>>> read_task: error on RTSER_RTIOC_WAIT_EVENT, Connection timed out
>>>> read_task: error on RTSER_RTIOC_WAIT_EVENT, Connection timed out
>>>>
>>>> ...
>>>>
>>>>
>>>>
>>>> running test:
>>>>
>>>> cat /proc/xenomai/irq
>>>>
>>>> IRQ         CPU0
>>>>   3:        1089         rtser1
>>>>   4:        5155         rtser0
>>>
>>> You get interrupts, at least, but not the same amount, strange. What
>>> cross-link command options do you use?
>>>
>>> Wolfgang.
>>>
>>
>>
> 


_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to