Skip to contentSkip to conversation

data alignment problem with redundant env

U-Boot Andre Schwarz 2 participants 6 messages Mar 31, 2011 – Apr 6, 2011

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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.
#2 lore raw

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

#3 lore raw

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
#4 lore raw

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

#5 lore raw
In reply to Wolfgang Denk

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 10
ff800000: 56900c81 01626175 64726174 653d3131 V....baudrate=11
ff800010: 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