From: Umar Qureshey <umarq@quartics.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] U-boot environment not loading from flash
Date: Mon, 13 Feb 2006 17:57:18 -0800 [thread overview]
Message-ID: <43F138FE.2080605@quartics.com> (raw)
In-Reply-To: <20060211131937.374933525CC@atlas.denx.de>
Wolfgang Denk wrote:
>In message <43ED4459.3060007@quartics.com> you wrote:
>
>
>>>Sounds as if your system was misconfigured.
>>>
>>>
>...
>
>
>>Yes, indeed. What source file/configuration define do I need to look at
>>to see the cause of this problem??
>>
>>
>
>In the first step: your board configuration file(s), i. e.
>include/config/<board>.h and board/<board>/config.mk
>
>Best regards,
>
>Wolfgang Denk
>
>
>
Hi,
I have made some progress on this issue. I thought that fully
describing the scenario might help in deciphering the solution.
I am working without the ARM JTAG tools. In order to get U-Boot up and
flashed, I had to rely on the ARM bootPROM monitor that comes built-in
in the Integrator/CP board.
So to get U-Boot flashed, I take the U-Boot binary and run the following
command on it:
arm-linux-objcopy --change-address 0x24000000 -I binary -O srec
u-boot.bin my-u-boot.srec
The command above changes the base address fro 0x1000000 (SDRAM) to
0x24000000 (first sector of the flash chip). I send this srec file to
the monitor which flashes
the file to the flash chip. This allows me to flip a switch on the
board and the ARM bootPROM monitor to run the image at location
0x24000000.
The problem I am encountering is that U-Boot does not load the saved
environment variables from flash but rather uses the ones that have been
compiled-in with the code.
I found out this is happening because of the following code in
include/environment.h:
# if (CFG_ENV_ADDR >= CFG_MONITOR_BASE) && \
(CFG_ENV_ADDR+CFG_ENV_SIZE) <= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
# define ENV_IS_EMBEDDED 1
# endif
So, in common/env_flash.c, I put the following@the beginning:
#undef ENV_IS_EMBEDDED
This changes the environment address to 0x24f80000, which is the correct
address. However, when I print the environment using the "printenv"
command I get:
Integrator-CP # printenv
bo?
cm?
cp?
x2?
80?
0 ?
7f?
0?
00?
0;?
oo?
An "md" command on that address reveals the following memory contents:
Integrator-CP # md 0x24f80000
24f80000: 00b4d8f9 00b46f62 00b46d63 00b47063 ....bo..cm..cp..
24f80010: 00b43278 00b43038 00b42030 00b46637 x2..80..0 ..7f..
24f80020: 00b43020 00b43030 00b43b30 00b46f6f 0..00..0;..oo..
24f80030: 00b46200 00b46474 00b47961 00b46200 .b..td..ay...b..
24f80040: 00b47264 00b43d65 00b43034 00b47473 dr..e=..40..st..
24f80050: 00b43d6e 00b46972 00b47300 00b4756f n=..ri...s..ou..
24f80060: 00b46573 00b46c61 00b46474 00b43d72 se..al..td..r=..
24f80070: 00b46972 00b47600 00b46669 00b4006e ri...v..if..n...
24f80080: 00b4746f 00b47367 00b46f6f 00b4642f ot..gs..oo../d..
24f80090: 00b46d2f 00b46c62 00b4306b 00b42077 /m..bl..k0..w ..
24f800a0: 00b4746f 00b47974 00b46a3d 00b43273 ot..ty..=j..s2..
24f800b0: 00b46474 00b47472 00b47261 00b4616c td..rt..ar..la..
24f800c0: 00b4302e 00b46178 00b43030 00b47830 .0..xa..00..0x..
24f800d0: 00b43030 00b46a28 00b43273 00b46f63 00..(j..s2..co..
24f800e0: 00b46c6f 00b47474 00b4414d 00b47069 ol..tt..MA..ip..
24f800f0: 00b46e6f 00b40000 00b40000 00b40000 on..............
However, I know that this data is not being read correctly because if I
define ENV_IS_EMBEDDED again, recompile, and reload then I get:
Integrator-CP # md 0x24f80000
24f80000: 3eb0d8f9 746f6f62 3d646d63 30207063 ...>bootcmd=cp 0
24f80010: 30343278 30303038 78302030 30636637 x24080000 0x7fc0
24f80020: 31783020 30303030 62203b30 6d746f6f 0x100000; bootm
24f80030: 6f6f6200 6c656474 323d7961 75616200 .bootdelay=2.bau
24f80040: 74617264 38333d65 00303034 69647473 drate=38400.stdi
24f80050: 65733d6e 6c616972 64747300 3d74756f n=serial.stdout=
24f80060: 69726573 73006c61 72656474 65733d72 serial.stderr=se
24f80070: 6c616972 72657600 3d796669 6f62006e rial.verify=n.bo
24f80080: 7261746f 723d7367 3d746f6f 7665642f otargs=root=/dev
24f80090: 64746d2f 636f6c62 7220306b 6f722077 /mtdblock0 rw ro
24f800a0: 7366746f 65707974 66666a3d 6d203273 otfstype=jffs2 m
24f800b0: 61706474 3d737472 666d7261 6873616c tdparts=armflash
24f800c0: 303a302e 30306178 40303030 63327830 .0:0xa00000 at 0x2c
24f800d0: 30303030 66666a28 20293273 736e6f63 0000(jffs2) cons
24f800e0: 3d656c6f 41797474 2030414d 6e3d7069 ole=ttyAMA0 ip=n
24f800f0: 00656e6f 00000000 00000000 00000000 one.............
So the actual data is still stored in flash in perfect condition but
defining ENV_IS_EMBEDDED causes U-Boot to start eating the data when it
reads it.
Any help on why this is happening is appreciated...
Regards,
Umar
prev parent reply other threads:[~2006-02-14 1:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-11 0:52 [U-Boot-Users] U-boot environment not loading from flash Umar Qureshey
2006-02-11 1:21 ` Wolfgang Denk
2006-02-11 1:56 ` Umar Qureshey
2006-02-11 13:19 ` Wolfgang Denk
2006-02-14 1:57 ` Umar Qureshey [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43F138FE.2080605@quartics.com \
--to=umarq@quartics.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.