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.

[参考译文] MSP430FR2355:继续处理持久性数据???

Guru**** 2516170 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1108813/msp430fr2355-continue-to-struggle-with-persistent-data

器件型号:MSP430FR2355

我有以下代码:(我以前来过这里、甚至从其他工作代码复制过、但没有结果????)

#pragma LOCATION (pwmDiv, 0x1800);
#pragma PERSISTENT(pwmDiv);
__vo uint16_t pwmDiv = 50;

#pragma LOCATION (dutyCycle, 0x1802);
#pragma PERSISTENT(dutyCycle);
__vo uint16_t dutyCycle = 31;

#pragma LOCATION (dac_value, 0x1804);
#pragma PERSISTENT(dac_value);
__vo uint16_t dac_value = 2750;

#pragma DATA_SECTION(fw_version, ".info");
const char fw_version[] = {"SWSF-SS_A"};

我的.cmd 文件在0x1800和处显示信息

.info:type = NOINIT {}>信息

上述前三个变量可在运行代码时通过用户输入进行修改、而 FW_VERSION 不是。  我有2个问题:

成功  写入该空间后、我会重新刷新代码以查看是否保留该代码、并恢复为默认值。  我已经尝试过: 只擦除和下载必要的段;替换已写入的内存位置..... ;和仅在 CCS 中的闪存设置下擦除主内存...我该怎么办??

2. 当我在 CCS 调试器中查看内存浏览器时、我会看到可修改变量的变量名称、但没有、我可以在哪里找到或搜索 FW_VERSION??  它不会出现

有人能回答这两个问题吗?

谢谢

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

    在空白工程中测试时、即使在 Project Properties 中关闭了优化、变量也会被优化掉。 使用'volatil'关键字也没有影响。 如果未  在任何位置引用该变量、编译器不会将其放入输出映像中。

    作为概念验证、只需从 FW_VERSION 变量中分配单个字符值即可将 const char FW_VERSION 放入信息段中。 Successful Compilation into INFO memory segment

    IT 响应您的第一个问题、您可能需要将擦除选项设置为"按地址范围"并指定要擦除的绝对地址范围。

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

    我将在 FW_VERSION 上使用您的想法,但我可以告诉您,我从我曾经做过的另一个大型项目中复制了该项目,并且从未调用过变量....。一定有一个我缺少的设置...或者我上的编译器发生了变化

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

    您的问题不清楚。

    我无法识别__vo 说明符。 这是针对...易失性的?

    第二个问题似乎是说不存储 FW_VERSION。 对吗?

    下面是我注意到的有关阵列的信息:

    • 我还会将阵列 FW_VERSION 指定为 volatile
    • 阵列也没有大小。 给它一个大小。
    • SWSF-SS_A 的初始值是大于字符的字符串。 使用较大的数据类型说明符。
    • 除非您处于某种类型的要求下、否则我将使用适当数据类型的变量而不是用于存储版本号的数组。
    • 由于使用了 const 说明符、因此似乎也不打算更改固件版本、因此这是不使用数组的另一个原因。