I am so glad that Wolfgang is able to help giving suggestions. Thanks
a lot. That is very useful for new users. :-)

On Mon, Jun 7, 2010 at 4:05 PM, Wolfgang Grandegger <[email protected]> wrote:
> On 06/05/2010 04:22 AM, Everett Wang wrote:
>> Hi All,
>>
>> I am playing around with xenomai and RTDM serial driver on a
>> 1.7Ghz Pentium-M machine running xenomai 2.5.3. The example cross-link
>> produced this result:
>>
>> main : starting read-task
>>  Nr |   write->irq    |    irq->read    |   write->read   |
>> -----------------------------------------------------------
>>   0 |          118948 |          614135 |          733083
>>   1 |          115598 |          614281 |          729879
>>   2 |          108917 |          614982 |          723899
>>   3 |          106101 |          616560 |          722661
>>   4 |          113457 |          614971 |          728428
>>   5 |          110358 |          614265 |          724623
>>   6 |          106499 |          614406 |          720905
>>   7 |          110363 |          615015 |          725378
>>   8 |          115478 |          614840 |          730318
>>   9 |          110766 |          614168 |          724934
>>  10 |          108986 |          616435 |          725421
>>  11 |          108030 |          614299 |          722329
>>  12 |          109369 |          614420 |          723789
>>  13 |          105862 |          614456 |          720318
>>  14 |          110428 |          616301 |          726729
>>
>> Is 0.7 millisecond between write and read a reasonable number?
>
> No, at least not for a baudrate of 115200. Does the "latency" test
> report reasonable latency figures? And how did you load xeno_16550A.ko?
>
The latency test seems very reasonable:
4 microseconds when I try to open several browers at the
same time:

mini:/usr/xenomai/share/xenomai/testsuite/klatency# ./run
*
*
* Type ^C to stop this application.
*
*
== Sampling period: 100 us
== Test mode: in-kernel periodic task
== All results in microseconds
warming up...
RTT|  00:00:01  (in-kernel periodic task, 100 us period, priority 99)
RTH|-----lat min|-----lat avg|-----lat max|-overrun|----lat best|---lat worst
RTD|      -0.722|      -0.618|       0.755|       0|      -0.722|       0.755
RTD|      -0.721|      -0.616|       0.803|       0|      -0.722|       0.803
RTD|      -0.708|      -0.616|       0.876|       0|      -0.722|       0.876
RTD|      -0.722|      -0.616|       0.854|       0|      -0.722|       0.876
RTD|      -0.708|      -0.617|       0.954|       0|      -0.722|       0.954
RTD|      -0.709|      -0.615|       0.682|       0|      -0.722|       0.954
RTD|      -0.724|      -0.595|       0.918|       0|      -0.724|       0.954
RTD|      -0.728|      -0.477|       2.785|       0|      -0.728|       2.785
RTD|      -0.725|      -0.526|       2.721|       0|      -0.728|       2.785
RTD|      -0.729|      -0.512|       2.609|       0|      -0.729|       2.785
RTD|      -0.726|      -0.485|       4.483|       0|      -0.729|       4.483
RTD|      -0.726|      -0.479|       4.142|       0|      -0.729|       4.483
RTD|      -0.723|      -0.542|       2.735|       0|      -0.729|       4.483
RTD|      -0.728|      -0.580|       1.896|       0|      -0.729|       4.483
RTD|      -0.728|      -0.540|       2.196|       0|      -0.729|       4.483
RTD|      -0.726|      -0.566|       1.831|       0|      -0.729|       4.483
RTD|      -0.711|      -0.607|       1.768|       0|      -0.729|       4.483
RTD|      -0.712|      -0.591|       1.050|       0|      -0.729|       4.483
RTD|      -0.721|      -0.615|       1.116|       0|      -0.729|       4.483
RTD|      -0.712|      -0.612|       0.694|       0|      -0.729|       4.483
RTD|      -0.721|      -0.614|       0.782|       0|      -0.729|       4.483
^CRTT|  00:00:22  (in-kernel periodic task, 100 us period, priority 99)
RTH|-----lat min|-----lat avg|-----lat max|-overrun|----lat best|---lat worst
RTD|      -0.724|      -0.610|       1.213|       0|      -0.729|       4.483
---|------------|------------|------------|--------|-------------------------
RTS|      -0.729|      -0.554|       4.483|       0|    00:00:24/00:00:24
mini:/usr/xenomai/share/xenomai/testsuite/klatency#

