请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377D 工具/软件:Code Composer Studio
您好,
我使用的是 Code Composer 版本6.1.3.00034。
我能够使用 code composer on-Chip flash 来锁定和解锁区域1中的密码。 我现在尝试通过使用 blinky_dcsm_xpu01.c 示例执行相同的操作。
首先,您能告诉我 F2837xD_sysctrl.c 中的 CsmUnlock()用于什么? 将其放入 GEL 文件中, 以便处理器在 CCS 连接时自动解锁。 如果是,其目的是什么?
OnReset (int nErrorCode) { unlock_csm ();
}
第二,如果我没有使用自动解锁,
我是否需要以下代码来执行 PWL 寄存器的虚拟读取并将128位密码写入 CSMKEY 寄存器?
void DcsmZ1Unlock (void) { volatile long int * csm =(volatile long int *) 0x5F010;//csm 寄存器文件 volatile long int * CSMPWL =(volatile long int *) 0x78028;//CSM 密码位置(假设是默认的区域 SEL 块) volatile int tmp; int i; //读取 CSM 密码位置(PWL)的128位 // 对于(i=0;i<4;i++) tmp =* CSMPWL++; //如果密码地址(CSMPWL)都为1 (0xFFFF), //然后区域将不安全。 如果是密码 //不是全1 (0xFFFF)、则需要以下代码 //取消 CSM 的安全保护。 //将128位密码写入 CSMKEY 寄存器 //如果此密码与中存储的密码匹配 // CSLPWL,则 CSM 将变得不安全。 如果没有 //匹配,则区域将保持安全。 //示例密码为: //使用0x111122223344455556677778888。 *CSM++= DcsmZ1Regs.Z1_CSMKEY0;//0x221111;//寄存器 Z1_CSMKEY0位于0x5F010 *CSM++= DcsmZ1Regs.Z1_CSMKEY1;//0x4443333;//在0x5F012处注册 Z1_CSMKEY1 *CSM++= DcsmZ1Regs.Z1_CSMKEY2;//0x66665555;//在0x5F014处注册 Z1_CSMKEY2 *CSM++= DcsmZ1Regs.Z1_CSMKEY3;//0x887777;//寄存器 Z1_CSMKEY3位于0x5F016 }
如果是,我将此代码放在哪里并从 哪里调用此函数? 我是将其放置在 blink_with _dcsm_cpu01.c 中还是放置在 GEL 文件中?
如果我将其放入 GEL 文件,则 GEL 文件将失败。
GEL 文件是否具有 DcsmZ1Unlock()而不是 Unlock_csm() ,如下所示:
OnReset (int nErrorCode) {
DcsmZ1Unlock();
}