Hello !
I need to use the Boot Assist Module to boot an application from RS232c bust to internal SRAM.
My MCU is MPC5644A.
So, I made a Ram target RAM.mot file and Binary file. But It doesn't work well.
When I read a discussion(https://community.freescale.com/message/386416#386416), I did modify lcf file.
But, I find out a file is different it.
I use a Codewarrior project wizard for make a project.
A project includes Startup Code.(__ppc_eabi_init.c, MPC5644A_HWInit.c, MPC55xx_init_debug.c, MPC55xx_init.c) So, When I move "entry point (function __start() ) at the start of RAM image – at address 0x4000_0000.", There are some problem.
The problem is 3 warings.
1. multiply-defined: '__start' in Runtime.PPCEABI.VS.UC.a in the file __start.o
Previously defined in __start.o
ignored: '__start' in Runtime.PPCEABI.VS.UC.a from the file __start.o
2. multiply-defined: '__copy_rom_section' in Runtime.PPCEABI.VS.UC.a in the file __start.o
Previously defined in __start.o
ignored: '__copy_rom_section' in Runtime.PPCEABI.VS.UC.a from the file __start.o
3. multiply-defined: '__init_bss_section' in Runtime.PPCEABI.VS.UC.a in the file __start.o
Previously defined in __start.o
ignored: '__init_bss_section' in Runtime.PPCEABI.VS.UC.a from the file __start.o
I think this problem is caused by calling a __startup function by __ppc_eabi_init.c.
What I have to solve this problem?
Refer to my lcf file.
/* lcf file for MPC560xB (debug RAM version) */
/* Note internal memory configurations vary among the various family */
/* devices. */
/* */
/* +-----------+------------+ */
/* | Device | MPC5644A | */
/* +-----------+------------+ */
/* |SRAM/Flash | 192KB/ | */
/* | | 4MB | */
/* +-----------+------------+ */
/* */
/* These memory definitions will allow the stationery example to run on */
/* the smallest */
MEMORY
{
init: org = 0x40000000, len = 0x00000288
pseudo_rom: org = 0x40000288, len = 0x00000D30
exception_handlers: org = 0x40000FB8, len = 0x000000B0
internal_ram: org = 0x40001068, len = 0x00000014
heap : org = 0x4000107C, len = 0x00008000
stack : org = 0x4000907C, len = 0x00008000
}
SECTIONS
{
GROUP : {
.init_vle (VLECODE) : {
*(.init)
*(.init_vle)
}
.init : {}
} > init
GROUP : {
.ivor_branch_table (VLECODE) ALIGN (4096) : {}
.__exception_handlers (VLECODE) LOAD (_e_ivor_branch_table) : {}
} > exception_handlers
GROUP : {
.text (TEXT) ALIGN(0x10) : {}
.text_vle (VLECODE) ALIGN(0x10): {
*(.text)
*(.text_vle)
}
.rodata (CONST) : {
*(.rdata)
*(.rodata)
}
.ctors : {}
.dtors : {}
extab : {}
extabindex : {}
} > pseudo_rom
GROUP : {
.__uninitialized_intc_handlertable ALIGN(0x10) : {}
.data : {}
.sdata : {}
.sbss : {}
.sdata2 : {}
.sbss2 : {}
.bss : {}
} > internal_ram
}
/* Freescale CodeWarrior compiler address designations */
_stack_addr = ADDR(stack)+SIZEOF(stack);
_stack_end = ADDR(stack);
_heap_addr = ADDR(heap);
_heap_end = ADDR(heap)+SIZEOF(heap);
/* Exceptions Handlers Location (used in Exceptions.c for IVPR initialization) */
EXCEPTION_HANDLERS = ADDR(exception_handlers);