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.
工具与软件:
您好!
我使用的是 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:
我认为这个线程可以解决这个难题。
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