您好!
我在我的系统中完成了两个引导过程、首先引导 DDR init 程序、然后第二个引导我的实际应用程序。 在 DDR 初始化程序中,所有 cmd 段都是在 L2存储器中定义的,它们运行良好,没有问题。
然后在我的实际应用程序中、这些段在 L2或 DDR 中定义、我发现其中定义的几个段 会严重 影响程序工作结果。 当我定义任何段时、它们是.const/.cinit/.switch 段
在 DDR 中、我的应用程序无法正常工作。当我将三个部分全部放在 L2中时 、应用程序可以正常工作。
我的问题是、为什么会发生这种情况?
我的最后一个命令如下所示
堆0x4000000 /* 64MB */
-stack 0x4000 // 16KB */
存储器
{
LOCAL_L2_SRAM:O = 0x00800000 l = 0x00100000 // 1MB 本地 L2 SRAM */
LOCAL_L1P_SRAM:O = 0x00E00000 l = 0x00008000 // 32kB 本地 L1P SRAM *
LOCAL_L1D_SRAM:O = 0x00F00000 l = 0x00008000 // 32kB 本地 L1D SRAM */
MSMSRAM:O = 0x0C000000 l = 0x00100000 // 1MB 多核共享内存*/
CORE0_L2_SRAM_STACK:O = 0x10800000 l = 0x00004000 // 1024KB CORE0 L2/SRAM *
CORE0_L2_SRAM:O = 0x10804000 l = 0x000FBFFC /* 1024KB CORE0 L2/SRAM,为魔术地址保留的最后四个字节*/
CORE0_L1P_SRAM:O = 0x10E00000 l = 0x00008000 // 32kB CORE0 L1P/SRAM */
CORE0_L1D_SRAM:O = 0x10F00000 l = 0x00008000 // 32kB L1D/SRAM */
EMIF16_CE0:O = 0x70000000 l = 0x04000000 // 64MB EMIF16 ce0数据存储器*
EMIF16_CE1:O = 0x74000000 l = 0x04000000 // 64MB EMIF16 CE1数据存储器*
EMIF16_CE2:O = 0x78000000 l = 0x04000000 // 64MB EMIF16 CE2数据存储器*
EMIF16_CE3:O = 0x7C000000 l = 0x04000000 // 64MB EMIF16 CE3数据存储器*
/*DDR3:O = 0x80000000 l = 0x40000000*//* 1GB DDR3 */
DDR3_General:O = 0x80000000 l = 0x3BEF6800 //* 1GB - 2KB*19 - 1MB DDR3 */
DDR3_COMM:O = 0xBBEF6800 l = 0x9800 // 2KB*19 = 38KB */
DDR3_SCF:O = 0xBBF00000 l = 0xFF000 //大小1M -4K *
DDR3_握手:O = 0xBBFFF000 l = 0x0400 //大小1K */
DDR3_ERR_INFO:O = 0xBBFFF400 l = 0x0C00 //大小3K *
DDR3_heap:O = 0xBC000000 l = 0x4000000 //大小64MB */
}
部分
{
.text > CORE0_L2_SRAM
.stack > CORE0_L2_SRAM_STACK
.bss > CORE0_L2_SRAM
.cio > CORE0_L2_SRAM
.const > CORE0_L2_SRAM
.data > CORE0_L2_SRAM
.switch > CORE0_L2_SRAM
.sysmem > DDR3_heap
.far > CORE0_L2_SRAM
.args > CORE0_L2_SRAM
.ppdinfo > CORE0_L2_SRAM
.ppdata > CORE0_L2_SRAM
.L2_int > DDR3_General
.vects>DDR3_General
/* COFF 段*/
.pinit > DDR3_General
.cinit > CORE0_L2_SRAM
/* EABI SECTIONS *
.binit > DDR3_General
init_array > DDR3_General
.neardata > CORE0_L2_SRAM
.fardata > CORE0_L2_SRAM
.rodata > CORE0_L2_SRAM
.c6xabi.exidx > CORE0_L2_SRAM
.c6xabi.extab > CORE0_L2_SRAM
.csl_vect > CORE0_L2_SRAM /* CSL vect 代码*
rtdata > CORE0_L2_SRAM
.rtcode > CORE0_L2_SRAM
.nrtdata > DDR3_General
.nrtcode > DDR3_General
}