RTCan missing frames

Wolfgang Grandegger wg at grandegger.com
Tue Feb 12 12:24:21 CET 2019


Hello,

Am 12.02.19 um 11:42 schrieb Johannes Holtz:
> Am 11.02.19 um 17:46 schrieb Wolfgang Grandegger:
... snip ...
>> UI suggest to write a simple test program to demonstrate the issue. It
>> should just open the socket and trying to receive messages... just the
>> necessary stuff. First with a blocking recv() and then non-blocking.
>>
>> What hardware and software are you using (arch, board, linux, xenomai)?

?

>>
>> Wolfgang.
> 
> The source code is attached:
> 
> compiled with -I/opt/xenomai/include -D_GNU_SOURCE -D_REENTRANT
> -D__XENO__ -lrtdm -L/opt/xenomai/lib -lxenomai -lpthread -lrt -lnative
> 
> can frames sent by rtcansend
> 
> Test 1: blocking:
> 
> ID:0 DLC:2hex:  81 00       <-- NMT request
> ID:709 DLC:1hex:  00        <-- answer node #9
> ID:708 DLC:1hex:  00        <-- answer node #8
> ID:703 DLC:1hex:  00        <-- answer node #3
> ID:705 DLC:0hex:             <-- here it gets weird ! DLC == 0
> ID:70400 DLC:1hex:  01
> ID:70600 DLC:1hex:  01
> ID:70100 DLC:1hex:  01
> ID:70200 DLC:1hex:  01
> ID:1010000 DLC:1hex:  08

This means that you can receive messages from the CAN bus.

> ID:53220 DLC:124 out of bounds. abort.

But that's wired.

> 
> Test 2: non blocking:
> 
> ID:0 DLC:2hex:  81 00    <-- NMT request
> ID:709 DLC:1hex:  00     <-- answer node #9
> ID:708 DLC:1hex:  00     <-- answer node #8
> ID:703 DLC:1hex:  00     <-- answer node #3
> ID:705 DLC:0hex:          <-- same issue DLC is 0
> ID:70600 DLC:1hex:  01
> ID:70400 DLC:1hex:  01
> ID:70200 DLC:1hex:  01
> ID:70100 DLC:1hex:  01
> ID:1010000 DLC:1hex:  08
> ID:53220 DLC:124 out of bounds. abort.

Looks identical.

> Also, I found another possible error source and I don't know if this
> error picture would corresponds to this.
> 
> However,  While reviewing all settings, I noticed that I made a mistake
> with the RXBUF_SIZE which is set to 8096 instead of 8192. Must have been
> asleep when writing this. I'm going to rebuild this module.

Let's try to understand why rt_dev_recv() does return bogus dlc.

What hardware and software are you using (arch, board, can controlelr,
linux, xenomai)?

Wolfgang.



More information about the Xenomai mailing list