大家好、
我将使用 MSP432E401Y 以及8MB 的外部 SDRAM。 该外部 SDRAM 通过 MSP 的 EPI 接口进行连接。 当我尝试通过 JTAG 编程器构建和加载程序时、加载程序失败。 我无法调试或运行程序。
我认为这是因为:在系统启动时、编译器会尝试初始化全局变量。 因此、它还会尝试初始化外部 SDRAM 变量。 但在系统启动时、EPI 接口尚未配置。 那么、我如何实现它呢? 使用 c 代码进行解释。
如需参考、请参阅以下代码:
-在 main.c 文件中,我创建了 SDRAM 的全局变量
#pragma DATA_SECTION (gdTemp_Array、".ext_ram")
uint32_t gdTemp_Array[32];
-在.cmd 文件中、我为外部 SDRAM 创建了一个段
存储器
{
闪存(RX):origin = 0x00000000,length = 0x00080000
SRAM (rwx):origin = 0x20000000,length = 0x00040000
EXT_RAM (rwx):origin = 0x60000000,length = 0x00800000
}
部分
{
#ifndef gen_crc_table
.intvecs:> 0x00000000
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
其他
.intvecs:> 0x00000000、crc_table (crc_table_for_intvecs)
.text:> FLASH、crc_table (crc_table_for_text)
.const:> FLASH、crc_table (crc_table_for_const)
.cinit:> FLASH、crc_table (crc_table_for_cinit)
.pinit:> FLASH、crc_table (crc_table_for_Pinit)
init_array:> FLASH、crc_table (crc_table_for_init_array)
.TI.crctab:>闪存
#endif
.vtable:>0x20000000
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
.ext_ram:> EXT_RAM
}
__STACK_TOP =__STACK + 512;