[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.

Richard Retanubun RichardRetanubun at RuggedCom.com
Thu Mar 19 15:54:42 CET 2009


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



More information about the U-Boot mailing list