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.

[参考译文] RM48L950:放置外部 SRAM、静态对象初始化失败。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572206/rm48l950-place-external-sram-a-static-object-initialise-failed

器件型号:RM48L950

您好,
在我的项目中、硬件平台 CPU 是 RM48L950、软件开发平台是 IAR。 我使用 RM48L950的 EMIF 接口来扩展外部 SRAM,该 SRAM 的地址空间为2MB,数据总线为8位。 我想在该 SRAM 上运行程序。 因此、在 sys_startup.c 中、在 void _c_int00 (void)函数中、在_coreInitRegisters_()函数上方增加_mpuInit_()和_mpuEnable_()函数、在_cmain ()函数上方增加 SRAM 初始化函数 SlamInit()。 如下所示:
void _c_int00 (void)


/*用户代码开始(5)*/
/*用户代码结束*/
_mpuInit_();
_mpuEnable_();

/*初始化内核寄存器以避免 CCM 错误*/
_coreInitRegisters_();

esmInit();
/*用户代码开始(75)*/
SlamInit();
/*用户代码结束*/

/*调用应用程序*/
__cmain();

我声明一个用模式初始化的静态对象、将其放置在 SRAM 中。 代码如下:
static unsigned int myinittest[ 2 ]=

0x01234567、
0x89abcdef

但是、当目标文件下载到电路板时、myinittest 阵列未正确初始化。 初始化结果:
myinittest[0]= 0x23456700
myinittest[1]= 0xabcdef00

您能告诉我原因吗? 我需要你的帮助。
此致。

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

    a)您要求编译器自动初始化位于 EMIF 上 RAM 中的数组 myinittest[]
    b)编译器不知道 EMIF 硬件必须在初始化 myinittest[]之前通过调用 SramInit()进行配置。

    编译器运行时库应该会对代码进行一些调用、编译器运行时库使用这些代码将自动初始化变量从闪存复制到 SRAM。
    在调用编译器中的此代码之前,您可能需要将 SmramInit()移动到。