[U-Boot] [PATCH] ppc440: New board: Avnet Virtex5 FXT Evaluation

Ricardo Ribalda Delgado
2008-08-24T00:42:05Z

Hello Michal

I agree with you that the code of ml507 and other board with that
fpga will be almost the same, except external devices like ram, flash
type ethernet macs....

But the same happens in other part of the code: many arm boards are
very similar between them, etc. In the other hand is very convenent
(and commercial) that u-boot support as many boards as possible,
support explicitily, not as part of a common board, think that the
boards are organized by vendor: User are not supported to know all the
manufactures "excentrities"

I have been thinking a bit about this and I came with this idea
(please give me your comments):

- Create a folder like: /board/xilinx/generic/ppc440
/board/xilinx/generic/ppc405 /board/xilinx/generic/microblace
- Create one config for every previous generic board (nothing new until know)
- Create one config file for every specific board that includes the
generic configuration for it class
- Create folders like /board/xilinx/ml507 with the specific ml507
code (99,9999% this wont be needed)

The generic configuration will take care of the xparameter file:
something like:

#if XPAR_TEMAC
#define CMD_NET_PING
#endif

Using this philosophy, there is no code replication, boards are
explicitly supported and future boards with rare features will be also
supported easily

Any ideas/sugestion?

Best regards

