environment access before relocation does not work on (some) arm
Hi,
I just noticed that using getenv (and friends) does not work on ARM (namely i.MX28) from board_init_f() after running through the init_sequence.
So getenv_ulong() always returns the given default.
So the baudrate on affected boards is always set by CONFIG_BAUDRATE and cannot be adjusted by the baudrate env variable and so on. Environment access before relocation is required for some functions:
pram, fdtcontroladdr, baudrate, ...
Env access does not work before env_relocate() in board_init_r().
Didn't this behave different sometimes before? Even after the big env rework?
Matthias
Dear Matthias Fuchs,
Quoted 4 lines · In message <[email protected]> you wrote:
I just noticed that using getenv (and friends) does not work on ARM (namely i.MX28) from
board_init_f()after running through theinit_sequence.
This is normal, and documented. Before relocation, you must not use getenv().
Quoted 1 line
Env access does not work before
env_relocate()inboard_init_r().
It does, but you have to play by the rules, i. e. use getenv_f() instead.
Quoted 2 lines
Didn't this behave different sometimes before? Even after the big env rework?
No. The use of getenv() before relocation has never been supported. It may have worked (by pure chance) on some systems, but that's all.
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 Time is an illusion perpetrated by the manufacturers of space.
Hi,
Quoted 10 lines · Wolfgang Denk
Dear Matthias Fuchs,
Quoted 4 lines · In message <[email protected]> you wrote:
I just noticed that using getenv (and friends) does not work on ARM (namely i.MX28) from
board_init_f()after running through theinit_sequence.This is normal, and documented. Before relocation, you must not use
getenv().
Yes, I am aware of this. I even think that the getenv() implementation falls back to getenv_f() before relocation.
Quoted 5 lines
Quoted 2 lines
Env access does not work before
env_relocate()inboard_init_r().It does, but you have to play by the rules, i. e. use
getenv_f()instead.
Yes, I did not care about where my env comes from :-) So env_sf.c does not support an early env at all. Running on an i.MX28 with env in a SPI flash I probably need SPI support in my SPL and an improved env_sf.c.
... and all this to get CONFIG_PRAM working in arch/arm/lib/board.c. So I will stuck at using a constant pram value for the moment. This works.
Quoted 6 lines
Quoted 3 lines
Didn't this behave different sometimes before? Even after the big env rework?
No. The use of
getenv()before relocation has never been supported. It may have worked (by pure chance) on some systems, but that's all.
Of course. My question was not very precise.
Matthias
Quoted 5 lines
Best regards,
Wolfgang Denk
Dear Matthias Fuchs,
Quoted 5 lines · In message <[email protected]> you wrote:
Quoted 3 lines
This is normal, and documented. Before relocation, you must not use
getenv().Yes, I am aware of this. I even think that the
getenv()implementation falls back togetenv_f()before relocation.
This is not guaranteed to work.
Quoted 3 lines
Yes, I did not care about where my env comes from :-) So
env_sf.cdoes not support an early env at all. Running on an i.MX28 with env in a SPI flash I probably need SPI support in my SPL and an improvedenv_sf.c.
This is a bigger topic. We all wait anxiously for Mareks group to implement a clean device driver model, so we can clean up and unify all this code. I am aware that it needs it.
Best regards,
Wolfgang Denk
Signature · 6 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 "Remember, Information is not knowledge; Knowledge is not Wisdom; Wisdom is not truth; Truth is not beauty; Beauty is not love; Love is not music; Music is the best." - Frank Zappa