请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: 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 编号、因此我认为这不是调试器问题。
谢谢