* [U-Boot] Can I read env from RAM in uboot script?
@ 2013-01-26 1:56 John Stile
2013-01-26 7:41 ` Wolfgang Denk
0 siblings, 1 reply; 10+ messages in thread
From: John Stile @ 2013-01-26 1:56 UTC (permalink / raw)
To: u-boot
Is it possible to have uboot read it's environment from a RAM address,
rather than NAND?
OR
Can uboot's scripting support load variables from a RAM address?
My NAND layout has redundant halves:
0
uboot
ubootenv
kernel
fs
128
uboot
ubootenv
kernel
fs
256
My firmware update strategy will update the non-booted side of NAND.
It is easy to hack at91bootstrap, to load a uboots env area at some
RAM address, just as it loads uboot at JUMP_ADDR, but how do I get uboot
to use this preloaded uboot-env?
Since uboot takes its environment area address at compile time, I wonder
if uboot could be made to read it from a RAM address (written there by
at91bootstrap), durring the env_relocate_spec()?
So far I have traced:
cpu/arm926ejs/start.S calls start_armboot()
lib_arm/board.c start_armboot() calls env_relocate()
./common/env_common.c env_relocate() calls env_relocate_spec()
My u-boot.map indicates my env_relocate_spec() comes from env_nand.o
./common/env_nand.c has env_relocate_spec() has ifdefs for
ENV_IS_EMBEDDED, but my config is not. and CFG_ENV_IS_IN_NAND which I
am currently configured for.
So where is a good point of attack, or is there one?
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-26 1:56 [U-Boot] Can I read env from RAM in uboot script? John Stile
@ 2013-01-26 7:41 ` Wolfgang Denk
2013-01-28 21:19 ` John Stile
0 siblings, 1 reply; 10+ messages in thread
From: Wolfgang Denk @ 2013-01-26 7:41 UTC (permalink / raw)
To: u-boot
Dear John Stile,
In message <1359165410.7974.114.camel@genx> you wrote:
> Is it possible to have uboot read it's environment from a RAM address,
> rather than NAND?
> OR
> Can uboot's scripting support load variables from a RAM address?
Yes, all this can be done. And easily. See for example the
"env import" command.
Best regards,
Wolfgang Denk
--
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
Software suppliers are trying to make their software packages more
``user-friendly''. . . . Their best approach, so far, has been to
take all the old brochures, and stamp the words, ``user-friendly'' on
the cover. - Bill Gates
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-26 7:41 ` Wolfgang Denk
@ 2013-01-28 21:19 ` John Stile
2013-01-28 21:48 ` Jeroen Hofstee
0 siblings, 1 reply; 10+ messages in thread
From: John Stile @ 2013-01-28 21:19 UTC (permalink / raw)
To: u-boot
On Sat, 2013-01-26 at 08:41 +0100, Wolfgang Denk wrote:
> Dear John Stile,
>
> In message <1359165410.7974.114.camel@genx> you wrote:
> > Is it possible to have uboot read it's environment from a RAM address,
> > rather than NAND?
> > OR
> > Can uboot's scripting support load variables from a RAM address?
>
> Yes, all this can be done. And easily. See for example the
> "env import" command.
>
That is a great idea.
What version of uboot introduced 'env import'?
I'm stuck on u-boot-1.3.4.
Is there a patch?
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-28 21:19 ` John Stile
@ 2013-01-28 21:48 ` Jeroen Hofstee
2013-01-28 22:01 ` Jeroen Hofstee
0 siblings, 1 reply; 10+ messages in thread
From: Jeroen Hofstee @ 2013-01-28 21:48 UTC (permalink / raw)
To: u-boot
Hello John,
On 01/28/2013 10:19 PM, John Stile wrote:
> On Sat, 2013-01-26 at 08:41 +0100, Wolfgang Denk wrote:
>> Dear John Stile,
>>
>> In message <1359165410.7974.114.camel@genx> you wrote:
>>> Is it possible to have uboot read it's environment from a RAM address,
>>> rather than NAND?
>>> OR
>>> Can uboot's scripting support load variables from a RAM address?
>> Yes, all this can be done. And easily. See for example the
>> "env import" command.
>>
> That is a great idea.
> What version of uboot introduced 'env import'?
> I'm stuck on u-boot-1.3.4.
> Is there a patch?
>
search the mailinglist, this is asking for a visit to
http://www.uboat.net/special/archiv/ or a response the
like. Try to upgrade if possible...
Regards,
Jeroen
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-28 21:48 ` Jeroen Hofstee
@ 2013-01-28 22:01 ` Jeroen Hofstee
2013-01-29 0:25 ` John Stile
2013-01-29 6:37 ` Wolfgang Denk
0 siblings, 2 replies; 10+ messages in thread
From: Jeroen Hofstee @ 2013-01-28 22:01 UTC (permalink / raw)
To: u-boot
> On 01/28/2013 10:19 PM, John Stile wrote:
>> On Sat, 2013-01-26 at 08:41 +0100, Wolfgang Denk wrote:
>>> Dear John Stile,
>>>
>>> In message <1359165410.7974.114.camel@genx> you wrote:
>>>> Is it possible to have uboot read it's environment from a RAM address,
>>>> rather than NAND?
>>>> OR
>>>> Can uboot's scripting support load variables from a RAM address?
>>> Yes, all this can be done. And easily. See for example the
>>> "env import" command.
>>>
>> That is a great idea.
>> What version of uboot introduced 'env import'?
>> I'm stuck on u-boot-1.3.4.
>> Is there a patch?
>>
> search the mailinglist, this is asking for a visit to
> http://www.uboat.net/special/archiv/ or a response the
> like. Try to upgrade if possible...
for completeness sake, Wolfgang will likely tell you it is museum material,
since it is almost 5 years old. No idea what the site is about, just popped
up with "u-boot museum" instead of Wolfgang's replies.
Regards,
Jeroen
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-28 22:01 ` Jeroen Hofstee
@ 2013-01-29 0:25 ` John Stile
2013-01-29 9:58 ` Bo Shen
2013-01-29 6:37 ` Wolfgang Denk
1 sibling, 1 reply; 10+ messages in thread
From: John Stile @ 2013-01-29 0:25 UTC (permalink / raw)
To: u-boot
On Mon, 2013-01-28 at 23:01 +0100, Jeroen Hofstee wrote:
> > On 01/28/2013 10:19 PM, John Stile wrote:
> >> On Sat, 2013-01-26 at 08:41 +0100, Wolfgang Denk wrote:
> >>> Dear John Stile,
> >>>
> >>> In message <1359165410.7974.114.camel@genx> you wrote:
> >>>> Is it possible to have uboot read it's environment from a RAM address,
> >>>> rather than NAND?
> >>>> OR
> >>>> Can uboot's scripting support load variables from a RAM address?
> >>> Yes, all this can be done. And easily. See for example the
> >>> "env import" command.
> >>>
> >> That is a great idea.
> >> What version of uboot introduced 'env import'?
> >> I'm stuck on u-boot-1.3.4.
> >> Is there a patch?
> >>
> > search the mailinglist, this is asking for a visit to
> > http://www.uboat.net/special/archiv/ or a response the
> > like. Try to upgrade if possible...
>
> for completeness sake, Wolfgang will likely tell you it is museum material,
> since it is almost 5 years old. No idea what the site is about, just popped
> up with "u-boot museum" instead of Wolfgang's replies.
>
I saw that.
I tried to update u-boot-1.3.4 to u-boot-2013.
I changed at91bootstrap's JUMP_ADDR from 0x23F00000 to 0x21F00000, as
advised by previous posts.
Now I am getting the wrong board type error from the kernel.
my board is an AT91SAM9G20EK_2MMC
I am having a hard time setting:
#define MACH_TYPE_AT91SAM9G20EK_2MMC 2288
insted of
#define MACH_TYPE_AT91SAM9G20EK 1624
In had to change buildroot's .config from:
BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek_2mmc_nandflash"
to
BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek_nandflash"
whihch I suspect is the problem.
I'm trying to change the buildroots output/build/uboot-custom manually,
and rerun the build, but no luck yet.
My kernel is built with CONFIG_MACH_AT91SAM9G20EK_2MMC=y
So how do I force u-boot to agree?
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-28 22:01 ` Jeroen Hofstee
2013-01-29 0:25 ` John Stile
@ 2013-01-29 6:37 ` Wolfgang Denk
1 sibling, 0 replies; 10+ messages in thread
From: Wolfgang Denk @ 2013-01-29 6:37 UTC (permalink / raw)
To: u-boot
Dear Jeroen Hofstee,
In message <5106F529.2030407@myspectrum.nl> you wrote:
>
> >> I'm stuck on u-boot-1.3.4.
> >> Is there a patch?
> >>
> > search the mailinglist, this is asking for a visit to
> > http://www.uboat.net/special/archiv/ or a response the
> > like. Try to upgrade if possible...
>
> for completeness sake, Wolfgang will likely tell you it is museum material,
> since it is almost 5 years old. No idea what the site is about, just popped
> up with "u-boot museum" instead of Wolfgang's replies.
No surprise. Museums were not invented yet by the time when v1.3.4
was current ;-)
Best regards,
Wolfgang Denk
--
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
It is impractical for the standard to attempt to constrain the
behavior of code that does not obey the constraints of the standard.
- Doug Gwyn
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-29 0:25 ` John Stile
@ 2013-01-29 9:58 ` Bo Shen
2013-01-29 17:33 ` John Stile
0 siblings, 1 reply; 10+ messages in thread
From: Bo Shen @ 2013-01-29 9:58 UTC (permalink / raw)
To: u-boot
Hi John Stile,
On 01/29/2013 08:25 AM, John Stile wrote:
[snip]
> I saw that.
>
> I tried to update u-boot-1.3.4 to u-boot-2013.
>
> I changed at91bootstrap's JUMP_ADDR from 0x23F00000 to 0x21F00000, as
> advised by previous posts.
>
> Now I am getting the wrong board type error from the kernel.
> my board is an AT91SAM9G20EK_2MMC
>
> I am having a hard time setting:
> #define MACH_TYPE_AT91SAM9G20EK_2MMC 2288
> insted of
> #define MACH_TYPE_AT91SAM9G20EK 1624
>
> In had to change buildroot's .config from:
> BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek_2mmc_nandflash"
> to
> BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek_nandflash"
> whihch I suspect is the problem.
>
> I'm trying to change the buildroots output/build/uboot-custom manually,
> and rerun the build, but no luck yet.
>
> My kernel is built with CONFIG_MACH_AT91SAM9G20EK_2MMC=y
>
> So how do I force u-boot to agree?
Please have test with the following patch (add at91sam9g20ek 2mmc
nandflash boot support) and check whether it will solve you problem.
You should use at91sam9g20ek_2mmc_nandflash to configure the u-boot
------------------------------------------------
diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c
b/board/atmel/at91sam9260ek/at91sam9260ek.c
index 2555672..ce475df 100644
--- a/board/atmel/at91sam9260ek/at91sam9260ek.c
+++ b/board/atmel/at91sam9260ek/at91sam9260ek.c
@@ -157,6 +157,10 @@ int board_early_init_f(void)
int board_init(void)
{
+#ifdef CONFIG_AT91SAM9G20EK_2MMC
+ /* arch number of AT91SAM9260EK-Board */
+ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK_2MMC;
+#else
#ifdef CONFIG_AT91SAM9G20EK
/* arch number of AT91SAM9260EK-Board */
gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK;
@@ -164,6 +168,7 @@ int board_init(void)
/* arch number of AT91SAM9260EK-Board */
gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9260EK;
#endif
+#endif
/* adress of boot parameters */
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
diff --git a/boards.cfg b/boards.cfg
index e4b0d44..fa863dc 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -95,6 +95,7 @@ at91sam9g10ek_nandflash arm arm926ejs
at91sam9261ek atmel
at91sam9g20ek_dataflash_cs0 arm arm926ejs at91sam9260ek
atmel at91
at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0
at91sam9g20ek_dataflash_cs1 arm arm926ejs at91sam9260ek
atmel at91
at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1
at91sam9g20ek_nandflash arm arm926ejs at91sam9260ek
atmel at91 at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH
+at91sam9g20ek_2mmc_nandflash arm arm926ejs at91sam9260ek
atmel at91
at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH
at91sam9m10g45ek_nandflash arm arm926ejs at91sam9m10g45ek
atmel at91
at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH
at91sam9rlek_dataflash arm arm926ejs at91sam9rlek
atmel at91 at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH
at91sam9rlek_nandflash arm arm926ejs at91sam9rlek
atmel at91 at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH
---------------------------------------------------------------------------
Best Regards,
Bo Shen
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-29 9:58 ` Bo Shen
@ 2013-01-29 17:33 ` John Stile
2013-01-30 1:20 ` Bo Shen
0 siblings, 1 reply; 10+ messages in thread
From: John Stile @ 2013-01-29 17:33 UTC (permalink / raw)
To: u-boot
On Tue, 2013-01-29 at 17:58 +0800, Bo Shen wrote:
>
> You should use at91sam9g20ek_2mmc_nandflash to configure the u-boot
>
> ------------------------------------------------
> diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c
> b/board/atmel/at91sam9260ek/at91sam9260ek.c
> index 2555672..ce475df 100644
> --- a/board/atmel/at91sam9260ek/at91sam9260ek.c
> +++ b/board/atmel/at91sam9260ek/at91sam9260ek.c
> @@ -157,6 +157,10 @@ int board_early_init_f(void)
>
> int board_init(void)
> {
> +#ifdef CONFIG_AT91SAM9G20EK_2MMC
> + /* arch number of AT91SAM9260EK-Board */
> + gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK_2MMC;
> +#else
> #ifdef CONFIG_AT91SAM9G20EK
> /* arch number of AT91SAM9260EK-Board */
> gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK;
> @@ -164,6 +168,7 @@ int board_init(void)
> /* arch number of AT91SAM9260EK-Board */
> gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9260EK;
> #endif
> +#endif
> /* adress of boot parameters */
> gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
>
> diff --git a/boards.cfg b/boards.cfg
> index e4b0d44..fa863dc 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -95,6 +95,7 @@ at91sam9g10ek_nandflash arm arm926ejs
> at91sam9261ek atmel
> at91sam9g20ek_dataflash_cs0 arm arm926ejs at91sam9260ek
> atmel at91
> at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0
> at91sam9g20ek_dataflash_cs1 arm arm926ejs at91sam9260ek
> atmel at91
> at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1
> at91sam9g20ek_nandflash arm arm926ejs at91sam9260ek
> atmel at91
> at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH
> +at91sam9g20ek_2mmc_nandflash arm arm926ejs at91sam9260ek
> atmel at91
> at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH
> at91sam9m10g45ek_nandflash arm arm926ejs
> at91sam9m10g45ek
> atmel at91
> at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH
> at91sam9rlek_dataflash arm arm926ejs at91sam9rlek
> atmel at91
> at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH
> at91sam9rlek_nandflash arm arm926ejs at91sam9rlek
> atmel at91
> at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH
> ---------------------------------------------------------------------------
>
>
That worked! Very nice! But, I had to apply the patches manually.
Email may have messed up the patch sets with new-lines and indentation.
Can this be added to the main stream? I am on to learning 'env import'.
Thank you.
If email messed it up once, I guess it could mess it up again, but I
generated patches using:
diff -Naur before/ after/ > diff.patch
--- board/atmel/at91sam9260ek/at91sam9260ek.c.orig 2013-01-29 09:09:35.000000000 -0800
+++ board/atmel/at91sam9260ek/at91sam9260ek.c 2013-01-29 09:10:46.000000000 -0800
@@ -157,6 +157,10 @@
int board_init(void)
{
+#ifdef CONFIG_AT91SAM9G20EK_2MMC
+ /* arch number of AT91SAM9260EK-Board */
+ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK_2MMC;
+#else
#ifdef CONFIG_AT91SAM9G20EK
/* arch number of AT91SAM9260EK-Board */
gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK;
@@ -164,6 +168,7 @@
/* arch number of AT91SAM9260EK-Board */
gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9260EK;
#endif
+#endif
/* adress of boot parameters */
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
--- boards.cfg.orig 2013-01-29 08:56:47.000000000 -0800
+++ boards.cfg 2013-01-29 08:58:21.000000000 -0800
@@ -94,6 +94,7 @@
at91sam9g10ek_nandflash arm arm926ejs at91sam9261ek atmel at91 at91sam9261ek:AT91SAM9G10,SYS_USE_NANDFLASH
at91sam9g20ek_dataflash_cs0 arm arm926ejs at91sam9260ek atmel at91 at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0
at91sam9g20ek_dataflash_cs1 arm arm926ejs at91sam9260ek atmel at91 at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1
+at91sam9g20ek_2mmc_nandflash arm arm926ejs at91sam9260ek atmel at91 at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH
at91sam9g20ek_nandflash arm arm926ejs at91sam9260ek atmel at91 at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH
at91sam9m10g45ek_nandflash arm arm926ejs at91sam9m10g45ek atmel at91 at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH
at91sam9rlek_dataflash arm arm926ejs at91sam9rlek atmel at91 at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] Can I read env from RAM in uboot script?
2013-01-29 17:33 ` John Stile
@ 2013-01-30 1:20 ` Bo Shen
0 siblings, 0 replies; 10+ messages in thread
From: Bo Shen @ 2013-01-30 1:20 UTC (permalink / raw)
To: u-boot
Hi John Stile,
On 01/30/2013 01:33 AM, John Stile wrote:
> That worked! Very nice! But, I had to apply the patches manually.
> Email may have messed up the patch sets with new-lines and indentation.
> Can this be added to the main stream? I am on to learning 'env import'.
> Thank you.
I will prepare the patch and send to u-boot mainline.
> If email messed it up once, I guess it could mess it up again, but I
> generated patches using:
> diff -Naur before/ after/> diff.patch
I think this can not be applied to u-boot mainline directly, because it
missed comments and author, and etc.
Best Regards,
Bo Shen
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-01-30 1:20 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-26 1:56 [U-Boot] Can I read env from RAM in uboot script? John Stile
2013-01-26 7:41 ` Wolfgang Denk
2013-01-28 21:19 ` John Stile
2013-01-28 21:48 ` Jeroen Hofstee
2013-01-28 22:01 ` Jeroen Hofstee
2013-01-29 0:25 ` John Stile
2013-01-29 9:58 ` Bo Shen
2013-01-29 17:33 ` John Stile
2013-01-30 1:20 ` Bo Shen
2013-01-29 6:37 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox