[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

How to migrate from arm-linux-gnu-gcc to arm-linux-gnueabi-gcc?



I used lenny's gcc crosscompiler arm-linux-gnu-gcc. I built a
microcontroller (AT91SAM9XE512) program by it.
Now I've upgraded my distro upto squeeze.
It contains arm-linux-gnueabi-gcc.

All my programs are built but don't work now.

example:

I had the following test project:

cstartup.S, main.c at91sam9xe512-flash.lds

startup/lds - were downloaded from Atmel site:
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4281&category_id=163&family_id=605&subfamily_id=1964


After I stumbled the problem I've reduced cstartup:

resetHandler:
    ldr     lr, =AT91C_BASE_PIOA
    mov     r0, #(1 << 6)
    str     r0, [ lr, #PIO_PER ]
    str     r0, [ lr, #PIO_OER ]
    str     r0, [ lr, #PIO_CODR ]
1:
    b       1b


If the code is compiled by arm-linux-gnu-gcc it turned on the led that
is connected on PORTA[6]

If the code is compiled by arm-linux-gnueabi-gcc it doesn't work.

build commands:

$(CC)   -c cstartup.S -o cstartup.o
$(CC)   -Tat91sam9xe512-flash.lds cstartup.o -o cstartup.elf
$(OBJCOPY) -O binary cstartup.elf cstartup.bin

at91sam9xe512-flash.lds contains the following script:

===

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(entry)

MEMORY
{
    flash (RX) : ORIGIN = 0x200000, LENGTH = 0x80000
    sram (W!RX) : ORIGIN = 0x300000, LENGTH = 0x8000
    sdram (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x4000000
}

SECTIONS
{  
    .fixed :
    {
        . = ALIGN(4);
        _sfixed = .;
        *(.vectors*);
        *(.text*)
        *(.rodata*)
        *(.glue_7)
        *(.glue_7t)
        . = ALIGN(4);
        _efixed = .;
    } >flash

    .prerelocate : AT (_efixed)
    {
        . = ALIGN(4);
        _sprerelocate = .;
        . = ALIGN(4);
        _eprerelocate = .;
    }

    .postrelocate : AT (_efixed + SIZEOF(.prerelocate))
    {
        . = ALIGN(4);
        _spostrelocate = .;
        *(.ramfunc);
        *(.data);
        . = ALIGN(4);
        _epostrelocate = .;
    } >sram

    .bss (NOLOAD) : {
        _szero = .;
        *(.bss)
        . = ALIGN(4);
        _ezero = .;
    } >sram
    
    _sstack = 0x308000;
}
end = .;


Could anybody advice what I should read to migrate between the compilers?
-- 

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment: signature.asc
Description: Digital signature


Reply to: