[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