主题中讨论的其他部件: C2000WARE, controlSUITE
工具/软件:Code Composer Studio
问候,
我负责在TMS320F2.8032万芯片上实施代码安全模块。 阅读后,我对如何实施这一措施有一些疑问。 这就是我的想法。 我不想实施任何操作,除非我确信这不会使芯片被封堵。
1.我必须进入DSP2803x_sysctrl.c并将CsmUnlock功能更改为我们要使用的密码。
2.我有手册中的代码
void dspUnsecure (void){
volatile int *CSM =(volatile int *)0x000AE0;//CSM寄存器文件
volatile int *PWL =(volatile int *)0x003F7FF8;//密码位置
易失性int tmp;
int i;
//读取密码位置(PWL)的128位
//在地址0x3F 7FF8 - 0x3F 7FFF处闪存
//如果设备是安全的,则读取的值将是
//实际上没有加载到temp变量中,所以
//这称为虚拟读取。
对于(i=0;i<8;i++) tmp =*PWL++;
//如果密码位置(PWL)全部= 1 (0xFFff),
//则设备现在将不安全。 如果密码
//不是所有的(0xFFFF),则需要以下代码
//取消CSM的安全。
//将128位密码写入密钥寄存器
//如果此密码与中存储的密码匹配
// PWL,则CSM将变得不安全。 如果没有
//匹配,则设备将保持安全。
//密码示例为:
//使用0x11.1122万2233344445555666677778888。22.3334万。</s>44.4555万 56.6667万777.8888万
EALLOW;//密钥寄存器受EALLOW保护
*CSM++= 0x1111;//在0xAE0处注册KEY0
*CSM++= 0x2222;//在0xAE1处注册密钥1
*CSM ++= 0x3333;//在0xAE2注册密钥2
*CSM++= 0x4444;//在0xAE3处注册密钥3
*CSM ++= 0x5555;//在0xAE4注册KEY4
*CSM++= 0x6666;//在0xAE5处注册KEY5
*CSM++= 0x7777;//在0xAE6处注册KEY6
*CSM++= 0x8888;//在0xAE7处注册KEY7
EDIS;
}
void dspSecure (void){
volatile int *CSMSCR = 0x00AEF;//CSMSCR寄存器
//设置FORCESEC位
EALLOW;/CSMSCR寄存器受EALLOW保护。
*CSMSCR = 0x8000;
EDIS;
}
一旦实现,如何解锁和锁定芯片。 我们正在通过UART从另一个芯片对设备进行编程,该芯片可能会将扳手扔进系统。 有人能向我解释解锁和锁定芯片的过程吗?
谢谢!


