On 01/22/2014 03:04 PM, Alexandre COFFIGNAL wrote:

Le 22/01/2014 14:30, Gilles Chanteperdrix a écrit :
On 01/22/2014 02:27 PM, Alexandre COFFIGNAL wrote:

Le 22/01/2014 13:00, Gilles Chanteperdrix a écrit :
On 01/22/2014 12:36 PM, Alexandre COFFIGNAL wrote:
+        cf->data[3]=((data0 >> 0)  & 0xFF) ;
+        cf->data[2]=((data0 >> 8)  & 0xFF) ;
+        cf->data[1]=((data0 >> 16)  & 0xFF) ;
+        cf->data[0]=((data0 >> 24)  & 0xFF) ;
+        cf->data[7]=((data1 >> 0)  & 0xFF) ;
+        cf->data[6]=((data1 >> 8)  & 0xFF) ;
+        cf->data[5]=((data1 >> 16)  & 0xFF) ;
+        cf->data[4]=((data1 >> 24)  & 0xFF) ;

rtcan flexcan works perfectly.
is  anyone know what is the problem with first instructions ?
Probably mb->data does not have the right alignment. Could you not
arrange to get it properly aligned? Failing that, you should use
put_unaligned instead of open coding it.


here structures used in flexcan driver, it seem to be aligned

I am talking about the alignment of cf->data, since obviously, that is
the one which is causing problems.


Thank a lot, put_unaligned fix this issue if you want, i can send a path


The other solution (getting cf->data to be properly aligned) would be
more efficient, why is not it possible to get cf->data properly aligned?

I think, i can't get cf->data to be properly aligned because "cf" is
receive internal frame representation within the ring buffer
of a struct rtcan_socket and struct rtcan_rb_frame is a generic
structure used in all rtcan drivers .

Well, if you fix rtcan_rb_frame to be aligned, it will be aligned for all drivers, so that looks like a worthwile improvement...


--
                                            Gilles.

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to