Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi, 2011/2/1 Reinhard Meyer : > Dear all, >>> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld >>> -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o >>> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: >>> -r and -shared may not be used together >>> >>> I have tried this patch but this a problem releated to linking option. Do >>> you have this problem? >>> >>> Michael >> >> Read up recent posts on the list: this was detected and is fixed in the >> master branch of the u-boot-arm repository. > I'll rebase u-boot-atmel on u-boot-arm/master then. Please rebase at91 > related patches on > u-boot-atmel/rework then (my time permitting, that branch will exist > somewhere tomorrow) I just posted a rework of these patch series, based on your latest rework branch It removes a lot of legacy code and makes the boards compile and operational again. It has been tested on real hardware. To make it easier for you: You can pull the series here or from the ML. :-)) - The following changes since commit 137f4defd8f8d8d2198b4981d25614a1cbcf4587: AT91: enable MMC on at91sam(9260/9g20/0xe)ek (2011-02-02 10:11:07 +0100) are available in the git repository at: git://git.denx.de/u-boot-usb.git fix-at91sam9261ek Remy Bohmer (2): at91sam9261ek: make operational again Make at91sam9261ek and at91sam9g10ek work on current u-boot-atmel.git Makefile | 23 --- arch/arm/cpu/arm926ejs/at91/at91sam9261_devices.c | 31 ++-- arch/arm/cpu/arm926ejs/at91/led.c |1 - arch/arm/include/asm/arch-at91/at91_matrix.h | 17 ++- arch/arm/include/asm/arch-at91/at91sam9261.h |1 + .../arm/include/asm/arch-at91/at91sam9261_matrix.h | 64 - board/atmel/at91sam9261ek/Makefile |6 +- board/atmel/at91sam9261ek/at91sam9261ek.c | 147 +++- board/atmel/at91sam9261ek/config.mk|1 - board/atmel/at91sam9261ek/led.c|8 +- boards.cfg |6 + doc/README.at91|3 +- include/configs/at91sam9261ek.h| 142 +++ 13 files changed, 201 insertions(+), 249 deletions(-) delete mode 100644 arch/arm/include/asm/arch-at91/at91sam9261_matrix.h delete mode 100644 board/atmel/at91sam9261ek/config.mk - Kind regards, Remy ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Dear all, >> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld >> -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o >> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: >> -r and -shared may not be used together >> >> I have tried this patch but this a problem releated to linking option. Do >> you have this problem? >> >> Michael > > Read up recent posts on the list: this was detected and is fixed in the > master branch of the u-boot-arm repository. I'll rebase u-boot-atmel on u-boot-arm/master then. Please rebase at91 related patches on u-boot-atmel/rework then (my time permitting, that branch will exist somewhere tomorrow) Best Regards, Reinhard ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi, 2011/2/1 Michael Trimarchi : > Hi > > On 02/01/2011 01:16 PM, Albert ARIBAUD wrote: >> Le 01/02/2011 11:45, Michael Trimarchi a écrit : >> >>> Hi >>> >>> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld >>> -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o >>> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: >>> -r and -shared may not be used together >>> >>> I have tried this patch but this a problem releated to linking option. Do >>> you have this problem? >>> >>> Michael >> >> Read up recent posts on the list: this was detected and is fixed in the >> master branch of the u-boot-arm repository. I mentioned this as well directly after posting this patch for the first time. But anyway, if you look at 'cdc-at91' branch of u-boot-usb you can see all the other patches that are required to make it compile properly. Including the timer fix for the at91 family. >> >> Amicalement, > I see, but I see but I have other little problem. I have fixed the > compilation, but I have a segmentation fault. > > Starting program: > /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld > -pie -Bstatic -T u-boot.lds -Ttext 0x23e0 arch/arm/cpu/arm926ejs/start.o > --start-group api/libapi.o arch/arm/cpu/arm926ejs/at91/libat91.o > arch/arm/cpu/arm926ejs/libarm926ejs.o arch/arm/lib/libarm.o > common/libcommon.o disk/libdisk.o drivers/bios_emulator/libatibiosemu.o > drivers/block/libblock.o drivers/dma/libdma.o drivers/fpga/libfpga.o > drivers/gpio/libgpio.o drivers/hwmon/libhwmon.o drivers/i2c/libi2c.o > drivers/input/libinput.o drivers/misc/libmisc.o drivers/mmc/libmmc.o > drivers/mtd/libmtd.o drivers/mtd/nand/libnand.o > drivers/mtd/onenand/libonenand.o drivers/mtd/spi/libspi_flash.o > drivers/mtd/ubi/libubi.o drivers/net/libnet.o drivers/net/phy/libphy.o > drivers/pci/libpci.o drivers/pcmcia/libpcmcia.o drivers/power/libpower.o > drivers/rtc/librtc.o drivers/serial/libserial.o drivers/spi/libspi.o > drivers/twserial/libtws.o drivers/usb/gadget/libusb_gadget.o > drivers/usb/host/libusb_host.o drivers/usb/musb/libusb_musb.o > drivers/usb/phy/libusb_phy.o drivers/video/libvideo.o > drivers/watchdog/libwatchdog.o fs/cramfs/libcramfs.o fs/ext2/libext2fs.o > fs/fat/libfat.o fs/fdos/libfdos.o fs/jffs2/libjffs2.o > fs/reiserfs/libreiserfs.o fs/ubifs/libubifs.o fs/yaffs2/libyaffs2.o > lib/libfdt/libfdt.o lib/libgeneric.o lib/lzma/liblzma.o lib/lzo/liblzo.o > net/libnet.o post/libpost.o board/atmel/at91sam9261ek/libat91sam9261ek.o > --end-group /home/michael/u-boot/arch/arm/lib/eabi_compat.o -L > /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.1.2 > -lgcc -Map u-boot.map -o u-boot > /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: > u-boot: warning: allocated section `.bss' not in segment > > Program received signal SIGSEGV, Segmentation fault. > 0x08081ebd in elf32_arm_finish_dynamic_sections () > (gdb) bt > #0 0x08081ebd in elf32_arm_finish_dynamic_sections () > #1 0x0809cc2b in bfd_elf_final_link () > #2 0x0807b525 in elf32_arm_bfd_final_link () > #3 0x0805bfce in ldwrite () > #4 0x0805a0be in main () > > Michael I see you use a rather old compiler. I tested with a GCC 4.3.4 (CodeSourcery 2009q1) compiler which works okay. I also noticed that the current make structure of U-boot is more picky on linker usage, and even unresolved externals result in crashing linkers. This has nothing to do with this patch though. Kind regards, Remy ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi On 02/01/2011 01:16 PM, Albert ARIBAUD wrote: > Le 01/02/2011 11:45, Michael Trimarchi a écrit : > >> Hi >> >> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld >> -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o >> /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: >> -r and -shared may not be used together >> >> I have tried this patch but this a problem releated to linking option. Do >> you have this problem? >> >> Michael > > Read up recent posts on the list: this was detected and is fixed in the > master branch of the u-boot-arm repository. > > Amicalement, I see, but I see but I have other little problem. I have fixed the compilation, but I have a segmentation fault. Starting program: /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld -pie -Bstatic -T u-boot.lds -Ttext 0x23e0 arch/arm/cpu/arm926ejs/start.o --start-group api/libapi.o arch/arm/cpu/arm926ejs/at91/libat91.o arch/arm/cpu/arm926ejs/libarm926ejs.o arch/arm/lib/libarm.o common/libcommon.o disk/libdisk.o drivers/bios_emulator/libatibiosemu.o drivers/block/libblock.o drivers/dma/libdma.o drivers/fpga/libfpga.o drivers/gpio/libgpio.o drivers/hwmon/libhwmon.o drivers/i2c/libi2c.o drivers/input/libinput.o drivers/misc/libmisc.o drivers/mmc/libmmc.o drivers/mtd/libmtd.o drivers/mtd/nand/libnand.o drivers/mtd/onenand/libonenand.o drivers/mtd/spi/libspi_flash.o drivers/mtd/ubi/libubi.o drivers/net/libnet.o drivers/net/phy/libphy.o drivers/pci/libpci.o drivers/pcmcia/libpcmcia.o drivers/power/libpower.o drivers/rtc/librtc.o drivers/serial/libserial.o drivers/spi/libspi.o drivers/twserial/libtws.o drivers/usb/gadget/libusb_gadget.o drivers/usb/host/libusb_host.o drivers/usb/musb/libusb_musb.o drivers/usb/phy/libusb_phy.o drivers/video/libvideo.o drivers/watchdog/libwatchdog.o fs/cramfs/libcramfs.o fs/ext2/libext2fs.o fs/fat/libfat.o fs/fdos/libfdos.o fs/jffs2/libjffs2.o fs/reiserfs/libreiserfs.o fs/ubifs/libubifs.o fs/yaffs2/libyaffs2.o lib/libfdt/libfdt.o lib/libgeneric.o lib/lzma/liblzma.o lib/lzo/liblzo.o net/libnet.o post/libpost.o board/atmel/at91sam9261ek/libat91sam9261ek.o --end-group /home/michael/u-boot/arch/arm/lib/eabi_compat.o -L /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.1.2 -lgcc -Map u-boot.map -o u-boot /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: u-boot: warning: allocated section `.bss' not in segment Program received signal SIGSEGV, Segmentation fault. 0x08081ebd in elf32_arm_finish_dynamic_sections () (gdb) bt #0 0x08081ebd in elf32_arm_finish_dynamic_sections () #1 0x0809cc2b in bfd_elf_final_link () #2 0x0807b525 in elf32_arm_bfd_final_link () #3 0x0805bfce in ldwrite () #4 0x0805a0be in main () Michael diff --git a/arch/arm/cpu/arm926ejs/at91/timer.c b/arch/arm/cpu/arm926ejs/at91/timer.c index 82b8d7e..b140893 100644 --- a/arch/arm/cpu/arm926ejs/at91/timer.c +++ b/arch/arm/cpu/arm926ejs/at91/timer.c @@ -122,11 +122,21 @@ void __udelay(unsigned long usec) * * The time is used in CONFIG_SYS_HZ units! */ -void reset_timer(void) +void reset_timer_masked(void) { gd->timer_reset_value = get_ticks(); } +void reset_timer(void) +{ + reset_timer_masked(); +} + +ulong get_timer_masked(void) +{ +return tick_to_time(get_ticks() - gd->timer_reset_value); +} + ulong get_timer(ulong base) { return tick_to_time(get_ticks() - gd->timer_reset_value) - base; ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Le 01/02/2011 11:45, Michael Trimarchi a écrit : > Hi > > /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld > -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o > /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: > -r and -shared may not be used together > > I have tried this patch but this a problem releated to linking option. Do you > have this problem? > > Michael Read up recent posts on the list: this was detected and is fixed in the master branch of the u-boot-arm repository. Amicalement, -- Albert. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Dear Remy On 01/27/2011 11:46 PM, Remy Bohmer wrote: > Since U-boot v2010.12 the at91sam9261ek board is broken. > This is solved and tested on this board. > > Note: It requires that the 1st stage bootloader (like Atmel at91-bootstrap) > to load U-boot at a different address compared to previous releases of > U-boot due to conflicts in the BSS area during relocation. > (0x23f0 -> -0x23e0) > > Derived from a patch of: Alexander Stein > > > Signed-off-by: Remy Bohmer Hi /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld -pie -r -o libat91.o lowlevel_init.o clock.o cpu.o reset.o timer.o /home/toolchain/bin/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld: -r and -shared may not be used together I have tried this patch but this a problem releated to linking option. Do you have this problem? Michael > --- > board/atmel/at91sam9261ek/Makefile| 10 +- > board/atmel/at91sam9261ek/at91sam9261ek.c |7 --- > board/atmel/at91sam9261ek/config.mk |1 - > include/configs/at91sam9261ek.h | 25 + > 4 files changed, 30 insertions(+), 13 deletions(-) > delete mode 100644 board/atmel/at91sam9261ek/config.mk > > diff --git a/board/atmel/at91sam9261ek/Makefile > b/board/atmel/at91sam9261ek/Makefile > index 9d20ba0..1da810f 100644 > --- a/board/atmel/at91sam9261ek/Makefile > +++ b/board/atmel/at91sam9261ek/Makefile > @@ -29,16 +29,16 @@ include $(TOPDIR)/config.mk > > LIB = $(obj)lib$(BOARD).o > > -COBJS-y += at91sam9261ek.o > +COBJS-y += $(BOARD).o > COBJS-y += led.o > COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o > > -SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) > -OBJS := $(addprefix $(obj),$(COBJS-y)) > -SOBJS:= $(addprefix $(obj),$(SOBJS)) > +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) > +OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y)) > +SOBJS:= $(addprefix $(obj),$(SOBJS-y)) > > $(LIB): $(obj).depend $(OBJS) $(SOBJS) > - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) > + $(call cmd_link_o_target, $(OBJS)) > > clean: > rm -f $(SOBJS) $(OBJS) > diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c > b/board/atmel/at91sam9261ek/at91sam9261ek.c > index de5cfae..25c181e 100644 > --- a/board/atmel/at91sam9261ek/at91sam9261ek.c > +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c > @@ -246,7 +246,7 @@ int board_init(void) > gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9261EK; > #endif > /* adress of boot parameters */ > - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; > + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; > > at91_serial_hw_init(); > #ifdef CONFIG_CMD_NAND > @@ -273,8 +273,9 @@ int board_eth_init(bd_t *bis) > > int dram_init(void) > { > - gd->bd->bi_dram[0].start = PHYS_SDRAM; > - gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; > + /* dram_init must store complete ramsize in gd->ram_size */ > + gd->ram_size = get_ram_size((volatile long *)CONFIG_SYS_SDRAM_BASE, > + CONFIG_SYS_SDRAM_SIZE); > return 0; > } > > diff --git a/board/atmel/at91sam9261ek/config.mk > b/board/atmel/at91sam9261ek/config.mk > deleted file mode 100644 > index e554a45..000 > --- a/board/atmel/at91sam9261ek/config.mk > +++ /dev/null > @@ -1 +0,0 @@ > -CONFIG_SYS_TEXT_BASE = 0x23f0 > diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h > index 401478b..0cffd94 100644 > --- a/include/configs/at91sam9261ek.h > +++ b/include/configs/at91sam9261ek.h > @@ -27,6 +27,8 @@ > #ifndef __CONFIG_H > #define __CONFIG_H > > +#include > + > #define CONFIG_AT91_LEGACY > > /* ARM asynchronous clock */ > @@ -39,6 +41,7 @@ > #else > #define CONFIG_AT91SAM9261 1 /* It's an Atmel AT91SAM9261 SoC*/ > #endif > +#define CONFIG_AT91FAMILY > #define CONFIG_ARCH_CPU_INIT > #undef CONFIG_USE_IRQ/* we don't need IRQ/FIQ stuff > */ > > @@ -105,11 +108,21 @@ > #define CONFIG_CMD_DHCP 1 > #define CONFIG_CMD_NAND 1 > #define CONFIG_CMD_USB 1 > +#define CONFIG_CMD_CACHE 1 > > /* SDRAM */ > #define CONFIG_NR_DRAM_BANKS 1 > -#define PHYS_SDRAM 0x2000 > -#define PHYS_SDRAM_SIZE 0x0400 /* 64 megs */ > +#define CONFIG_SYS_SDRAM_BASE0x2000 > +#define CONFIG_SYS_SDRAM_SIZESZ_64M /* 64 megs */ > + > +/* > + * AT91-bootstrap expects that U-boot needs to be loaded at 0x23f0 > + * but since U-boot is now being relocated to the end of RAM which is > + * almost in the same area, there will be an overlap in the BSS segment > + * resulting in a lockup during boot. So, we need to tell the > + * AT91-bootstrap code to load it at a lower address, namely 0x23e0 > + */ > +#define CONFIG_SYS_TEXT_BASE 0x23e0 > > /* DataFlash */ > #define CONFIG_ATMEL_DAT
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi, >> -COBJS-y += at91sam9261ek.o >> +COBJS-y += $(BOARD).o >> COBJS-y += led.o >> COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o >> >> -SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) >> -OBJS := $(addprefix $(obj),$(COBJS-y)) >> -SOBJS := $(addprefix $(obj),$(SOBJS)) >> +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) >> +OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y)) >> +SOBJS := $(addprefix $(obj),$(SOBJS-y)) > > What is the rationale for putting both C *and* assembly language objects > in OBJS? No rationale, except made this Makefile more in line with another board. Reworked, will be in patch-v2 >> >> -#define CONFIG_STACKSIZE (32*1024) /* regular stack */ >> +#define CONFIG_STACKSIZE (SZ_32K) /* regular stack */ > > Do not use SZ_ constants -- several instances in this patch. Reverted these changes in patch-v2. Thanks. Kind regards, Remy ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi Remy, Le 27/01/2011 23:46, Remy Bohmer a écrit : > Since U-boot v2010.12 the at91sam9261ek board is broken. > This is solved and tested on this board. > > Note: It requires that the 1st stage bootloader (like Atmel at91-bootstrap) > to load U-boot at a different address compared to previous releases of > U-boot due to conflicts in the BSS area during relocation. > (0x23f0 -> -0x23e0) > > Derived from a patch of: Alexander > Stein > > Signed-off-by: Remy Bohmer > --- > board/atmel/at91sam9261ek/Makefile| 10 +- > board/atmel/at91sam9261ek/at91sam9261ek.c |7 --- > board/atmel/at91sam9261ek/config.mk |1 - > include/configs/at91sam9261ek.h | 25 + > 4 files changed, 30 insertions(+), 13 deletions(-) > delete mode 100644 board/atmel/at91sam9261ek/config.mk > > diff --git a/board/atmel/at91sam9261ek/Makefile > b/board/atmel/at91sam9261ek/Makefile > index 9d20ba0..1da810f 100644 > --- a/board/atmel/at91sam9261ek/Makefile > +++ b/board/atmel/at91sam9261ek/Makefile > @@ -29,16 +29,16 @@ include $(TOPDIR)/config.mk > > LIB = $(obj)lib$(BOARD).o > > -COBJS-y += at91sam9261ek.o > +COBJS-y += $(BOARD).o > COBJS-y += led.o > COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o > > -SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) > -OBJS := $(addprefix $(obj),$(COBJS-y)) > -SOBJS:= $(addprefix $(obj),$(SOBJS)) > +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) > +OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y)) > +SOBJS:= $(addprefix $(obj),$(SOBJS-y)) What is the rationale for putting both C *and* assembly language objects in OBJS? > $(LIB): $(obj).depend $(OBJS) $(SOBJS) > - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) > + $(call cmd_link_o_target, $(OBJS)) If there is a rationale for putting all objects in OBJS, then SOBJS should be removed from the dependencies of LIB. If there is not, then SOBJS should remain in the '$(call...)'. > clean: > rm -f $(SOBJS) $(OBJS) > diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c > b/board/atmel/at91sam9261ek/at91sam9261ek.c > index de5cfae..25c181e 100644 > --- a/board/atmel/at91sam9261ek/at91sam9261ek.c > +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c > @@ -246,7 +246,7 @@ int board_init(void) > gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9261EK; > #endif > /* adress of boot parameters */ > - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; > + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; > > at91_serial_hw_init(); > #ifdef CONFIG_CMD_NAND > @@ -273,8 +273,9 @@ int board_eth_init(bd_t *bis) > > int dram_init(void) > { > - gd->bd->bi_dram[0].start = PHYS_SDRAM; > - gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; > + /* dram_init must store complete ramsize in gd->ram_size */ > + gd->ram_size = get_ram_size((volatile long *)CONFIG_SYS_SDRAM_BASE, > + CONFIG_SYS_SDRAM_SIZE); > return 0; > } > > diff --git a/board/atmel/at91sam9261ek/config.mk > b/board/atmel/at91sam9261ek/config.mk > deleted file mode 100644 > index e554a45..000 > --- a/board/atmel/at91sam9261ek/config.mk > +++ /dev/null > @@ -1 +0,0 @@ > -CONFIG_SYS_TEXT_BASE = 0x23f0 > diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h > index 401478b..0cffd94 100644 > --- a/include/configs/at91sam9261ek.h > +++ b/include/configs/at91sam9261ek.h > @@ -27,6 +27,8 @@ > #ifndef __CONFIG_H > #define __CONFIG_H > > +#include > + > #define CONFIG_AT91_LEGACY > > /* ARM asynchronous clock */ > @@ -39,6 +41,7 @@ > #else > #define CONFIG_AT91SAM9261 1 /* It's an Atmel AT91SAM9261 SoC*/ > #endif > +#define CONFIG_AT91FAMILY > #define CONFIG_ARCH_CPU_INIT > #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff > */ > > @@ -105,11 +108,21 @@ > #define CONFIG_CMD_DHCP 1 > #define CONFIG_CMD_NAND 1 > #define CONFIG_CMD_USB 1 > +#define CONFIG_CMD_CACHE 1 > > /* SDRAM */ > #define CONFIG_NR_DRAM_BANKS1 > -#define PHYS_SDRAM 0x2000 > -#define PHYS_SDRAM_SIZE 0x0400 /* 64 megs */ > +#define CONFIG_SYS_SDRAM_BASE0x2000 > +#define CONFIG_SYS_SDRAM_SIZESZ_64M /* 64 megs */ > + > +/* > + * AT91-bootstrap expects that U-boot needs to be loaded at 0x23f0 > + * but since U-boot is now being relocated to the end of RAM which is > + * almost in the same area, there will be an overlap in the BSS segment > + * resulting in a lockup during boot. So, we need to tell the > + * AT91-bootstrap code to load it at a lower address, namely 0x23e0 > + */ > +#define CONFIG_SYS_TEXT_BASE 0x23e0 > > /* DataFlash */ > #define CONFIG_ATMEL_DATAFLASH_SPI > @@ -168,7 +181,7 @@ > > #define CONFIG_SYS_LOAD_ADDR0x2200 /* load > address */ > > -#define CONFIG_SYS_MEMTE
Re: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Hi All, 2011/1/27 Remy Bohmer : > Since U-boot v2010.12 the at91sam9261ek board is broken. > This is solved and tested on this board. > > Note: It requires that the 1st stage bootloader (like Atmel at91-bootstrap) > to load U-boot at a different address compared to previous releases of > U-boot due to conflicts in the BSS area during relocation. > (0x23f0 -> -0x23e0) > > Derived from a patch of: Alexander Stein > > > Signed-off-by: Remy Bohmer For your information: This patch requires this patch applied to the tree first to make it work: http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/93537 Kind regards, Remy ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 2/2] at91sam9261ek: make operational again
Since U-boot v2010.12 the at91sam9261ek board is broken. This is solved and tested on this board. Note: It requires that the 1st stage bootloader (like Atmel at91-bootstrap) to load U-boot at a different address compared to previous releases of U-boot due to conflicts in the BSS area during relocation. (0x23f0 -> -0x23e0) Derived from a patch of: Alexander Stein Signed-off-by: Remy Bohmer --- board/atmel/at91sam9261ek/Makefile| 10 +- board/atmel/at91sam9261ek/at91sam9261ek.c |7 --- board/atmel/at91sam9261ek/config.mk |1 - include/configs/at91sam9261ek.h | 25 + 4 files changed, 30 insertions(+), 13 deletions(-) delete mode 100644 board/atmel/at91sam9261ek/config.mk diff --git a/board/atmel/at91sam9261ek/Makefile b/board/atmel/at91sam9261ek/Makefile index 9d20ba0..1da810f 100644 --- a/board/atmel/at91sam9261ek/Makefile +++ b/board/atmel/at91sam9261ek/Makefile @@ -29,16 +29,16 @@ include $(TOPDIR)/config.mk LIB= $(obj)lib$(BOARD).o -COBJS-y += at91sam9261ek.o +COBJS-y += $(BOARD).o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS-y)) -SOBJS := $(addprefix $(obj),$(SOBJS)) +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y)) +SOBJS := $(addprefix $(obj),$(SOBJS-y)) $(LIB):$(obj).depend $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) + $(call cmd_link_o_target, $(OBJS)) clean: rm -f $(SOBJS) $(OBJS) diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index de5cfae..25c181e 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -246,7 +246,7 @@ int board_init(void) gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9261EK; #endif /* adress of boot parameters */ - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND @@ -273,8 +273,9 @@ int board_eth_init(bd_t *bis) int dram_init(void) { - gd->bd->bi_dram[0].start = PHYS_SDRAM; - gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; + /* dram_init must store complete ramsize in gd->ram_size */ + gd->ram_size = get_ram_size((volatile long *)CONFIG_SYS_SDRAM_BASE, + CONFIG_SYS_SDRAM_SIZE); return 0; } diff --git a/board/atmel/at91sam9261ek/config.mk b/board/atmel/at91sam9261ek/config.mk deleted file mode 100644 index e554a45..000 --- a/board/atmel/at91sam9261ek/config.mk +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x23f0 diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h index 401478b..0cffd94 100644 --- a/include/configs/at91sam9261ek.h +++ b/include/configs/at91sam9261ek.h @@ -27,6 +27,8 @@ #ifndef __CONFIG_H #define __CONFIG_H +#include + #define CONFIG_AT91_LEGACY /* ARM asynchronous clock */ @@ -39,6 +41,7 @@ #else #define CONFIG_AT91SAM9261 1 /* It's an Atmel AT91SAM9261 SoC*/ #endif +#define CONFIG_AT91FAMILY #define CONFIG_ARCH_CPU_INIT #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ @@ -105,11 +108,21 @@ #define CONFIG_CMD_DHCP1 #define CONFIG_CMD_NAND1 #define CONFIG_CMD_USB 1 +#define CONFIG_CMD_CACHE 1 /* SDRAM */ #define CONFIG_NR_DRAM_BANKS 1 -#define PHYS_SDRAM 0x2000 -#define PHYS_SDRAM_SIZE0x0400 /* 64 megs */ +#define CONFIG_SYS_SDRAM_BASE 0x2000 +#define CONFIG_SYS_SDRAM_SIZE SZ_64M /* 64 megs */ + +/* + * AT91-bootstrap expects that U-boot needs to be loaded at 0x23f0 + * but since U-boot is now being relocated to the end of RAM which is + * almost in the same area, there will be an overlap in the BSS segment + * resulting in a lockup during boot. So, we need to tell the + * AT91-bootstrap code to load it at a lower address, namely 0x23e0 + */ +#define CONFIG_SYS_TEXT_BASE 0x23e0 /* DataFlash */ #define CONFIG_ATMEL_DATAFLASH_SPI @@ -168,7 +181,7 @@ #define CONFIG_SYS_LOAD_ADDR 0x2200 /* load address */ -#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM +#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE #define CONFIG_SYS_MEMTEST_END 0x23e0 #ifdef CONFIG_SYS_USE_DATAFLASH_CS0 @@ -230,8 +243,12 @@ * Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000) +/* size in bytes reserved for initial data */ + +#define CONFIG_SYS_INIT_SP_ADDR(CONFIG_SYS_SDRAM_BASE + SZ_4K \ + - GENERATED_GBL_DATA_SIZE) -#define CONFIG_STACKSIZE