From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Retanubun Date: Thu, 19 Mar 2009 10:54:42 -0400 Subject: [U-Boot] Coldfire: MCF5270: Compiling u-boot 2009.03-rc2 with gcc 4.3.3 and binutils 2.19.1 results in a u-boot that fails relocation to RAM. Message-ID: <49C25CB2.4090000@RuggedCom.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Greetings, I am trying to x86 cross-compile u-boot 2009.03-rc2 for the MCF5270 with gcc 4.3.3 and binutils 2.19.1 results in a u-boot that fails its relocation to RAM. My boot sequence is this U-Boot 2009.03-rc2dvl-00030-g28b1dbe (Mar 19 2009 - 10:21:06) CPU: Freescale ColdFire MCF5270 rev. 1, at 150 MHz Board: Ruggedcom MCF5270 I2C: ready DRAM: 8 MB >> This is what usually follows after, but fails << FLASH: 4 MB In: serial Out: serial Err: serial MAC: ethaddr 00:00:00:00:0F:00 Net: FEC0 [PRIME] Hit any key to stop autoboot: 0 My gcc-4.3.3 compile flags are: =============================== make -C drivers/serial/ make[1]: Entering directory `/home/richardretanubun/workspace/u-boot/drivers/serial' make[1]: Leaving directory `/home/richardretanubun/workspace/u-boot/drivers/serial' make[1]: Entering directory `/home/richardretanubun/workspace/u-boot/drivers/serial' m68k-uclinux-gcc -g -Os -ffixed-d7 -msep-data -D__KERNEL__ -DTEXT_BASE=0xFFC00000 -I/home/richardretanubun/workspace/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /usr/local/m68k-uclinux-tools/lib/gcc/m68k-uclinux/4.3.3/include -pipe -DCONFIG_M68K -D__M68K__ -mcpu=5271 -Wall -Wstrict-prototypes -fno-stack-protector -c -o mcfuart.o mcfuart.c m68k-uclinux-ar crv libserial.a mcfuart.o a - mcfuart.o make[1]: Leaving directory `/home/richardretanubun/workspace/u-boot/drivers/serial' My gcc-4.1.1 compile flags are: =============================== make -C drivers/serial/ make[1]: Entering directory `/home/richardretanubun/workspace/u-boot/drivers/serial' make[1]: Leaving directory `/home/richardretanubun/workspace/u-boot/drivers/serial' make[1]: Entering directory `/home/richardretanubun/workspace/u-boot/drivers/serial' m68k-elf-gcc -g -Os -ffixed-d7 -msep-data -D__KERNEL__ -DTEXT_BASE=0xFFC00000 -I/home/richardretanubun/workspace/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/m68knommu/usr/local/m68k-uclinux-tools/bin/../lib/gcc/m68k-uclinux/4.1.1/include -pipe -DCONFIG_M68K -D__M68K__ -m5307 -Wall -Wstrict-prototypes -fno-stack-protector -c -o mcfuart.o mcfuart.c m68k-elf-ar crv libserial.a mcfuart.o a - mcfuart.o make[1]: Leaving directory `/home/richardretanubun/workspace/u-boot/drivers/serial' Things of note 1. /cpu/mcf52x2/config.mk: the pre gcc-4.2.x, the cpu type is -m5307 and now it is -mcpu=5271 2. If I do objdump -d on the ELF, the newer toolchain seems to align code on 16-bit boundary, while the old one align code on 32-bit boundary. 3. With gcc-4.3.3. if I enforce -m5307, I got an error: start.S:144: Error: operands mismatch -- statement `movec %d0,%RAMBAR1' ignored Faking RAMBAR1 to RAMBAR bypasses this error, but the resulting binary won't boot (e.g. no single printf is printed after a reset). Questions: 1. What am I missing? 2. What are the recommended tool-chain for building M5270 coldfire for u-boot? Thanks very much for your time, - Richard