On Sat, Aug 23, 2008 at 15:05, Michal Simek <monstr@seznam.cz> wrote:
> Hi Ricardo, Stefan and Wolfgang,
>
> I looked at patches which Ricardo sent. It is really nice to see that someone
> wants to add new xilinx boards to U-BOOT. But IMHO this is not the right way.
> I think that one xilinx board with ppc405 and ppc440 is enough. This is FPGA you
> can choose almost everything what you want to change. -> It is useless add new
> board which has only different setting. It doesn't matter if is avnet or xilinx
> board and they have different size of flash, ram or whatever.
> I think that the right way is to have one generic platform and your xparameters
> can direct it. With adding new board you see avnet board in board folder but
> that's all. Setting is almost the same with ml507. Please do not extend U-BOOT
> code with boards which do not add important change. I hope you understand what I
> mean.
>
> The next reason should be what is avnet reference design? (You can use some edk
> version with ppc440 and there are some changes between version)
>
> In Microblaze case you can see I add only two boards - one is with flash and
> second without. I can do thousands design with different setting but this is not
> good solution.
>
> Please do not add this board and do not start new way that every fpga board will
> have own folder and config file. This only extend U-BOOT size and that's all. No
> additional information.
>
> My propose solution is to have one generic board (ml507 is ok) and improve ml507
> config file for usage with others board. This is what wrote Wolfgang in emails
> about ml507. Do not hardcode value in memory settings and other.
>
> Best regards,
> Michal
>
>
>
>
> Ricardo Ribalda Delgado wrote:
>> Cheap board by Avnet for evaluating the Virtex5 FX technology.
>>
>> This patch adds support for:
>> - UartLite
>> - 16MB Flash
>> - 64MB RAM
>>
>> Prior using U-boot in this board, read carefully the ERRATA by Avnet
>> to solve some memory initialization issues.
>>
>> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@uam.es>
>> ---
>> CREDITS | 2 +-
>> MAINTAINERS | 1 +
>> MAKEALL | 2 +
>> Makefile | 12 +++
>> board/avnet/v5fx30teval/.gitignore | 2 +
>> board/avnet/v5fx30teval/Makefile | 58 +++++++++++++
>> board/avnet/v5fx30teval/config.mk | 27 ++++++
>> board/avnet/v5fx30teval/init.S | 58 +++++++++++++
>> board/avnet/v5fx30teval/u-boot-ram.lds | 134 +++++++++++++++++++++++++++++
>> board/avnet/v5fx30teval/u-boot-rom.lds | 144 ++++++++++++++++++++++++++++++++
>> board/avnet/v5fx30teval/v5fx30teval.c | 47 ++++++++++
>> board/avnet/v5fx30teval/xparameters.h | 36 ++++++++
>> include/configs/v5fx30teval.h | 121 +++++++++++++++++++++++++++
>> 13 files changed, 643 insertions(+), 1 deletions(-)
>> create mode 100644 board/avnet/v5fx30teval/.gitignore
>> create mode 100644 board/avnet/v5fx30teval/Makefile
>> create mode 100644 board/avnet/v5fx30teval/config.mk
>> create mode 100644 board/avnet/v5fx30teval/init.S
>> create mode 100644 board/avnet/v5fx30teval/u-boot-ram.lds
>> create mode 100644 board/avnet/v5fx30teval/u-boot-rom.lds
>> create mode 100644 board/avnet/v5fx30teval/v5fx30teval.c
>> create mode 100644 board/avnet/v5fx30teval/xparameters.h
>> create mode 100644 include/configs/v5fx30teval.h
>>
>> diff --git a/CREDITS b/CREDITS
>> index 4fe4e63..48be11b 100644
>> --- a/CREDITS
>> +++ b/CREDITS
>> @@ -405,7 +405,7 @@ D: Atmel AT91CAP9ADK support
>>
>> N: Ricardo Ribalda Delgado
>> E: ricardo.ribalda at uam.es
>> -D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460
>> +D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460, v5fx30teval
>> W: http://www.ii.uam.es/~rribalda
>>
>> N: Stefan Roese
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 31493c2..4a950f1 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -318,6 +318,7 @@ Daniel Poirot <dan.poirot@windriver.com>
>> Ricardo Ribalda <ricardo.ribalda@uam.es>
>>
>> ml507 PPC440x5
>> + v5fx30teval PPC440x5
>>
>> Stefan Roese <sr@denx.de>
>>
>> diff --git a/MAKEALL b/MAKEALL
>> index edfee90..a1c1957 100755
>> --- a/MAKEALL
>> +++ b/MAKEALL
>> @@ -231,6 +231,8 @@ LIST_4xx=" \
>> sequoia_nand \
>> taihu \
>> taishan \
>> + v5fx30teval \
>> + v5fx30teval_flash \
>> VOH405 \
>> VOM405 \
>> W7OLMC \
>> diff --git a/Makefile b/Makefile
>> index f02ab65..7561eef 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1456,6 +1456,18 @@ taihu_config: unconfig
>> taishan_config: unconfig
>> @$(MKCONFIG) $(@:_config=) ppc ppc4xx taishan amcc
>>
>> +v5fx30teval_flash_config: unconfig
>> + @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
>> + @cp $(obj)board/avnet/v5fx30teval/u-boot-rom.lds $(obj)board/avnet/v5fx30teval/u-boot.lds
>> + @echo "TEXT_BASE = 0xFF1C0000" > $(obj)board/avnet/v5fx30teval/config.tmp
>> + @$(MKCONFIG) $(@:_flash_config=) ppc ppc4xx v5fx30teval avnet
>> +
>> +v5fx30teval_config: unconfig
>> + @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
>> + @cp $(obj)board/avnet/v5fx30teval/u-boot-ram.lds $(obj)board/avnet/v5fx30teval/u-boot.lds
>> + @$(MKCONFIG) $(@:_config=) ppc ppc4xx v5fx30teval avnet
>> +
>> +
>> VOH405_config: unconfig
>> @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
>>
>> diff --git a/board/avnet/v5fx30teval/.gitignore b/board/avnet/v5fx30teval/.gitignore
>> new file mode 100644
>> index 0000000..e3155c5
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/.gitignore
>> @@ -0,0 +1,2 @@
>> +/u-boot.lds
>> +/config.tmp
>> diff --git a/board/avnet/v5fx30teval/Makefile b/board/avnet/v5fx30teval/Makefile
>> new file mode 100644
>> index 0000000..7283704
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/Makefile
>> @@ -0,0 +1,58 @@
>> +#
>> +# (C) Copyright 2000-2006
>> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
>> +#
>> +# See file CREDITS for list of people who contributed to this
>> +# project.
>> +#
>> +# This program is free software; you can redistribute it and/or
>> +# modify it under the terms of the GNU General Public License as
>> +# published by the Free Software Foundation; either version 2 of
>> +# the License, or (at your option) any later version.
>> +#
>> +# This program is distributed in the hope that it will be useful,
>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> +# GNU General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU General Public License
>> +# along with this program; if not, write to the Free Software
>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> +# MA 02111-1307 USA
>> +#
>> +
>> +include $(TOPDIR)/config.mk
>> +ifneq ($(OBJTREE),$(SRCTREE))
>> +endif
>> +
>> +INCS :=
>> +CFLAGS += $(INCS)
>> +HOST_CFLAGS += $(INCS)
>> +
>> +LIB = $(obj)lib$(BOARD).a
>> +
>> +COBJS = $(BOARD).o
>> +
>> +SOBJS = init.o
>> +
>> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
>> +OBJS := $(addprefix $(obj),$(COBJS))
>> +SOBJS := $(addprefix $(obj),$(SOBJS))
>> +
>> +$(LIB): $(OBJS) $(SOBJS)
>> + $(AR) $(ARFLAGS) $@ $^
>> +
>> +clean:
>> + rm -f $(SOBJS) $(OBJS)
>> +
>> +distclean: clean
>> + rm -f $(LIB) core *.bak .depend
>> +
>> +#########################################################################
>> +
>> +# defines $(obj).depend target
>> +include $(SRCTREE)/rules.mk
>> +
>> +sinclude $(obj).depend
>> +
>> +#########################################################################
>> diff --git a/board/avnet/v5fx30teval/config.mk b/board/avnet/v5fx30teval/config.mk
>> new file mode 100644
>> index 0000000..38272b9
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/config.mk
>> @@ -0,0 +1,27 @@
>> +#
>> +# (C) Copyright 2000
>> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
>> +#
>> +# See file CREDITS for list of people who contributed to this
>> +# project.
>> +#
>> +# This program is free software; you can redistribute it and/or
>> +# modify it under the terms of the GNU General Public License as
>> +# published by the Free Software Foundation; either version 2 of
>> +# the License, or (at your option) any later version.
>> +#
>> +# This program is distributed in the hope that it will be useful,
>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> +# GNU General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU General Public License
>> +# along with this program; if not, write to the Free Software
>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> +# MA 02111-1307 USA
>> +#
>> +sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
>> +
>> +ifndef TEXT_BASE
>> +TEXT_BASE = 0x03000000
>> +endif
>> diff --git a/board/avnet/v5fx30teval/init.S b/board/avnet/v5fx30teval/init.S
>> new file mode 100644
>> index 0000000..c07ee83
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/init.S
>> @@ -0,0 +1,58 @@
>> +/*
>> + * (C) Copyright 2008
>> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at uam.es
>> + * This work has been supported by: QTechnology http://qtec.com/
>> + *
>> + * This program is free software: you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation, either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> +*/
>> +
>> +#include <ppc_asm.tmpl>
>> +#include <config.h>
>> +#include <asm-ppc/mmu.h>
>> +
>> +.section .bootpg,"ax"
>> +.globl tlbtab
>> +
>> +tlbtab:
>> +tlbtab_start
>> + /* SDRAM */
>> +tlbentry(XPAR_DDR2_SDRAM_MEM_BASEADDR, SZ_256M, CFG_SDRAM_BASE, 0,
>> + AC_R | AC_W | AC_X | SA_G | SA_I)
>> + /* UART */
>> +tlbentry(XPAR_UARTLITE_0_BASEADDR, SZ_64K, XPAR_UARTLITE_0_BASEADDR, 0,
>> + AC_R | AC_W | SA_G | SA_I)
>> + /* PIC */
>> +tlbentry(XPAR_INTC_0_BASEADDR, SZ_64K, XPAR_INTC_0_BASEADDR, 0,
>> + AC_R | AC_W | SA_G | SA_I)
>> +#ifdef XPAR_IIC_EEPROM_BASEADDR
>> + /* I2C */
>> +tlbentry(XPAR_IIC_EEPROM_BASEADDR, SZ_64K, XPAR_IIC_EEPROM_BASEADDR, 0,
>> + AC_R | AC_W | SA_G | SA_I)
>> +#endif
>> +#ifdef XPAR_LLTEMAC_0_BASEADDR
>> + /* Net */
>> +tlbentry(XPAR_LLTEMAC_0_BASEADDR, SZ_64K, XPAR_LLTEMAC_0_BASEADDR, 0,
>> + AC_R | AC_W | SA_G | SA_I)
>> +#endif
>> +#ifdef XPAR_XPS_SPI_0_BASEADDR
>> + /* Net */
>> +tlbentry(XPAR_XPS_SPI_0_BASEADDR, SZ_64K, XPAR_XPS_SPI_0_BASEADDR, 0,
>> + AC_R | AC_W | SA_G | SA_I)
>> +#endif
>> +#ifdef XPAR_FLASH_MEM0_BASEADDR
>> + /*Flash*/
>> +tlbentry(XPAR_FLASH_MEM0_BASEADDR, SZ_16M, XPAR_FLASH_MEM0_BASEADDR, 0,
>> + AC_R | AC_W | AC_X | SA_G | SA_I)
>> +#endif
>> +tlbtab_end
>> diff --git a/board/avnet/v5fx30teval/u-boot-ram.lds b/board/avnet/v5fx30teval/u-boot-ram.lds
>> new file mode 100644
>> index 0000000..2c98d27
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/u-boot-ram.lds
>> @@ -0,0 +1,134 @@
>> +/*
>> + * (C) Copyright 2000-2004
>> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
>> + *
>> + * See file CREDITS for list of people who contributed to this
>> + * project.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation; either version 2 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program; if not, write to the Free Software
>> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> + * MA 02111-1307 USA
>> + */
>> +
>> +OUTPUT_ARCH(powerpc)
>> +ENTRY(_start_440)
>> +
>> +SECTIONS
>> +{
>> + /* Read-only sections, merged into text segment: */
>> + . = + SIZEOF_HEADERS;
>> + .interp : { *(.interp) }
>> + .hash : { *(.hash) }
>> + .dynsym : { *(.dynsym) }
>> + .dynstr : { *(.dynstr) }
>> + .rel.text : { *(.rel.text) }
>> + .rela.text : { *(.rela.text) }
>> + .rel.data : { *(.rel.data) }
>> + .rela.data : { *(.rela.data) }
>> + .rel.rodata : { *(.rel.rodata) }
>> + .rela.rodata : { *(.rela.rodata) }
>> + .rel.got : { *(.rel.got) }
>> + .rela.got : { *(.rela.got) }
>> + .rel.ctors : { *(.rel.ctors) }
>> + .rela.ctors : { *(.rela.ctors) }
>> + .rel.dtors : { *(.rel.dtors) }
>> + .rela.dtors : { *(.rela.dtors) }
>> + .rel.bss : { *(.rel.bss) }
>> + .rela.bss : { *(.rela.bss) }
>> + .rel.plt : { *(.rel.plt) }
>> + .rela.plt : { *(.rela.plt) }
>> + .init : { *(.init) }
>> + .plt : { *(.plt) }
>> + .text :
>> + {
>> + /* WARNING - the following is hand-optimized to fit within */
>> + /* the sector layout of our flash chips! XXX FIXME XXX */
>> +
>> +
>> + *(.text)
>> + *(.fixup)
>> + *(.got1)
>> + }
>> + _etext = .;
>> + PROVIDE (etext = .);
>> + .rodata :
>> + {
>> + *(.rodata)
>> + *(.rodata1)
>> + *(.rodata.str1.4)
>> + *(.eh_frame)
>> + }
>> + .fini : { *(.fini) } =0
>> + .ctors : { *(.ctors) }
>> + .dtors : { *(.dtors) }
>> +
>> + /* Read-write section, merged into data segment: */
>> + . = (. + 0x00FF) & 0xFFFFFF00;
>> + _erotext = .;
>> + PROVIDE (erotext = .);
>> + .reloc :
>> + {
>> + *(.got)
>> + _GOT2_TABLE_ = .;
>> + *(.got2)
>> + _FIXUP_TABLE_ = .;
>> + *(.fixup)
>> + }
>> + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
>> + __fixup_entries = (. - _FIXUP_TABLE_)>>2;
>> +
>> + .data :
>> + {
>> + *(.data)
>> + *(.data1)
>> + *(.sdata)
>> + *(.sdata2)
>> + *(.dynamic)
>> + CONSTRUCTORS
>> + }
>> + _edata = .;
>> + PROVIDE (edata = .);
>> +
>> + . = .;
>> + __u_boot_cmd_start = .;
>> + .u_boot_cmd : { *(.u_boot_cmd) }
>> + __u_boot_cmd_end = .;
>> +
>> +
>> + . = .;
>> + __start___ex_table = .;
>> + __ex_table : { *(__ex_table) }
>> + __stop___ex_table = .;
>> +
>> + . = ALIGN(256);
>> + __init_begin = .;
>> + .text.init : { *(.text.init) }
>> + .data.init : { *(.data.init) }
>> + . = ALIGN(256);
>> + __init_end = .;
>> +
>> + __bss_start = .;
>> + .bss (NOLOAD) :
>> + {
>> + *(.sbss) *(.scommon)
>> + *(.dynbss)
>> + *(.bss)
>> + *(COMMON)
>> + }
>> +
>> + ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
>> +
>> + _end = . ;
>> + PROVIDE (end = .);
>> +}
>> diff --git a/board/avnet/v5fx30teval/u-boot-rom.lds b/board/avnet/v5fx30teval/u-boot-rom.lds
>> new file mode 100644
>> index 0000000..d5da018
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/u-boot-rom.lds
>> @@ -0,0 +1,144 @@
>> +/*
>> + * (C) Copyright 2000-2004
>> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
>> + *
>> + * See file CREDITS for list of people who contributed to this
>> + * project.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation; either version 2 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program; if not, write to the Free Software
>> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> + * MA 02111-1307 USA
>> + */
>> +
>> +OUTPUT_ARCH(powerpc)
>> +ENTRY(_start_440)
>> +
>> +SECTIONS
>> +{
>> + .resetvec 0xFFFFFFFC :
>> + {
>> + *(.resetvec)
>> + } = 0xffff
>> +
>> + .bootpg 0xFFFFF000 :
>> + {
>> + cpu/ppc4xx/start.o (.bootpg)
>> + } = 0xffff
>> +
>> + /* Read-only sections, merged into text segment: */
>> + . = + SIZEOF_HEADERS;
>> + .interp : { *(.interp) }
>> + .hash : { *(.hash) }
>> + .dynsym : { *(.dynsym) }
>> + .dynstr : { *(.dynstr) }
>> + .rel.text : { *(.rel.text) }
>> + .rela.text : { *(.rela.text) }
>> + .rel.data : { *(.rel.data) }
>> + .rela.data : { *(.rela.data) }
>> + .rel.rodata : { *(.rel.rodata) }
>> + .rela.rodata : { *(.rela.rodata) }
>> + .rel.got : { *(.rel.got) }
>> + .rela.got : { *(.rela.got) }
>> + .rel.ctors : { *(.rel.ctors) }
>> + .rela.ctors : { *(.rela.ctors) }
>> + .rel.dtors : { *(.rel.dtors) }
>> + .rela.dtors : { *(.rela.dtors) }
>> + .rel.bss : { *(.rel.bss) }
>> + .rela.bss : { *(.rela.bss) }
>> + .rel.plt : { *(.rel.plt) }
>> + .rela.plt : { *(.rela.plt) }
>> + .init : { *(.init) }
>> + .plt : { *(.plt) }
>> + .text :
>> + {
>> + /* WARNING - the following is hand-optimized to fit within */
>> + /* the sector layout of our flash chips! XXX FIXME XXX */
>> +
>> +
>> + *(.text)
>> + *(.fixup)
>> + *(.got1)
>> + }
>> + _etext = .;
>> + PROVIDE (etext = .);
>> + .rodata :
>> + {
>> + *(.rodata)
>> + *(.rodata1)
>> + *(.rodata.str1.4)
>> + *(.eh_frame)
>> + }
>> + .fini : { *(.fini) } =0
>> + .ctors : { *(.ctors) }
>> + .dtors : { *(.dtors) }
>> +
>> + /* Read-write section, merged into data segment: */
>> + . = (. + 0x00FF) & 0xFFFFFF00;
>> + _erotext = .;
>> + PROVIDE (erotext = .);
>> + .reloc :
>> + {
>> + *(.got)
>> + _GOT2_TABLE_ = .;
>> + *(.got2)
>> + _FIXUP_TABLE_ = .;
>> + *(.fixup)
>> + }
>> + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
>> + __fixup_entries = (. - _FIXUP_TABLE_)>>2;
>> +
>> + .data :
>> + {
>> + *(.data)
>> + *(.data1)
>> + *(.sdata)
>> + *(.sdata2)
>> + *(.dynamic)
>> + CONSTRUCTORS
>> + }
>> + _edata = .;
>> + PROVIDE (edata = .);
>> +
>> + . = .;
>> + __u_boot_cmd_start = .;
>> + .u_boot_cmd : { *(.u_boot_cmd) }
>> + __u_boot_cmd_end = .;
>> +
>> +
>> + . = .;
>> + __start___ex_table = .;
>> + __ex_table : { *(__ex_table) }
>> + __stop___ex_table = .;
>> +
>> + . = ALIGN(256);
>> + __init_begin = .;
>> + .text.init : { *(.text.init) }
>> + .data.init : { *(.data.init) }
>> + . = ALIGN(256);
>> + __init_end = .;
>> +
>> + __bss_start = .;
>> + .bss (NOLOAD) :
>> + {
>> + *(.sbss) *(.scommon)
>> + *(.dynbss)
>> + *(.bss)
>> + *(COMMON)
>> + }
>> +
>> + ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
>> +
>> + _end = . ;
>> + PROVIDE (end = .);
>> +}
>> diff --git a/board/avnet/v5fx30teval/v5fx30teval.c b/board/avnet/v5fx30teval/v5fx30teval.c
>> new file mode 100644
>> index 0000000..55d301a
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/v5fx30teval.c
>> @@ -0,0 +1,47 @@
>> +/*
>> + * (C) Copyright 2008
>> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at uam.es
>> + * This work has been supported by: QTechnology http://qtec.com/
>> + * This program is free software: you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation, either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> +*/
>> +
>> +#include <config.h>
>> +#include <common.h>
>> +#include <asm/processor.h>
>> +
>> +int board_pre_init(void)
>> +{
>> + return 0;
>> +}
>> +
>> +int checkboard(void)
>> +{
>> + puts("Avnet Virtex5 FX30T Eval Board\n");
>> + return 0;
>> +}
>> +
>> +phys_size_t initdram(int board_type)
>> +{
>> + return get_ram_size(XPAR_DDR2_SDRAM_MEM_BASEADDR,
>> + CFG_SDRAM_SIZE_MB * 1024 * 1024);
>> +}
>> +
>> +void get_sys_info(sys_info_t * sysInfo)
>> +{
>> + sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ;
>> + sysInfo->freqPLB = XPAR_PLB_CLOCK_FREQ_HZ;
>> + sysInfo->freqPCI = 0;
>> +
>> + return;
>> +}
>> diff --git a/board/avnet/v5fx30teval/xparameters.h b/board/avnet/v5fx30teval/xparameters.h
>> new file mode 100644
>> index 0000000..4d60a25
>> --- /dev/null
>> +++ b/board/avnet/v5fx30teval/xparameters.h
>> @@ -0,0 +1,36 @@
>> +/*
>> + * (C) Copyright 2008
>> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at uam.es
>> + * This work has been supported by: QTechnology http://qtec.com/
>> + * based on xparameters.h by Xilinx
>> + *
>> + * This program is free software: you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation, either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> +*/
>> +
>> +#ifndef XPARAMETER_H
>> +#define XPARAMETER_H
>> +
>> +#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000
>> +#define XPAR_INTC_0_BASEADDR 0x81800000
>> +#define XPAR_LLTEMAC_0_BASEADDR 0x81C00000
>> +#define XPAR_UARTLITE_0_BASEADDR 0x84000000
>> +#define XPAR_SPI_0_BASEADDR 0x83400000
>> +#define XPAR_FLASH_MEM0_BASEADDR 0xFF000000
>> +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000
>> +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000
>> +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13
>> +#define XPAR_UARTLITE_0_BAUDRATE 9600
>> +#define XPAR_SPI_0_NUM_TRANSFER_BITS 8
>> +
>> +#endif
>> diff --git a/include/configs/v5fx30teval.h b/include/configs/v5fx30teval.h
>> new file mode 100644
>> index 0000000..6cbaeb1
>> --- /dev/null
>> +++ b/include/configs/v5fx30teval.h
>> @@ -0,0 +1,121 @@
>> +/*
>> + * (C) Copyright 2008
>> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at uam.es
>> + * This work has been supported by: QTechnology http://qtec.com/
>> + * This program is free software: you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation, either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> +*/
>> +
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +/*
>> +#define DEBUG
>> +#define ET_DEBUG
>> +*/
>> + /*CPU*/
>> +#define CONFIG_XILINX_ML507 1
>> +#define CONFIG_XILINX_440 1
>> +#define CONFIG_440 1
>> +#define CONFIG_4xx 1
>> +#include "../board/avnet/v5fx30teval/xparameters.h"
>> +
>> +/*Mem Map*/
>> +#define CFG_SDRAM_BASE 0x0
>> +#define CFG_SDRAM_SIZE_MB 64
>> +#define CFG_MONITOR_BASE TEXT_BASE
>> +#define CFG_MONITOR_LEN ( 192 * 1024 )
>> +#define CFG_MALLOC_LEN ( CFG_ENV_SIZE + 128 * 1024 )
>> +
>> +/*Uart*/
>> +#define CONFIG_XILINX_UARTLITE
>> +#define CONFIG_BAUDRATE XPAR_UARTLITE_0_BAUDRATE
>> +#define CFG_BAUDRATE_TABLE { XPAR_UARTLITE_0_BAUDRATE }
>> +#define CONFIG_SERIAL_BASE XPAR_UARTLITE_0_BASEADDR
>> +
>> +/*Cmd*/
>> +#include <config_cmd_default.h>
>> +#define CONFIG_CMD_ASKENV
>> +#define CONFIG_CMD_CACHE
>> +#define CONFIG_CMD_DIAG
>> +#define CONFIG_CMD_ELF
>> +#define CONFIG_CMD_IRQ
>> +#define CONFIG_CMD_REGINFO
>> +#define CONFIG_CMD_JFFS2
>> +#define CONFIG_JFFS2_CMDLINE
>> +#undef CONFIG_CMD_I2C
>> +#undef CONFIG_CMD_DTT
>> +#undef CONFIG_CMD_NET
>> +#undef CONFIG_CMD_PING
>> +#undef CONFIG_CMD_DHCP
>> +#undef CONFIG_CMD_EEPROM
>> +#undef CONFIG_CMD_IMLS
>> +
>> +/*Env*/
>> +#define CFG_ENV_IS_IN_FLASH
>> +#define CFG_ENV_SIZE 0x20000
>> +#define CFG_ENV_SECT_SIZE 0x20000
>> +#define CFG_ENV_OFFSET 0x1A0000
>> +#define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)
>> +
>> +/*Misc*/
>> +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */
>> +#define CFG_LONGHELP /* undef to save memory */
>> +#define CFG_PROMPT "v5fx30teval:/# "/* Monitor Command Prompt */
>> +#if defined(CONFIG_CMD_KGDB)
>> +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
>> +#else
>> +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
>> +#endif
>> +#define CFG_PBSIZE ( CFG_CBSIZE + sizeof( CFG_PROMPT ) + 16 )
>> +#define CFG_MAXARGS 16 /* max number of command args */
>> +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
>> +#define CFG_MEMTEST_START 0x00400000 /* memtest works on */
>> +#define CFG_MEMTEST_END 0x00C00000 /* 4 ... 12 MB in DRAM */
>> +#define CFG_LOAD_ADDR 0x00400000 /* default load address */
>> +#define CFG_EXTBDINFO 1 /* Extended board_into (bd_t) */
>> +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
>> +#define CONFIG_CMDLINE_EDITING /* add command line history */
>> +#define CONFIG_AUTO_COMPLETE /* add autocompletion support */
>> +#define CONFIG_LOOPW /* enable loopw command */
>> +#define CONFIG_MX_CYCLIC /* enable mdc/mwc commands */
>> +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */
>> +#define CONFIG_VERSION_VARIABLE /* include version env variable */
>> +#define CFG_CONSOLE_INFO_QUIET /* don't print console @ startup */
>> +#define CFG_HUSH_PARSER /* Use the HUSH parser */
>> +#define CFG_PROMPT_HUSH_PS2 "> "
>> +#define CONFIG_LOADS_ECHO /* echo on for serial download */
>> +#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */
>> +#define CFG_BOOTMAPSZ ( 8 << 20 ) /* Initial Memory map for Linux */
>> +#define CONFIG_PREBOOT "echo U-Boot is up and runnining;"
>> +
>> +/*Stack*/
>> +#define CFG_INIT_RAM_ADDR 0x800000 /* Initial RAM address */
>> +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */
>> +#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */
>> +#define CFG_GBL_DATA_OFFSET ( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE )
>> +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
>> +/*Speed*/
>> +#define CONFIG_SYS_CLK_FREQ XPAR_CORE_CLOCK_FREQ_HZ
>> +
>> +/*Flash*/
>> +#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR
>> +#define CFG_FLASH_SIZE (16*1024*1024)
>> +#define CFG_FLASH_CFI 1
>> +#define CFG_FLASH_CFI_DRIVER 1
>> +#define CFG_FLASH_EMPTY_INFO 1
>> +#define CFG_MAX_FLASH_BANKS 1
>> +#define CFG_MAX_FLASH_SECT 131
>> +#define CFG_FLASH_PROTECTION
>> +#define MTDIDS_DEFAULT "nor0=v5fx30teval-flash"
>> +#define MTDPARTS_DEFAULT "mtdparts=v5fx30teval-flash:-(user)"
>> +
>> +#endif /* __CONFIG_H */
>

--
Ricardo Ribalda