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.

[参考译文] MSP430FR6989:结合使用 CCS20.2 Theia 对 INFOA 使用写保护

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1612953/msp430fr6989-using-write-protect-on-infoa-with-ccs20-2-theia

器件型号: MSP430FR6989

我尝试设置 MSP 芯片、以便将一些软件版本信息和序列号存储到 infoA 存储器部分中。  我想让 infoA 部分写保护。  在当前尝试中(使用 msp430fr69xx_mpu-01 示例构建)。 设置这些段后、只要我指示 MPU 启用、InfoA 中的存储器就会变为一系列重复的 0x3FFF 值。   

 

我创建了一个结构来保存我的数据、并通过#pragma 将其设置到 infoA 部分


pragma DATA_SECTION (writeProtectedData、“.infoA")“)
const WriteProtectData writeProtectedData =
.SerialNumber = 0x0001、//defaut 序列号 (0x001)
.firmwareVersion =
.Major = 1、
.minor = 0、
.patch = 0
}//默认软件版本 (v1.0.0)
};
在 Main 中、我让 MPU 将 infoA 区域设置为写保护
//配置 MPU
MPUCTL0 = MPUPW;//写入 PWD 以访问 MPU 寄存器
 
MPUSEGB1 = 0x1980 >> 4;//
MPUSEGB2 = 0x19FF >> 4;//
 
MPUSAM =(MPUSEG1RE | MPUSEG1WE | MPUSEG1XE);
MPUSAM |=(MPUSEG2RE | MPUSEG2XE);
MPUSAM |=(MPUSEG3RE | MPUSEG3WE | MPUSEG3XE);

MPUCTL0 = MPUPW | MPUENA | MPULOCK;//启用 MPU 保护
 
__ enable_interrupt ();
 
但是、只要我使调试器越过 MPUENA | MPULOCK 线、数据@0x1980 就会变为 0x3FFF。  我也尝试了测试、是不使用调试器、而是直接通过 UART 发送 SerialNumber、但仍然得到相同的 0x3FFF 编号、因此我认为这不是调试器问题。  

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

    MPU 分段适用于“主“存储器[Ref UG (SLAU367P) 第 9.2.1 节]。

    信息存储器保护是使用 MPUSAM:MPUSEGIxE 位单独(以及整体)完成的[参考 UG 表 9-13]。 上面的代码将这些位设置为=0、即无访问。

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

    谢谢、

    一旦我设置了 MPUSAM = MPUSEGIRE;我得到了使信息区域写保护所需的功能。  我明白了。