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.

[参考译文] MSP430FR6989:从 RAM 运行函数(也适用于电源监控方案)

Guru**** 2766105 points

Other Parts Discussed in Thread: MSP430FR6989

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/988929/msp430fr6989-running-function-from-ram-also-with-power-loos-scenario

器件型号:MSP430FR6989

您好!

我目前正在处理 PMM32勘误表的权变措施。 如数据表中所示、我实现了该解决方案

我现在看到的是、在断电时、器件不再工作。 可能 RAM 中的数据丢失。

我想在系统启动时将函数从 FRAM 复制到 RAM、以消除这种行为。  

如何使用 TI 工具链在 FRAM 器件上实现此操作?

在这种情况下、我必须如何声明函数和链接器命令文件的位置?

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

    您好!  

    我不确定你的意思。 FR6989是一款 FRAM MCU。 我们的权变措施是使用 RAM 函数禁用 FRAM。 您有什么顾虑?

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

    PMM32勘误表指出、将用于将芯片设置为睡眠模式的函数放置在 RAM 中(MSP430fr6989上为2KB)

    我这么做了:

    #pragma CODE_SECTION (processSlepState、".TI.ramfunc")
     处理器睡眠状态(sleepState_t sleepState)

    /***** 解决方法 PMM32 *******
    FRCTL0 = FRCTLPW;
    GCCTL0 &=~Ω(FRPWR+FRLPMPWR);//清除 FRPWR 和 FRLPMPWR
    FRCTL0_H = 0;//重新锁定 FRCTL
    //********
    _bis_SR_register (sleepState);
    __no_operation();

    在链接器命令文件中、我执行了以下操作:

    #define RAM_CODE_BEGIN 0x1C60
    #define RAM_CODE_LENGTH 0x0020
    #define RAM_CODE_END = RAM_CODE_BEGIN + RAM_CODE_LENGTH

    存储器

    (笑声)

    RAM_legal_code :origin = RAM_CODE_BEGIN,length = RAM_CODE_LENGTH // 28.

    (笑声)

    部分

    (笑声)

      .TI.ramfunc:{}> RAM_legal_code

    (笑声)

    我不知道芯片做什么、但我认为这个函数直接放置在 RAM 中、当发生功率损耗时、该函数就会消失。 对吗?

    如果是、我现在要将此函数放置在 FRAM 中、并在系统启动时将其复制到 RAM 中并在那里执行。  

    这是可能的、还是我的假设是错误的? 这是如何实现的?