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.

[参考译文] CCS/MSP430FR5994:在程序重新加载过程中使FRAM的一部分处于未初始化状态

Guru**** 2535450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/576439/ccs-msp430fr5994-leaving-a-section-of-fram-uninitialized-across-program-reload

部件号:MSP430FR5994

工具/软件:Code Composer Studio

我正在编写代码以访问SDHC卡(在'FR5994 LaunchPad上)上的FAT32文件系统。

我正在将大部分(高)内部FRAM用作文件系统缓存,以最小化SD卡访问,我希望此文件系统缓存在调试周期的重新加载期间保持有效 (这样我就不必使用直写策略,而是使用替换时写入)。

每次重新加载代码映像时,如何告诉加载程序不使用0xFFFF重置高速缓存FRAM地址范围?

链接程序cmd文件中没有为该内存部分指定"填充"值。 我尝试修改内存映射,使FRAM上限低于我的缓存区域,但它仍被FFs覆盖。 我怀疑片上引导加载程序负责。

如果它对答案有任何不同,我将在汇编程序中执行所有这些操作,这可能与C的初始化过程不同。大多数"帮助"信息是关于C

谢谢

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

    如果您使用C编码,我建议您在缓存缓冲区声明前面使用__NO_INIT修饰符(IAR版本,取决于工具链),以避免在C启动时将该缓冲区置零。

    您使用的是哪种汇编程序? 您应该查看汇编程序文档,以了解如何在汇编中执行相同操作(将对象放在未初始化的部分中)。

    此致,

    Peppe

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

    我找到了答案。 “项目”->“属性”->“调试”->“MSP43x选项”->“擦除选项”

    擦除操作在加载程序查看之前执行。 默认值为"Erase Main Memory only"(仅擦除主内存)(表示FRAM),说明了SRAM中的BSS部分的行为方式,但FRAM不是。

    我选择了"替换写入的内存位置,保留未写入的内存位置"。 这似乎满足了我的需要。