Message ID | 5255AD28.3030202@xdin.com |
---|---|
State | RFC, archived |
Delegated to: | Andreas Bießmann |
Headers | show |
Hello Arvid, Am 2013-10-09 21:23, schrieb Arvid Brodin: > Hi, > > I managed to get u-boot-2012.10 to boot from NOR flash on a custom > at91rm9200 board by doing this: > > > Signed-off-by: Arvid Brodin <arvid.brodin@xdin.com> > --- > arch/arm/cpu/arm920t/start.S | 8 +++----- > 2 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S > index 14c9156..efc4ea3 100644 > --- a/arch/arm/cpu/arm920t/start.S > +++ b/arch/arm/cpu/arm920t/start.S > @@ -294,9 +294,7 @@ clbss_e: > _nand_boot_ofs: > .word nand_boot > #else > - ldr r0, _board_init_r_ofs > - adr r1, _start > - add lr, r0, r1 > + ldr lr, _board_init_r > add lr, lr, r9 > /* setup parameters for board_init_r */ > mov r0, r5 /* gd_t */ > @@ -304,8 +302,8 @@ _nand_boot_ofs: > /* jump to it ... */ > mov pc, lr > > -_board_init_r_ofs: > - .word board_init_r - _start > +_board_init_r: > + .word board_init_r > #endif > > _rel_dyn_start_ofs: > you don't need change start.s to boot from NOR. If shold set the #define CONFIG_SYS_TEXT_BASE 0x00000000 Please see the configuration for eb_cpux9k2 board. This board does boot from NOR with u-boot 2012.10. BTW The release 2012.10 is out of date. You should upadte to the current one (2013.10-rc4) Best regards Jens
On 2013-10-10 10:25, Jens Scharsig wrote: > Hello Arvid, > Am 2013-10-09 21:23, schrieb Arvid Brodin: >> Hi, >> >> I managed to get u-boot-2012.10 to boot from NOR flash on a custom >> at91rm9200 board by doing this: >> >> >> Signed-off-by: Arvid Brodin <arvid.brodin@xdin.com> >> --- >> arch/arm/cpu/arm920t/start.S | 8 +++----- >> 2 files changed, 4 insertions(+), 6 deletions(-) >> >> diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S >> index 14c9156..efc4ea3 100644 >> --- a/arch/arm/cpu/arm920t/start.S >> +++ b/arch/arm/cpu/arm920t/start.S >> @@ -294,9 +294,7 @@ clbss_e: >> _nand_boot_ofs: >> .word nand_boot >> #else >> - ldr r0, _board_init_r_ofs >> - adr r1, _start >> - add lr, r0, r1 >> + ldr lr, _board_init_r >> add lr, lr, r9 >> /* setup parameters for board_init_r */ >> mov r0, r5 /* gd_t */ >> @@ -304,8 +302,8 @@ _nand_boot_ofs: >> /* jump to it ... */ >> mov pc, lr >> >> -_board_init_r_ofs: >> - .word board_init_r - _start >> +_board_init_r: >> + .word board_init_r >> #endif >> >> _rel_dyn_start_ofs: >> > > you don't need change start.s to boot from NOR. > If shold set the #define CONFIG_SYS_TEXT_BASE 0x00000000 But that's just the thing, I *do* need this change for the board to boot. CONFIG_SYS_TEXT_BASE is 0x10000000 (this is the base address for the flash memory). Without my patch above, I only get this: ---------- U-Boot 2012.10 (Oct 09 2013 - 02:28:44) DRAM: 64 MiB ---------- I thought this was a known problem with at91rm9200 booting from NOR flash? There's at least one other board that I know of with the same problem (the Artila Matrix-500). > Please see the configuration for eb_cpux9k2 board. This board does boot > from NOR with u-boot 2012.10. Hmm, you are right. This config does boot my card (after I modify it to suit, of course). Besides the different CONFIG_SYS_TEXT_BASE, I think the main differences to the at91rm9200ek config that I based my earlier config on are these things: #define CONFIG_SYS_BOOT_SIZE 0x00 /* 0 KBytes */ #define CONFIG_SYS_U_BOOT_BASE PHYS_FLASH_1 #define CONFIG_SYS_U_BOOT_SIZE 0x60000 /* 384 KBytes */ None of these are declared in the at91rm9200ek config. Unfortunately, I don't have an AT91RM9200EK card, so I can't test if the problem I ran in to exists for that card as well using the at91rm9200ek config.
Hello Arvid, >>> >> >> you don't need change start.s to boot from NOR. >> If shold set the #define CONFIG_SYS_TEXT_BASE 0x00000000 > > But that's just the thing, I *do* need this change for the board to boot. > CONFIG_SYS_TEXT_BASE is 0x10000000 (this is the base address for the flash > memory). YES and NO: The nor is physical mapped to 0x1000000 that's right. But during boot from nor the Memory is also mapped to address 0x0. U-Boot is relocate to ram after ram init. The calculations of the reclocation process are based on "delta between PC and CONFIG_SYS_TEXT_BASE". > > Without my patch above, I only get this: > > ---------- > U-Boot 2012.10 (Oct 09 2013 - 02:28:44) > > DRAM: 64 MiB > ---------- > So at this position u-boot try to jump to a wrong address or code in ram. > I thought this was a known problem with at91rm9200 booting from NOR flash? > There's at least one other board that I know of with the same problem (the > Artila Matrix-500). > > >> Please see the configuration for eb_cpux9k2 board. This board does boot >> from NOR with u-boot 2012.10. > > Hmm, you are right. This config does boot my card (after I modify it to suit, > of course). Besides the different CONFIG_SYS_TEXT_BASE, I think the main > differences to the at91rm9200ek config that I based my earlier config on are > these things: > > #define CONFIG_SYS_BOOT_SIZE 0x00 /* 0 KBytes */ > #define CONFIG_SYS_U_BOOT_BASE PHYS_FLASH_1 > #define CONFIG_SYS_U_BOOT_SIZE 0x60000 /* 384 KBytes */ > > None of these are declared in the at91rm9200ek config. This are old items, which needs a clean up. > Regards Jens
diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S index 14c9156..efc4ea3 100644 --- a/arch/arm/cpu/arm920t/start.S +++ b/arch/arm/cpu/arm920t/start.S @@ -294,9 +294,7 @@ clbss_e: _nand_boot_ofs: .word nand_boot #else - ldr r0, _board_init_r_ofs - adr r1, _start - add lr, r0, r1 + ldr lr, _board_init_r add lr, lr, r9 /* setup parameters for board_init_r */ mov r0, r5 /* gd_t */ @@ -304,8 +302,8 @@ _nand_boot_ofs: /* jump to it ... */ mov pc, lr -_board_init_r_ofs: - .word board_init_r - _start +_board_init_r: + .word board_init_r #endif _rel_dyn_start_ofs:
Hi, I managed to get u-boot-2012.10 to boot from NOR flash on a custom at91rm9200 board by doing this: Signed-off-by: Arvid Brodin <arvid.brodin@xdin.com> --- arch/arm/cpu/arm920t/start.S | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-)