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/MSP430FR5972:将配置项目存储在FRAM中,该配置项目在电源循环和CCS中的重新编程过程中都是持续的

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/629815/ccs-msp430fr5972-store-configuration-items-in-fram-which-is-persistent-across-both-power-cycle-and-a-reprogramming-in-ccs

部件号:MSP430FR5972

工具/软件:Code Composer Studio

您是否介意花点时间思考以下问题?

 

我们希望将配置项存储在MSP430FR5972 FRAM中,该配置项在电源循环和CCS中的重新编程过程中都是持久的。

 

电源循环会保留config,但是CCS程序下载会初始化配置数据,即使定义为#pragma NOINIT

 

SLAA628提到了NOINIT和持久性pragma的使用,并提到了链接器命令文件修改是使用NOINIT的必要条件。

 

我找不到链接器需要进行哪些更改的引用。

 

5.1 TI代码编辑器工作室在CCS中,可以使用两个C语言pragma语句:#pragma persistent和#pragma NOINIT。 在使用任何一个pragma之前,请参见有关链接器命令文件要求的3.4 第1节以及附录A,以了解有关CSSv 6.0 的重要信息。0可确保使用任一pragma指令声明的变量存储在FRAM内存中。 另外,有关这些pragma指令的详细信息,请参阅《MSP430优化C/C++编译器用户指南》(SLAU132)。 持久性导致变量无法由C启动例程初始化,而是在应用程序代码加载到目标设备时,调试工具链首次初始化它们。 随后,这些变量不会初始化,例如,在关闭电源后重新启动,因为它们已完全从C启动初始化过程中排除。 将变量声明为持久性会使它们被分配到.TI.PERSISTENT链接器内存段中。 有关CSSv FRAM.0的重要信息,请参阅附录A SLAA628–2014年6月MSP430Tm6.0 技术–操作方法和最佳实践5提交文档反馈版权所有Copyright2014,德州仪器(TI)公司采用了FRAM的易用性编译器扩展 www.ti.com 下面是一个代码片段,显示如何将变量声明为持久性: #pragma persistent(x) unsigned int x =5;NOINIT的工作方式与persistent类似,但在代码下载期间,项目的二进制映像文件和调试工具链从不初始化变量。 将变量声明为NOINIT会使它们被分配到.TI.noinit链接程序内存段中。 请注意,与持久性不同,声明为NOINIT的变量不会被默认链接程序命令文件在FRAM中定位,如果需要此类功能,则需要对链接程序命令文件进行少量修改。 以下是相应的代码片段:#pragma NOINIT(x)

 

我们正在使用CCS版本:6.1 .3.0.0033万

 

此外,CCS还具有“擦除”选项(如下),该选项仍会擦除配置数据。

 

非常感谢,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在msp430fr57xx项目中,我使用信息内存来存储持久性变量。 在使用SWB重新编程时,它不会被破坏(尽管这不是我将它们放在此处的原因)。
    我希望这与您的芯片相同。

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

    感谢您的及时回复。 遗憾的是,我需要大量超出信息区大小的配置数据。

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我准备退出。 几乎是:)
    我读过IP封装段-这不是解决方案吗?
    slau367:
    只有从IPE段执行的程序代码才能访问此段中存储的数据。 访问
    权限通过每个代码访问进行评估。 IP保护区域之外的每个代码访问
    取消对IPE段的数据访问。 JTAG或DMA无法访问IPE段。