[En-Nut-Discussion] stm32_can.c fails to build

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Sat Aug 18 17:35:32 CEST 2012


>>>>> "Harald" == Harald Kipp <harald.kipp at egnite.de> writes:

    Harald> Hi Uwe, On 17.08.2012 22:31, Uwe Bonnes wrote:
    >>>>>>> "Harald" == Harald Kipp <harald.kipp at egnite.de> writes:
    >>
    Harald> 'StmCanSendMsg': ../.././nut/arch/cm3/dev/stm/stm32_can.c:867:5:
    Harald> error: dereferencing type-punned pointer will break
    Harald> strict-aliasing rules [-Werror=strict-aliasing]
    >>  The trouble case is, where 4 consequitive bytes of the can frame
    >> data payload get mapped to a 32-bit register. The cast worked for me
    >> and my gcc ;-)
    >> 
    >> Should I write as reg32 = byte[0] | (byte[1] <<8)| (bute[2]<<16) |
    >> (byte[3] <<24)
    >> 
    >> or is there a better construct?

    Harald> Recently I had to fix a similar case in md5.c and used this
    Harald> horrible ugly solution:

    Harald> http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/nut/gorp/hashes/md5.c?r1=4116&r2=4250

    Harald> Your's looks much nicer.

Watch out, I think your solution also stumbles on endienness.

Bye
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------


More information about the En-Nut-Discussion mailing list