[U-Boot-Users] u-boot init problem on ml403 (virtex-4) board

Dear All,
I am trying to use u-boot 1.2.0 on my avnet evaluation board (ml403 like with virtex-4 chip with built-in ppc405).
My observation is as following:
I am able to run linux v2.6.21 v2.6.22 v2.6.23 (zImage.elf) on my board. Linux always boots correctly.
My board has 32 MB of RAM and 8 MB of Flash. Right now I run all of the software straight from RAM (by means of jtag).
For couple of weeks I am dealing with u-boot with UART lite serial console.
My observation is as following that u-boot does not always run properly. The u-boot crashes (or has some initialization problems) in most cases when I go through following steps:
1. I load Linux zImage.elf via jtag:
XMD% dow zImage.elf section, .text: 0x00400000-0x004036c4 section, .data: 0x00404000-0x00505000 section, .bss: 0x00505000-0x0050719c Downloaded Program zImage.elf Setting PC with program start addr = 0x00400000 PC reset to 0x00400000, Clearing MSR Register XMD% run
2. Linux loads and boot always without any problems
3. Next I stop Linux and load u-boot via jtag
XMD% dow u-bootXil section, .text: 0x00800000-0x0080e85c section, .resetvec: 0x00815050-0x00815054 section, .rodata: 0x0080e85c-0x00811027 section, .reloc: 0x00811100-0x00811770 section, .data: 0x00811770-0x00811c60 section, .data.rel: 0x00811c60-0x00811c8c section, .data.rel.local: 0x00811c8c-0x008120c4 section, .u_boot_cmd: 0x008120c4-0x00812364 section, .bss: 0x00812400-0x00815050 Downloaded Program u-bootXil Setting PC with program start addr = 0x00800100 PC reset to 0x00800100, Clearing MSR Register XMD% run
----------------------------------------------------------------- The output on the console is as following: -----------------------------------------------------------------
U-Boot 1.2.0 (Sep 25 2007 - 09:24:54)
### No HW ID - assuming ML403 DRAM: 32 MB Top of RAM usable for U-Boot at: 02000000 Reserving 84k for U-Boot at: 01fea000 Reserving 129k for malloc() at: 01fc9c00 Reserving 120 Bytes for Board Info at: 01fc9b88 Reserving 48 Bytes for Global Data at: 01fc9b58 Stack Pointer at: 01fc9b38 New Stack Pointer is: 01fc9b38 Now running in RAM - U-Boot at: 01fea000 Using default environment
Bus Fault @ 0x01ff34dc, fixup 0x00000000 Machine check in kernel mode. Caused by (from msr): regs 01fc98f8 Data parity signal NIP: 01FF34DC XER: 00000000 LR: 01FF2F40 REGS: 01fc98f8 TRAP: 0200 DAR: 00000000 MSR: 00021000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00
GPR00: 00000000 01FC99E8 C01F3950 01AEA000 00000120 00000000 00000001 00000021
--------------------------------------------------------------------------
Sometimes u-boot dos not crash but it seems to be something wrong with board info:
--------------------------------------------------------------------------
U-Boot 1.2.0 (Sep 24 2007 - 12:48:09)
### No HW ID - assuming ML403 DRAM: 32 MB Top of RAM usable for U-Boot at: 02000000 Reserving 83k for U-Boot at: 01feb000 Reserving 129k for malloc() at: 01fcac00 Reserving 120 Bytes for Board Info at: 01fcab88 Reserving 48 Bytes for Global Data at: 01fcab58 Stack Pointer at: 01fcab38 New Stack Pointer is: 01fcab38 Now running in RAM - U-Boot at: 01feb000 ˙ţď\In: ˙ţď\Err: U-Boot relocated to 01feb000 ### main_loop entered: bootdelay=3
### main_loop: bootcmd="tftp 0x500000 uImage; bootm 0x500000" Hit any key to stop autoboot: 3 2 1 0 => bdinfo bd address = 0x0memstart = 0x00000000 memsize = 0x0flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0xCprocfreq = 100 MHz plb_busfreq = 100 MHz ethaddr = 00:ţ:C:˙ď:D:0 IP addr = 129.129.144.83 baudrate = 9600 bps => md 01fcab88 100 01fcab88: ................ 01fcab98: ............. . 01fcaba8: ...S.P.F........ 01fcabb8: ......%.1.2.U-Bo 01fcabc8: ot 1.2.0........ 01fcabd8: ................ 01fcabe8: ................ 01fcabf8: ................ 01fcac08: ..r|bootargs=con 01fcac18: sole=ttyUL0,9600 01fcac28: root=/dev/nfs r 01fcac38: w nfsroot=129.12 01fcac48: 9.144.113:/opt/e 01fcac58: ldk41/ppc_4xx,tc 01fcac68: p ip=::::virtex 01fcac78: 4-mirek:eth0:dhc 01fcac88: p panic=1.bootcm 01fcac98: d=tftp 0x500000 01fcaca8: uImage; bootm 0x 01fcacb8: 500000.bootdelay 01fcacc8: =3.baudrate=9600 01fcacd8: .loads_echo=1.et 01fcace8: haddr=00:50:C2:4 01fcacf8: 6:D8:01.ipaddr=1 01fcad08: 29.129.144.83.se 01fcad18: rverip=129.129.1 01fcad28: 44.113.hostname= 01fcad38: virtex4-mirek.lo 01fcad48: adaddr=0x500000. 01fcad58: stdin=.stdout=.s 01fcad68: tderr=.......... 01fcad78: ................
-------------------------------------------------------------------------
When u-boot starts properly the output looks like below:
-------------------------------------------------------------------------
U-Boot 1.2.0 (Sep 24 2007 - 12:48:09)
### No HW ID - assuming ML403 DRAM: 32 MB Top of RAM usable for U-Boot at: 02000000 Reserving 83k for U-Boot at: 01feb000 Reserving 129k for malloc() at: 01fcac00 Reserving 120 Bytes for Board Info at: 01fcab88 Reserving 48 Bytes for Global Data at: 01fcab58 Stack Pointer at: 01fcab38 New Stack Pointer is: 01fcab38 Now running in RAM - U-Boot at: 01feb000 Using default environment
In: serial Out: serial Err: serial U-Boot relocated to 01feb000 ### main_loop entered: bootdelay=3
### main_loop: bootcmd="tftp 0x500000 uImage; bootm 0x500000" Hit any key to stop autoboot: 3 2 1 0 => bdinfo bd address = 0x01FCAB88 memstart = 0x00000000 memsize = 0x02000000 flashstart = 0x00000000 flashsize = 0x00000000 flashoffset = 0x00000000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0xC1CB7D60 procfreq = 100 MHz plb_busfreq = 100 MHz ethaddr = 00:50:C2:46:D8:01 IP addr = 129.129.144.83 baudrate = 9600 bps
------------------------------------------------------------------------
I was trying to play with various u-boot parameters (CFG_ or CONFIG_ ) but I have never got it running reliably.
My observation is also as following
ACTION (jtag side): STATUS:
load zImage.elf run runs properly (always) stop
load u-boot run crashes (in most cases) stop
load u-boot run runs properly (in most cases) stop
load u-boot run runs properly (in most cases) stop
Does somebody have some hints what could be wrong?
Best Regards
Mirek
p.s. I attache to this e-mail my config file include/configs/ml403.h