The user space latency is also reasonable at 10 microseconds:
mini:/usr/xenomai/share/xenomai/testsuite/latency# ./run
*
*
* Type ^C to stop this application.
*
*
== Sampling period: 100 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up...
RTT|  00:00:01  (periodic user-mode task, 100 us period, priority 99)
RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
RTD|      0.245|      0.391|      2.736|       0|     0|      0.245|      2.736
RTD|      0.132|      0.663|      7.012|       0|     0|      0.132|      7.012
RTD|      0.248|      0.871|      6.954|       0|     0|      0.132|      7.012
RTD|      0.245|      0.650|      5.741|       0|     0|      0.132|      7.012
RTD|      0.213|      1.009|     10.657|       0|     0|      0.132|     10.657
RTD|      0.247|      0.902|      8.936|       0|     0|      0.132|     10.657
RTD|      0.177|      0.776|      6.978|       0|     0|      0.132|     10.657
RTD|      0.246|      0.735|      7.571|       0|     0|      0.132|     10.657
RTD|      0.245|      0.918|      8.821|       0|     0|      0.132|     10.657
RTD|      0.127|      0.387|      3.423|       0|     0|      0.127|     10.657
RTD|      0.138|      0.429|      2.977|       0|     0|      0.127|     10.657
RTD|      0.096|      0.357|      3.100|       0|     0|      0.096|     10.657
RTD|      0.133|      0.357|      3.019|       0|     0|      0.096|     10.657
RTD|      0.132|      0.356|      2.246|       0|     0|      0.096|     10.657
RTD|      0.140|      0.382|      5.711|       0|     0|      0.096|     10.657
RTD|      0.131|      0.361|      2.041|       0|     0|      0.096|     10.657
^C---|-----------|-----------|-----------|--------|------|-------------------------
RTS|      0.096|      0.596|     10.657|       0|     0|    00:00:16/00:00:16
mini:/usr/xenomai/share/xenomai/testsuite/latency#

I load driver using this before running cross-link examples:

setserial /dev/ttyS0 uart none
setserial /dev/ttyS1 uart none
insmod /lib/modules/2.6.32.11-xeno/kernel/drivers/xenomai/serial/xeno_16550A.ko
io=0x3f8,0x2f8 irq=4,3 tx_fifo=10,20 start_index=0



>> I then changed the example a little: I let write task only
>> write 4 characters and instruct read task to read 10 characters.
>> I thought the read task will tell me when that only 4 characters
>> is read. But to my surprise, it waited until write-task
>> filled all 10 characters before finish reading. How can I
>> change the code to just do the read to whatever charaters
>> are avaliable without waiting to fill all the characters I
>> asked for? I will use this capability to read a GPS. It's
>> output length is unknow before reading.
>
> Setting the config rx timeout to RTSER_TIMEOUT_NONE should help.
>
Thanks for the suggestion, I will try that.

>> Most GPS can also produce a precisive time pulse when data
>> is ready. Is it be possible to connect this to a pin in rs232 (CTS, for 
>> example)
>> to triger a IRQ so the data can be read in a timely manner?
>
> That depends on the signals, I can imagine. I'm not a hardware guy but I
> know that many GPS receiver come with a read-to-use RS232 interface.
>
> Wolfgang.
>
Yes, you are right. My GPS has a rs232 port and I am trying
to use it. The GPS just dump out some information to the
rs232 port every 0.1 second. I am just trying to get the information
in a timely fashion. I thought that the extra time
pulse from the GPS can help.

Thanks a lot again for your help.

Everett

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to