[U-Boot-Users] uImage starting problem on Virtex-4 (PPC405)

Miroslaw Dach miroslaw.dach at psi.ch
Fri Aug 31 15:21:56 CEST 2007


Hi All,

	I have successfully built u-boot 1.2.0 on my Avnet evaluation 
board (ml403 like) which uses virtex-4 xilinx FPGA with built-in ppc405 
processor. The u-boot was configured to deal with UART lite.

I have build also zImage.elf which runs very well on my board.
I have however difficulties to run kernel image via u-boot.

My board has 32 MB of RAM memory (address range 0x000000 - 0x1ffffff)

The steps which I have done are as following:

1. I have build u-boot and loaded it via jtag to my board
XMD% dow u-boot1a.elf
        section, .text: 0x01a00000-0x01a0d838
        section, .resetvec: 0x01a122f0-0x01a122f4
        section, .rodata: 0x01a0d838-0x01a0fc5b
        section, .reloc: 0x01a0fd00-0x01a102a8
        section, .data: 0x01a102a8-0x01a10740
        section, .data.rel: 0x01a10740-0x01a1076c
        section, .data.rel.local: 0x01a1076c-0x01a10ba4
        section, .u_boot_cmd: 0x01a10ba4-0x01a10db4
        section, .bss: 0x01a10e00-0x01a122f0
Downloaded Program u-boot1a.elf

2. I have loaded the uImage via jtag to the memory location 0x600000

3. I have started u-boot:

U-Boot 1.2.0 (Aug 31 2007 - 10:49:57)
### No HW ID - assuming ML403
DRAM:  32 MB
Using default environment
In:  serial
Out:  serial
Err:  serial

Hit any key to stop autoboot:  0

4. I have started uImage

=> bootm 0x600000
## Booting image at 00600000 ...
Image Name:  Linux-2.6.21-rc6
Image Type:  PowerPC Linux Kernel Image (gzip compressed)
Data Size:  981837 Bytes = 958.8 kB
Load Address: 00a00000
Entry Point:  00a00000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Current stack ends at 0x01FCC668 => set upper limit to 0x00800000
No initrd
## Transferring control to Linux (at address 00a00000) ...

5. After that the system just hangs

6. I have tried as well to run zImage.elf from u-boot (zImage.elf runs 
well when started  straight from jtag):

=> bootelf 0x600000
Loading .text @ 0x00400000 (14140 bytes)
Loading .data @ 0x00404000 (987136 bytes)
Clearing .bss @ 0x004f5000 (8504 bytes)
## Starting application at 0x00400000 ...
loaded at:  00400000 004F7138
board data at: 004F5120 004F5138
relocated to:  004040B4 004040CC
zimage at:  00404EA9 004F49F5
avail ram:  004F8000 01FFFFFF
Linux/PPC load: console=ttyUL0,9600 root=/dev/nfs rw nfsroot=129.117.144.113:/opt/eldk41/ppc_4xx,tcp ip=::::virtex4-mirek:eth0:dhcp panic=1 
Uncompressing Linux...

7. After that system just hangs

My observation is that:
- when launching zImage from u-boot, the system blocks during zImage 
  uncompressing
- when launching uImage from u-boot  the system blocks after u-boot 
  uncompresses the uImage

I do not know what I do wrong. Maybe the processor is not set to the 
correct mode of the apportion or the memory locations are not correct.

I do not also know what should be the proper: Load Address and Entry Point 
for uImage. The zImage refers to the location 0x400000 (as listed above).

I attache to this post my Avnet board u-boot configuration.

Any suggestion is welcome

Best Regards

Mirek


-- 
=============================================================================
          Miroslaw Dach (Miroslaw.Dach at psi.ch) - SLS/Controls Group 
                PSI - Paul Scherrer Institut CH-5232 Villigen
=============================================================================
-------------- next part --------------
#ifndef __CONFIG_H
#define __CONFIG_H

/*
#define DEBUG
#define ET_DEBUG 1
*/
/*
 * High Level Configuration Options
 * (easy to change)
 */

#define CONFIG_405     1  /* This is a PPC405 CPU    */
#define CONFIG_4xx     1  /* ...member of PPC4xx family */
#define CONFIG_XILINX_AVNET_FX12   1  /* ...on a Xilinx ML410 board */

#include "../board/xilinx/avnet_fx12/xparameters.h"

/*  Make some configuration choices based on the hardware design
 *  specified in xparameters.h.
 */
#define CFG_ENV_IS_NOWHERE        1       /* no space to store environment */
#define CFG_ENV_SIZE              1024
#define CFG_NO_FLASH              1    /*    no flash */
/* #define CFG_FLASH_BASE                   XPAR_FLASH_2MX16_MEM0_BASEADDR
#define CFG_MAX_FLASH_BANKS              1
#define CFG_MAX_FLASH_SECT        64 */
#define CONFIG_BAUDRATE           9600
#define CONFIG_BOOTDELAY          10       /* autoboot after 0 seconds */
#define CONFIG_BOOTCOMMAND        ""       /* autoboot command  */
#define CONFIG_BOOTARGS           "console=ttyUL0,9600 root=/dev/nfs rw nfsroot=129.117.144.113:/opt/eldk41/ppc_4xx,tcp  ip=::::virtex4-mirek:eth0:dhcp panic=1" /* "root=/dev/ram rw"*/
#define CONFIG_SERVERIP		129.117.144.113
#define CONFIG_IPADDR		129.117.144.157
#define CONFIG_LOADS_ECHO         1       /* echo on for serial download */
#define CFG_LOADS_BAUD_CHANGE     0       /* don't allow baudrate change */

