[U-Boot] [PATCH] scb9328: Add ARM relocation support

This patch fixed compiler errors due to missing definitions of CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_INIT_SP_ADDR.
The board doesn't start, though. A v2 of this patch or a seperate patch will fix the error when it was found.
Signed-off-by: Torsten Koschorrek koschorrek@synertronixx.de --- board/scb9328/config.mk | 2 +- board/scb9328/scb9328.c | 10 +++++++++- include/configs/scb9328.h | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/board/scb9328/config.mk b/board/scb9328/config.mk index 7c5e067..6e411de 100644 --- a/board/scb9328/config.mk +++ b/board/scb9328/config.mk @@ -7,4 +7,4 @@ # the code in RAM device only. # -CONFIG_SYS_TEXT_BASE = 0x08f00000 +CONFIG_SYS_TEXT_BASE = 0x10000000 diff --git a/board/scb9328/scb9328.c b/board/scb9328/scb9328.c index 428e8c9..631f4e3 100644 --- a/board/scb9328/scb9328.c +++ b/board/scb9328/scb9328.c @@ -39,6 +39,15 @@ int board_init (void) int dram_init (void) { + /* dram_init must store complete ramsize in gd->ram_size */ + gd->ram_size = get_ram_size((volatile void *)SCB9328_SDRAM_1, + SCB9328_SDRAM_1_SIZE); + + return 0; +} + +void dram_init_banksize (void) +{ #if ( CONFIG_NR_DRAM_BANKS > 0 ) gd->bd->bi_dram[0].start = SCB9328_SDRAM_1; gd->bd->bi_dram[0].size = SCB9328_SDRAM_1_SIZE; @@ -55,7 +64,6 @@ int dram_init (void) gd->bd->bi_dram[3].start = SCB9328_SDRAM_4; gd->bd->bi_dram[3].size = SCB9328_SDRAM_4_SIZE; #endif - return 0; } /** diff --git a/include/configs/scb9328.h b/include/configs/scb9328.h index 3da214e..c610ed1 100644 --- a/include/configs/scb9328.h +++ b/include/configs/scb9328.h @@ -127,6 +127,9 @@ #define SCB9328_SDRAM_1 0x08000000 /* SDRAM bank #1 */ #define SCB9328_SDRAM_1_SIZE 0x01000000 /* 16 MB */ +#define CONFIG_SYS_SDRAM_BASE SCB9328_SDRAM_1 +#define CONFIG_SYS_INIT_SP_ADDR SCB9328_SDRAM_1 + 0xf00000 + /* * Configuration for FLASH memory for the Synertronixx board */

On 06/09/2011 01:36 PM, Torsten Koschorrek wrote:
This patch fixed compiler errors due to missing definitions of CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_INIT_SP_ADDR.
The board doesn't start, though. A v2 of this patch or a seperate patch will fix the error when it was found.
Signed-off-by: Torsten Koschorrek koschorrek@synertronixx.de
board/scb9328/config.mk | 2 +- board/scb9328/scb9328.c | 10 +++++++++- include/configs/scb9328.h | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/board/scb9328/config.mk b/board/scb9328/config.mk index 7c5e067..6e411de 100644 --- a/board/scb9328/config.mk +++ b/board/scb9328/config.mk @@ -7,4 +7,4 @@ # the code in RAM device only. # -CONFIG_SYS_TEXT_BASE = 0x08f00000 +CONFIG_SYS_TEXT_BASE = 0x10000000
Try to get rid of config.mk, too. It is obsolete, and you can move CONFIG_SYS_TEXT_BASE inside scb9328.h.
diff --git a/board/scb9328/scb9328.c b/board/scb9328/scb9328.c index 428e8c9..631f4e3 100644 --- a/board/scb9328/scb9328.c +++ b/board/scb9328/scb9328.c @@ -39,6 +39,15 @@ int board_init (void) int dram_init (void) {
- /* dram_init must store complete ramsize in gd->ram_size */
- gd->ram_size = get_ram_size((volatile void *)SCB9328_SDRAM_1,
SCB9328_SDRAM_1_SIZE);
- return 0;
Not understood. If you have more as one bank, the size is the sum of all banks. In dram_init_banksize() you setup more as one bank if CONFIG_NR_DRAM_BANKS > 1. Then you should set in dram_init:
size1 = get_ram_size((volatile void *)SCB9328_SDRAM_1, SCB9328_SDRAM_1_SIZE); #if ( CONFIG_NR_DRAM_BANKS > 1 ) size2 = get_ram_size((volatile void *)SCB9328_SDRAM_2, SCB9328_SDRAM_2_SIZE); .....
and then: gd->ram_size = size1 + size2 + size3 + size4;
/** diff --git a/include/configs/scb9328.h b/include/configs/scb9328.h index 3da214e..c610ed1 100644 --- a/include/configs/scb9328.h +++ b/include/configs/scb9328.h @@ -127,6 +127,9 @@ #define SCB9328_SDRAM_1 0x08000000 /* SDRAM bank #1 */ #define SCB9328_SDRAM_1_SIZE 0x01000000 /* 16 MB */ +#define CONFIG_SYS_SDRAM_BASE SCB9328_SDRAM_1 +#define CONFIG_SYS_INIT_SP_ADDR SCB9328_SDRAM_1 + 0xf00000
In most boards/processors the stack pointer is set to the internal RAM, that is available before the SDRAM controller is activated. When not available, cache can be used. Is there no internal memory available for this processor ? It could be that the stack is used before the SDRAM is initialized, and then it hangs.
Best regards, Stefano Babic
participants (2)
-
Stefano Babic
-
Torsten Koschorrek