This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Linker configuration from arm-none-eabi-gcc to ARMCC

Hello,

I've a project which are started with arm-none-eabi-gcc and added in the last time the ARMCC. The linker configuration can't easy converted.

At the moment I search for a solution to define in the scatter file like the gcc linker file. This is used for the MPU configuration.

Here the content of my gcc linker file:

/* table of MPU sections */

.table.sections :

{

     . = ALIGN(4);

     LKF_SECTION_TABLE_START = .;

     LONG (__sec0_start)

     LONG (__sec0_end)

     LKF_SECTION_TABLE_END = .;

} > FLASH

/* MPU section 0 */

.sec0.data ALIGN(0x400)

{

     __sec0_start = .;

     *(.sec0_init)

     *sec0*.o(.data)

     . = ALIGN(4);

} > SRAM

.sec0.bss (NOLOAD) :

{

     *(.sec0)

     *sec0*.o(.bss COMMON)

     . = ALIGN(0x400);

     __sec0_end = .;

}

Now I need a solution for define the .table.sections in the ARMCC scatter file. The section is defined with:

sec0 AlignExpr(+0, 1024)  { .ANY(.sec0.data)  sec0*.o(+RW, +ZI) }

With the gcc can I read the .table.sectio with: extern uint32_t LKF_SECTION_TABLE_START[];

The using of the $$ variables in the C source code from the armlink is not so good. Have everybody a solution for definition of this table in the scatter file?

Thanks four Your help,

Bernd

  • HI moennicke and welcome to the Community!

    I've moved your question to Software Development Tools where I hope we can get you some help.

  • Thanks Carl. I hope that I become here a answer.

    A further point where I have found no solution so far is: I have same variables, which are needet beetween more applications in the FLASH, for example FLASH boot loader and checksum tool. This variable shall not initialise during the compalation. This make a tool directly in the HEX file. Now with other toolchains I have only defined in the linker the address of this variables and in a header file all variables as extern.

    Her a example from the arm-none-eabi-gcc:

    h file:

    extern const uint32_t TestVariant;

    ld file:

    MEMORY

    {

        ....

        FLASH_HANDSHAKE_VARIABLES (ro)    : ORIGIN = 0x80001000, LENGTH = 0x100

    }

    .handshake_variables :

    {

        PROVIDE (TestVariant = 0x00000000);

    } > FLASH_HANDSHAKE_VARIABLES

    Have anybody a solution for this?

    Thanks for You help,

    Bernd