#define REMOVE_COMMANDS           ( \
 CFG_CMD_FLASH		| \
 CFG_CMD_NET            | \
 CFG_CMD_JFFS2          | \
 CFG_CMD_BDI		| \
 CFG_CMD_LOADS		| \
 CFG_CMD_LOADB		| \
 CFG_CMD_IMI		| \
 CFG_CMD_CACHE		| \
 CFG_CMD_ENV		| \
 CFG_CMD_KGDB		| \
 CFG_CMD_PCMCIA		| \
 CFG_CMD_IDE		| \
 CFG_CMD_PCI		| \
 CFG_CMD_IRQ		| \
 CFG_CMD_CONSOLE	| \
 CFG_CMD_EEPROM		| \
 CFG_CMD_ASKENV		| \
 CFG_CMD_RUN		| \
 CFG_CMD_ECHO		| \
 CFG_CMD_I2C		| \
 CFG_CMD_REGINFO	| \
 CFG_CMD_IMMAP		| \
 CFG_CMD_DATE		| \
 CFG_CMD_DHCP		| \
 CFG_CMD_BEDBUG		| \
 CFG_CMD_FDC		| \
 CFG_CMD_SCSI		| \
 CFG_CMD_AUTOSCRIPT	| \
 CFG_CMD_MII		| \
 CFG_CMD_SETGETDCR	| \
 CFG_CMD_BSP		| \
 CFG_CMD_MISC		| \
 CFG_CMD_USB		| \
 CFG_CMD_DOC		| \
 CFG_CMD_DTT		| \
 CFG_CMD_SDRAM		| \
 CFG_CMD_DIAG		| \
 CFG_CMD_FPGA		| \
 CFG_CMD_HWFLOW		| \
 CFG_CMD_SAVES		| \
 CFG_CMD_SPI		| \
 CFG_CMD_FDOS		| \
 CFG_CMD_VFD		| \
 CFG_CMD_NAND		| \
 CFG_CMD_BMP		| \
 CFG_CMD_PORTIO		| \
 CFG_CMD_PING		| \
 CFG_CMD_MMC		| \
 CFG_CMD_FAT		| \
 CFG_CMD_IMLS		| \
 CFG_CMD_ITEST		| \
 CFG_CMD_REISER		| \
 CFG_CMD_CDP		| \
 CFG_CMD_XIMG		| \
 CFG_CMD_UNIVERSE 	| \
 CFG_CMD_EXT2		| \
 CFG_CMD_SNTP		| \
 CFG_CMD_DISPLAY	  \
)

#define CONFIG_COMMANDS           (CFG_CMD_ALL  & ~REMOVE_COMMANDS)

/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
#include <cmd_confdefs.h>

/*
 * Miscellaneous configurable options
 */
#define CFG_LONGHELP      /* undef to save memory    */
#define CFG_PROMPT  "=> " /* Monitor Command Prompt  */

#define CFG_CBSIZE  256   /* Console I/O Buffer Size */

#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)   /* Print Buffer Size */
#define CFG_MAXARGS                16 /* max number of command args */
#define CFG_BARGSIZE              CFG_CBSIZE  /* Boot Argument Buffer Size  */

#define CFG_MEMTEST_START         0x0400000   /* memtest works on  */
#define CFG_MEMTEST_END           0x07fffff   /* 4 ... 12 MB in DRAM  */

#define CFG_DUART_CHAN            0
#define CFG_NS16550_REG_SIZE      -4
#define CFG_NS16550               1
#define CFG_INIT_CHAN1            1

/* The following table includes the supported baudrates */
#define CFG_BAUDRATE_TABLE  \
    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}

#define CFG_LOAD_ADDR             0x400000 /* default load address */
#define CFG_EXTBDINFO             1  /* To use extended board_into (bd_t) */

#define CFG_HZ                    1000  /* decrementer freq: 1 ms ticks */

/*-----------------------------------------------------------------------
 * Start addresses for the final memory configuration
 * (Set up by the startup code)
 * Please note that CFG_SDRAM_BASE _must_ start at 0
 */
#define CFG_SDRAM_BASE            0x00000000
#define CFG_MONITOR_BASE          0x01a00000
#define CFG_MONITOR_LEN           (192 * 1024)   /* Reserve 196 kB for Monitor */
#define CFG_MALLOC_LEN            (128 * 1024)   /* Reserve 128 kB for malloc()   */

/*
 * For booting Linux, the board info and command line data
 * have to be in the first 8 MB of memory, since this is
 * the maximum mapped by the Linux kernel during initialization.
 */
#define CFG_BOOTMAPSZ             (8 << 20)   /* Initial Memory map for Linux */

/*-----------------------------------------------------------------------
 * Cache Configuration
 */
#define CFG_DCACHE_SIZE           8192 /* Virtex-II Pro PPC 405 CPUs */
#define CFG_CACHELINE_SIZE        32 /* ...                 */

/*-----------------------------------------------------------------------
 * Definitions for initial stack pointer and data area (in DPRAM)
 */

#define CFG_INIT_RAM_ADDR         0x1700000  /* inside of SDRAM */
#define CFG_INIT_RAM_END          0x2000     /* End of used area in RAM */
#define CFG_GBL_DATA_SIZE         128     /* size in bytes reserved for initial data */
#define CFG_GBL_DATA_OFFSET      (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
#define CFG_INIT_SP_OFFSET       CFG_GBL_DATA_OFFSET

/*
 * Internal Definitions
 *
 * Boot Flags
 */
#define BOOTFLAG_COLD             0x01  /* Normal Power-On: Boot from FLASH */
#define BOOTFLAG_WARM             0x02  /* Software reboot         */

#endif           /* __CONFIG_H */


More information about the U-Boot mailing list