
On Fri, Jul 20, 2012 at 03:08:51PM +0200, Markus Hubig wrote:
On Wed, Jul 18, 2012 at 03:21:00PM +0200, Markus Hubig wrote:
Hmm OK I disabled the watchdog and enabled debugging and now this is what I get at the first boot after flashing:
| RomBOOT | | | U-Boot 2012.04.01-00003-gab465ef-dirty (Jul 18 2012 - 15:08:22) | | U-Boot code: 23F00000 -> 23F30130 BSS: -> 23F71E28 | CPU: AT91SAM9G20 | Crystal frequency: 18.432 MHz | CPU clock : 396.288 MHz | Master clock : 132.096 MHz | Starting dram_init! | dram_init finished! | monitor len: 00071E28 | ramsize: 04000000 | Top of RAM usable for U-Boot at: 24000000 | Reserving 455k for U-Boot at: 23f8e000 | Reserving 640k for malloc() at: 23eee000 | Reserving 36 Bytes for Board Info at: 23eedfdc | Reserving 144 Bytes for Global Data at: 23eedf4c | New Stack Pointer is: 23eedf40 | RAM Configuration: | Bank #0: 20000000 64 MiB | relocation Offset is: 0008e000 | WARNING: Caches not enabled | monitor flash len: 00035750 | Starting board_init! | Starting stamp9G20_nand_hw_init! | stamp9G20_nand_hw_init finished! | Starting stamp9G20_macb_hw_init! | stamp9G20_macb_hw_init finished! | board_init finished! | Now running in RAM - U-Boot at: 23f8e000
The red LED is on and I can't input anything.
OK now I managed to plug a JTAG Adapter with OpenOCD to the PortuxG20. But what now? How can I find out where I stuck?
Hmm ok .. JTAG & GDB is kind of a future wappon for me, don't know how to handle. But using the old'n'good "trace code" debugging, I managed to find out where my u-boot stops. It's in
arch/arm/lib/board.c: =====================
| debug("malloc stuff start\n"); | /* The Malloc area is immediately below the monitor copy in DRAM */ | malloc_start = dest_addr - TOTAL_MALLOC_LEN; | mem_malloc_init (malloc_start, TOTAL_MALLOC_LEN); | debug("malloc stuff finished\n");
It never reaches the second debug output. Digin a bit deeper I found in
common/dlmalloc.c =================
| void mem_malloc_init(ulong start, ulong size) | { | mem_malloc_start = start; | mem_malloc_end = start + size; | mem_malloc_brk = start; | debug("bevor memset"); | memset((void *)mem_malloc_start, 0, size); | debug("after memset\n"); | }
here it also never reaches the second debug output.
And the only setting I found in my board support code (stamp9g20.h) that is obviously realated to this "malloc-thing" is:
| #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE \ | + 128*1024, 0x1000) | #define CONFIG_SYS_GBL_DATA_SIZE 128 | #define CONFIG_STACKSIZE (32*1024)
but this values are all copied from the original (and once working) patch from taskit ...
Any thoughts?
Cheers, Markus