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/MSP430FR6047:在升级应用程序代码时保留持久性变量

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/968539/ccs-msp430fr6047-retain-persistent-variables-while-upgrading-application-code

器件型号:MSP430FR6047

工具/软件:Code Composer Studio

下面提到的是在链接器文件中编写的用于将存储器分配给持久性变量的代码、  

存储器从0x4000地址开始分配、

持久性变量是水表的配置

我的问题是、当我使用新程序对代码存储器进行编程时、所有这些变量都会重置为默认值

在将新代码编程到 FRAM 中时、是否有任何方法可以保留这些变量值   

可以修改下面提到的程序、以便我可以将0x4000分配到0x43ff 作为信息存储器、将0x4400以后的代码存储器分配到0x43ff

因此、在将新代码编程到 FRAM 中时、0x4000至0x43ff 存储器段既不会被擦除也不会被覆盖

 

组(RW_IPE)

组(READ_WRITE_MEMORY)

//将 USS 配置置于内存顶部
USS_CONFIG:

//USS_userConfig.obj (.TI.persistent:checksum16位)
//USS_userConfig.obj (.TI.persistent:checksum8位)
// USS_userConfig.obj (.TI.persistent:app_code_CRC_CCITT)
USS_userConfig.obj (.TI.persistent:gUssSWConfig)
USS_userConfig.obj (.TI.persistent:ussSystemConfig)
USS_userConfig.obj (.TI.persistent:ussMeterConfig)
USS_userConfig.obj (.TI.persistent:ussMeasurementConfig)
USS_userConfig.obj (.TI.persistent:ussPLLConfig)
USS_userConfig.obj (.TI.persistent:ussCaptureConfig)
USS_userConfig.obj (.TI.persistent:ussTriggerConfig)
USS_userConfig.obj (.TI.persistent:ussInterruptConfig)
USS_userConfig.obj (.TI.persistent:ussAlgConfig)
USS_userConfig.obj (.TI.persistent:ussPulseConfig)
USS_userConfig.obj (.TI.persistent:singDualToneConfig)
USS_userConfig.obj (.TI.persistent:gUserConfg)
USS_userConfig.obj (.TI.persistent:gdataloggpara)
USS_userConfig.obj (.TI.persistent:comm_para)

.TI.persistent:{}/* for #pragma PERSISTENT */
.cio:{}//* C I/O 缓冲器*/
.sysmem:{}/*动态内存分配区域*/
} PALIGN (0x0400)、RUN_START (fram_rw_start)

组(IPENCAPSULATED_MEMORY)

.ipestruct:{}/* IPE 数据结构*/
.ipe:{}//* IPE */
.ipe_const:{}/* IPE 受保护常量*/
.ipe:_isr:{}/* ipe isr */
} PALIGN (0x0400)、RUN_START (fram_IPE_START) RUN_END (fram_IPE_END) RUN_END (fram_Rx_START)

}> 0x4000

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

    您好!

    您可以对 userconfig 数据结构使用.noinit 指令。 请参阅第5.11.21节 MSP430 优化 C/C++编译器的 NOINIT 和 PERSISTENT pragma (https://www.ti.com/lit/slau132)  

    Srinivas