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:MSP430FR2355上的 MPU 和.persistent

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1383442/msp430fr2355-mpu-and-persistent-on-msp430fr2355

器件型号:MSP430FR2355

工具与软件:

您好!

我使用的是 FR2355、并使用了#pragma PERSISTENT 变量。

使用默认链接器文件时一切都正常。

修改 FRAM 分配后:

而不是默认值:

FRAM 中           : origin = 0x8000, length = 0x7F80

我更改为:

FRAM 中           :origin = 0x8002、length = 0x7F7E

persistent 变量将不再可写入。

在映射文件中、变量仍然正确堆叠到持久性块!

根据我的理解、这是因为内存段、是1024字节对齐的。

我注意到、在映射文件中、一旦更改了 FRAM 的起始地址、持久性块正被链接器移动到0x8400地址。

所以、我的下一个想法是实现自定义 MPU 配置、如 slaa628 (6.3.1.1.1)中所示。

但是、这不起作用、因为诸如 MPUCTL0之类的寄存器未定义(我正在使用 CCS12.7)。

此外、我在 CCS 中看不到 MPU 向导、如图6-4 (slaa628)中所示、我只看到了一个"Enable FRAM Write protection"选项、与段不同。

此文档是否已过时? 或者 FR2355器件是否不支持 MPU?

该问题的解决方案是什么?

——

此致、

Dzmitry

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

    某些器件(例如 fr2355)没有 MPU。 写入保护标志。

    在 slaa628中对此进行了讨论。

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

    谢谢你的答复,大卫!

    我已经意识到了这一点、但为什么在默认的 FRAM 映射更改之后 persistent 将被写保护仍是一个难题。。

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

    请查看有关 FRWPOA 的文档。 这从写保护中分离出了部分程序 FRAM 空间。 具有1K 分辨率。

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

    尊敬的  Dzmitry:

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/616911/ccs-msp430fr2033-cannot-write-to-fram-variable-placed-with-pragma-data_section-to-custom-fram-memory-section 

    我认为这个线程可以解决这个难题。

    B.R.

    SAL

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

    谢谢 David、控制 FRWPOA 可以手动解决该问题。

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

    感谢您的回答、但本案例与我的案例略有不同。

    如前所述、使用默认的 makefile 配置、我能够毫无问题地写入。

    正如 David 所提到的 、有一个用于控制 FRAM 保护的寄存器。

    在默认情况下、我认为这是由  ccs/linker(?)选择的一些值控制的。 (无记载和无记载)。

    我认为唯一的解决方案是手动控制  FRWPOA 的值、这就解决了问题。

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

    尊敬的 Dzmitry:

    感谢您的反馈。 是的。

     FR235x 和 FR2033器件之间存在差异。 文档(https://www.ti.com/lit/an/slaa628b/slaa628b.pdf) 如下所示:

    对于 FR2xx FR4xx 系列 MCU、除 FR235x 和 FR215x 器件外、可以操作 PFWP 和 DFWP 寄存器、以启用或禁用 FRAM 中主存储器和信息存储器的写保护。 PUC 复位之后、这些位默认为1、而 FRAM 写访问被禁用。 用户代码必须输入正确的密码并清零相应位后才能执行写操作。

    我完全失去了作用。

    B.R.

    SAL