在线时间11 小时
UID4060886
注册时间2024-11-4
NXP金币47
该用户从未签到
注册会员

- 积分
- 131
- 最后登录
- 2026-4-20
|
大家好,我希望把芯片设置为:1.不允许通过SWD口访问内部FLASH数据;2.如果需要访问,则必须通过后门解锁服务。我按照参考手册中的《18.3.7 安全》这一章将s文件中的FSEC改为0xBC,密匙改为:0x123456789ABDCEF0,解除安全状态程序如下:uint8_t Flash_CheckKey(void){
uint8_t State = 0x00;
// 1. 清除错误标志
FTMRE_FSTAT = 0x30;
// 2. 写入校验命令 0x0C
FTMRE_FCCOBIX = 0;
FTMRE_FCCOBHI = 0x0C;
FTMRE_FCCOBLO = 0;
// 3. 写入8字节密钥
FTMRE_FCCOBIX = 1;
FTMRE_FCCOBLO = 0x12; // 低字节
FTMRE_FCCOBHI = 0x34; // 高字节
FTMRE_FCCOBIX = 2;
FTMRE_FCCOBLO = 0x56; // 低字节
FTMRE_FCCOBHI = 0x78; // 高字节
FTMRE_FCCOBIX = 3;
FTMRE_FCCOBLO = 0x9A; // 低字节
FTMRE_FCCOBHI = 0xBC; // 高字节
FTMRE_FCCOBIX = 4;
FTMRE_FCCOBLO = 0xDE; // 低字节
FTMRE_FCCOBHI = 0xF0; // 高字节
//FTMRE_FSTAT |= FTMRE_FSTAT_CCIF_MASK;
FlashState_Cmd(&FTMRE_FSTAT);
// while((FTMRE_FSTAT & FTMRE_FSTAT_CCIF_MASK) == 0)
// {
// }
// 7. 检查错误
if(FTMRE_FSTAT & FTMRE_FSTAT_ACCERR_MASK)
{
}
State = FTMRE_FSEC;//返回寄存器数值
return State;
},其中FlashState_Cmd(&FTMRE_FSTAT)函数为RAM中运行的。目前的现象为:当我执行解锁指令后,读取FSEC数值为0xBC,已进入解除安全状态,但是如果我此时使用JLINK连接,会提示失败,并且芯片会进入不工作状态。为什么在解锁安全状态后JLINK仍然无法正常访问
|
|