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.
我正在开发 TMS320F28035 SCI 引导加载程序、一切都运行良好、但如果我使用修复密码锁定器件、则 csmUnlock 不工作。 我在内核文件中进行了更改
uint16 CsmUnlock()
{
/*volatile int *csm =(volatile int *) 0x000AE0;//csm 寄存器文件
volatile int * PWL =(volatile int *) 0x003F7FF8;//密码位置
volatile int tmp;
int i;
//读取128位密码位置(PWL)
//在地址0x3F 7FF8-0x3F 7FFF 处的闪存中
//如果器件是安全的、则读取的值将是
//实际上没有加载到 temp 变量中,所以
//这称为虚拟读取。
对于(i=0;i<8;i++) tmp =* PWL++;
//如果密码地址(PWL)都为1 (0xFFFF),
//则器件现在将不安全。 如果是密码
//不是全1 (0xFFFF)、则需要以下代码
//取消 CSM 的安全保护。
//将128位密码写入密钥寄存器
//如果此密码与中存储的密码匹配
// PWL 则 CSM 将变得不安全。 如果没有
//匹配、则器件将保持安全。
//示例密码为:
//使用0x111122223344455556677778888。
asm (" EALLOW");//密钥寄存器受 EALLOW 保护
*CSM++= 0x1234;//在0xAE0处注册 KEY0
*CSM++= 0xFFFF;//在0xE1处注册密钥1
*CSM++= 0xFFFF;//在0xAE2处注册密钥2
*CSM++= 0xFFFF;//在0xAE3处注册密钥3
*CSM++= 0xFFFF;//在0xAE4上注册 KEY4
*CSM++= 0xFFFF;//在0xAE5上注册 KEY5
*CSM++= 0xFFFF;//在0xAE6上注册 KEY6
*CSM++= 0xFFFF;//在0xAE7上注册 KEY7
asm (" EDIS");*
易失性 uint16温度;
//使用当前密码加载密钥寄存器。 0xFFFF 是虚拟的
//密码。 用户应将其替换为正确的 DSP 密码。
EALLOW;
// CsmRegs.KEY0 = 0xFFFF;
// CsmRegs.key1 = 0xFFFF;
// CsmRegs.key2 = 0xFFFF;
// CsmRegs.key3 = 0xFFFF;
//CsmRegs.KEY4=0xFFFF;
//CsmRegs.KEY5=0xFFFF;
//CsmRegs.KEY6 = 0xFFFF;
//CsmRegs.KEY7=0xFFFF;
CsmRegs.KEY0 = 0x1234;
CsmRegs.key1 = 0xFFFF;
CsmRegs.key2 = 0x5678;
CsmRegs.key3 = 0xFFFF;
CsmRegs.KEY4 = 0x4321;
CsmRegs.KEY5=0xFFFF;
CsmRegs.KEY6 = 0x8765;
CsmRegs.KEY7=0xFFFF;
EDIS;
//执行密码位置的虚拟读取
//如果它们与密钥值匹配,CSM 将解锁
temp = CsmPwl.PSWD0;
temp = CsmPwl.PSWD1;
temp = CsmPwl.PSWD2;
temp = CsmPwl.PSWD3;
temp = CsmPwl.PSWD4;
temp = CsmPwl.PSWD5;
temp = CsmPwl.PSWD6;
temp = CsmPwl.PSWD7;
//如果 CSM 未锁定,则返回成功,否则返回
//失败。
if (CsmRegs.CSMSCR.bit.SECURE_=0)返回 STATUS_SUCCESS;
否则返回 STATUS_FAIL;
}
我已锁定设备的修复密码
您好!
由于年终假期、分配给此主题帖的主题专家本周已不在办公室、因此您在1月第一周之前可能无法获得合格答案。 很抱歉耽误你的时间。
此致、
Himanshu
您好!
在发布简短的代码段时、请使用代码格式语法突出显示器。 它看起来是什么样的 编辑栏上。 这将使代码更易于阅读。
在这个代码中、我看到 KEY0被修改、所有其它的为0xFFFF
asm (" EALLOW");//密钥寄存器受 EALLOW 保护 *:csm++= 0xE3;//在0xAE0上注册 KEY0 *:csm++= 0x1234;//在0xAE1 上注册 key1 *:csm++= 0xFFFF;//在0xAE2上注册 key2 *:csm++= 0xFFFF;//在0xAFFFF = 0xC++寄存器 = 0xFFFF;//在0xA3+= 0xEFFFF; //在0xAE4 * CSM++= 0xFFFF 上注册 KEY4;//在0xAE5上注册 KEY5 * CSM++= 0xFFFF;//在0xAE6上注册 KEY6 * CSM++= 0xFFFF;//在0xAE7 asm (" EDIS")上注册 KEY7;*/ 易失性 UINT16温度;
但在这里、我看到其他所有密钥都被修改了。 您是否尝试在所有密钥匹配的情况下解锁设备?
… CsmRegs.KEY0 = 0x1234;<-- CsmRegs.key1 = 0xFFFF; CsmRegs.key2 = 0x5678;<-- CsmRegs.key3 = 0xFFFF; CsmRegs.KEY4 = 0x4321;<-- CsmRegs.KEY5 = 0xFFFF;CsmRegs.KEY6 = 0xFFFF;CsmRegs.KEY4 = 0x4321;CsmRegs.KEY6 = 0xFFFF ;CsmRegs.KEFFFF
此致
Lori