[U-Boot] [GENERIC_BOARD] env problems before relocation with ppc8360

Valentin Longchamp valentin.longchamp at keymile.com
Tue Aug 26 17:17:55 CEST 2014


Hello,

Here is the outcome of my debug session today:

On 08/25/2014 05:42 PM, Valentin Longchamp wrote:
> Hello,
> 
> I am currently porting all the Keymile boards to CONFIG_SYS_GENERIC_BOARD.
> On u-boot 2014.10-rc1 I have all of them working quite well (at least booting
> and showing no obvious problem), except for our boards using a MPC8360
> from Freescale (kmcoge5ne and kmeter1, both using km8360.h as config) that do
> not boot at all.
> 
> I have found out that u-boot crashes as soon as a getenv function call happens
> before relocation. When I disable them, u-boot seems to work fine. I am
> currently trying to debug further, but it's not clear yet exactly what causes
> the crash.

So the problem is that for an unknown reason, the gd->flags are not correct and
getenv actually calls hsearch_h to look for the desired env variable. This fails
before relocation (due to the small stack ?).

If I replace the board_f getenv_ulong calls in board_f.c with my getenv_f_ulong
function that explicitely calls getenv_f the board boots up nicely.

Now the question is, why are my gd->flags not correct/corrupted ? Has someone
already seen something similar ? I unfortunateley cannot access gd easily with
the BDI, since it is located in the INIT_RAM which is a data cache, for which I
have no LAW configured (could work on that).

> 
> We also have quite a few MPC8321 boards (for instance tuxx1.h or suvd3.h) and
> there the problem is not present, while the environment is also in the NOR
> flash as on km8360 and their core also a e300 (so their initialization is VERY
> similar).

I have checked and there it's clearly getenv_f that gets called by getenv before
relocation. That's why no problem is seen there.

Valentin


More information about the U-Boot mailing list