data alignment problem with redundant env
Hi,
moving to latest U-Boot introduces some issues with the environment.
Setup:
- PowerPC based boards (52xx / 83xx)
- Environments are in flash with redundancy
Dumping flash the environments with dd and using hexdump shows :
- crc32 - flags Data (first entry beginning with 'a').
0000000: b0ea 7858 0100 64...
0000010: ...
Regarding to include/environment.h data is "unsigned char" as well as data[].
To me it looks like 2-byte wide flags (or 16-bit alignment of data) is wrong.
Although env modification within u-boot only is safe it breakother tools modifying the environment within e.g. Linux.
This happened somewhere between v2010.9 and current master. Back then U-Boot env data started on byte 5.
Do we need an attribute(packed) on the env struct ?
Any help is welcome.
Regards,
Andr?
MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
Dear Andre Schwarz,
Quoted 2 lines · In message <[email protected]> you wrote:
moving to latest U-Boot introduces some issues with the environment.
Which board would that be? I don't see this on any board I tested.
Best regards,
Wolfgang Denk
Signature · 4 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de The existence of god implies a violation of causality.
Wolfgang,
Quoted 5 lines
Dear Andre Schwarz,
Quoted 1 line · In message<[email protected]> you wrote:
moving to latest U-Boot introduces some issues with the environment.
Which board would that be? I don't see this on any board I tested.
it is mvblm7 (=MPC8343) and a new MPC8377 based one waiting for the merge window to open.
I'm using a gcc-4.3.3 from OpenEmbedded/Angstrom ... if this matters at all.
Regards,
Andr?
MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
Dear Andre Schwarz,
Quoted 7 lines · In message <[email protected]> you wrote:
Quoted 2 lines
Which board would that be? I don't see this on any board I tested.
it is mvblm7 (=MPC8343) and a new MPC8377 based one waiting for the merge window to open.
I'm using a gcc-4.3.3 from OpenEmbedded/Angstrom ... if this matters at all.
Can you please try and use anothe rtool chain, say good ole ELDK 4.2 for a test?
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Behind every great man, there is a woman -- urging him on. -- Harry Mudd, "I, Mudd", stardate 4513.3
Wolfgang,
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
Which board would that be? I don't see this on any board I tested.
it is mvblm7 (=MPC8343) and a new MPC8377 based one waiting for the merge window to open.
I'm using a gcc-4.3.3 from OpenEmbedded/Angstrom ... if this matters at all.
Can you please try and use anothe rtool chain, say good ole ELDK 4.2 for a test?
yes, of course.
But I can make some tests on real hardware not before monday.
This is what I can say after compiling with both toolchains.
1. redundant env
CROSS_COMPILE=ppc_6xx- ARCH=powerpc sh MAKEALL mvblm7
text data bss dec hex filename
233298 21940 66960 322198 4ea96 ./u-boot
CROSS_COMPILE=powerpc-angstrom-linux- ARCH=powerpc sh MAKEALL mvblm7
text data bss dec hex filename
233758 21948 66956 322662 4ec66 ./u-boot
2. without redundant env
swa at swa-m460:~/u-boot$ CROSS_COMPILE=ppc_6xx- ARCH=powerpc sh MAKEALL mvblm7
text data bss dec hex filename
232494 21912 66960 321366 4e756 ./u-boot
swa at swa-m460:~/u-boot$ CROSS_COMPILE=powerpc-angstrom-linux- ARCH=powerpc sh MAKEALL mvblm7
text data bss dec hex filename
232954 21920 66956 321830 4e926 ./u-boot
size of final u-boot binary differs by 8 bytes ... sounds promising ;-)
Will run both versions asap.
Regards,
Andr?
MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
Wolfgang,
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
Which board would that be? I don't see this on any board I tested.
it is mvblm7 (=MPC8343) and a new MPC8377 based one waiting for the merge window to open.
I'm using a gcc-4.3.3 from OpenEmbedded/Angstrom ... if this matters at all.
Can you please try and use anothe rtool chain, say good ole ELDK 4.2 for a test?
ok - that's it.
Compiling with ELDK 4.2 gives an environment as expected.
4 bytes crc32 + 1 byte redundancy flags + data :
mvBL-M7> md ff800000 10ff800000: 56900c81 01626175 64726174 653d3131 V....baudrate=11ff800010: 35323030 00626f6f 74617267 733d726f 5200.bootargs=ro
Using OpenEmbedded's (Angstrom) gcc 4.3.3 produces a corrupted layout with data having a 16-Bit alignment leading to a 1 byte offset when redundancy is used.
Will stick to ELDK 4.2 for U-Boot.
Problem solved, but I'm still irritated how easily things can be broken nowadays ...
Regards,
Andr?
MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner