我正在尝试通过串行引导将RAM.bin映像加载到 MPC5604E 控制器的SRAM上(对 LINFLEX0 使用自动波特率模式)。我正在使用示例 LED 切换程序生成 RAM.bin映像文件并尝试通过串行启动加载,它已成功加载并且 LED 切换工作正常(启用看门狗时),但如果我们禁用看门狗然后加载并执行它,LED 切换不工作。因此,我假设在通过代码战士生成RAM.bin文件以进行串行引导之前,可能存在与.lcf(链接器文件)和其他一些文件中的初始化相关的问题。
任何人都可以帮助我进行这些初始化,因为我不知道该怎么做?这样我的RAM.bin镜像文件就可以成功执行了。
MPC5604E.lcf :::
/* lcf file for MPC5604E processors */
/* */
/* 512KB Flash, 96KB SRAM */
MEMORY
{
resetvector: org = 0x00000000, len = 0x00000008
init: org = 0x00000020, len = 0x00000FE0
exception_handlers: org = 0x00001000, len = 0x00001000
internal_flash: org = 0x00002000, len = 0x000FE000
internal_ram: org = 0x40000000, len = 0x00016000
heap : org = 0x40016000, len = 0x00001000
stack : org = 0x40017000, len = 0x00001000
}
/* This will ensure the rchw and reset vector are not stripped by the linker*/
FORCEACTIVE { "bam_rchw" "bam_resetvector" }
SECTIONS
{
.__bam_bootarea LOAD (0x00000000): {} > resetvector
GROUP : {
.init LOAD (0x00000020) : {}
.init_vle (VLECODE) LOAD (_e_init) : {
*(.init)
*(.init_vle)
}
} > init
GROUP : {
.ivor_branch_table (VLECODE) LOAD (0x00001000) : {}
.__exception_handlers (VLECODE) LOAD (_e_ivor_branch_table) : {}
} > exception_handlers
GROUP : {
.text : {}
.text_vle (VLECODE) ALIGN(0x08): {
*(.text)
*(.text_vle)
}
.rodata (CONST) : {
*(.rdata)
*(.rodata)
}
.ctors : {}
.dtors : {}
extab : {}
extabindex : {}
} > internal_flash
GROUP : {
.__uninitialized_intc_handlertable ALIGN(2048) : {}
.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 IVPR initialization)*/
EXCEPTION_HANDLERS = ADDR(exception_handlers);
/* L2 SRAM Location (used for L2 SRAM initialization) */
L2SRAM_LOCATION = 0x40000000;