Finally I have found the problem.
It was too small cach definition: CFG_DCACHE_SIZE 8192
I set it to: CFG_DCACHE_SIZE 16384
and now u-boot works fine.
I am able to load by means of u-boot the uImage (also with built-in rootFS).
Best Regards
Mirek

On 9/28/07, Mirek23 miroslaw.dach@psi.ch wrote:
Finally I have found the problem.
It was too small cach definition: CFG_DCACHE_SIZE 8192
I set it to: CFG_DCACHE_SIZE 16384
and now u-boot works fine.
I am able to load by means of u-boot the uImage (also with built-in rootFS).
Congratulations Mirek! How did you figure that one out?
g.

Hi Grant,
I have spent much time trying various things. At he beginning I was suspecting the processor initialization. I have compared Linux and u-boot initialization and all was in place including the errata for Virtex-4.
My second guess was the memory allocation so I have tried to change the memory regions and their sizes. At the end I have figured out that the CFG_DCACHE_SIZE was too small.
I have spent much time but I have learned a lot :)
Best Regards
Mirek
On Fri, 28 Sep 2007, Grant Likely wrote:
On 9/28/07, Mirek23 miroslaw.dach@psi.ch wrote:
Finally I have found the problem.
It was too small cach definition: CFG_DCACHE_SIZE 8192
I set it to: CFG_DCACHE_SIZE 16384
and now u-boot works fine.
I am able to load by means of u-boot the uImage (also with built-in rootFS).
Congratulations Mirek! How did you figure that one out?
g.
participants (3)
-
Grant Likely
-
Mirek23
-
Miroslaw Dach