This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP432E401Y:在启动设置时进行 EPI 初始化

Guru**** 2553260 points
Other Parts Discussed in Thread: MSP432E401Y

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/930255/msp432e401y-epi-initialisation-at-boot-setup

器件型号:MSP432E401Y

大家好、

我将使用 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Urvi、

    很抱歉耽误你的时间。  我不认为这是可能的初始全局变量、即编程时的外部 SRAM。  我将了解我是否可以在论坛上找到任何人这样做的示例、但我似乎无法思考或找到可能的方法...   

    谢谢、

    JD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="URVI Shah ]]我认为这是由于:在系统启动时、编译器会尝试初始化全局变量。 因此、它还会尝试初始化外部 SDRAM 变量。 但在系统启动时、EPI 接口尚未配置。 那么、我如何实现这一点呢?如果您将 TI 编译器与裸机程序(即没有 SYS/BIOS)配合使用、则可以 向程序中添加_system_pre_init 函数、以初始化 SDRAM 的 EPI 接口。

      《TI ARM 编译器用户指南》系统预初始化的引导挂钩函数中的_system_pre_init 函数说明如下:

    _system_pre_init():此函数提供执行应用特定初始化的位置。 它在栈指针初始化后但在执行任何 C/C++环境设置之前调用。 对于支持 MPU 的目标,此函数在__mpu_init()之后调用。 默认情况下,_system_pre_init()应返回非零值。如果_system_pre_init()返回0,则会绕过默认的 C/C++环境设置。