TMS320F280039C: 芯片unsecure状态下,写如key值,程序跑飞,跑入Interrupt_illegalOperationHandler中断

Part Number: TMS320F280039C

芯片unsecure状态下,写如key值,程序跑飞,跑入Interrupt_illegalOperationHandler中断。

运行到第三个写入操作时,程序就跑飞了。

*CSM++ = 0xFFFFFFFF; //DcsmZ1Regs.Z1_CSMKEY0;// Register Z1_CSMKEY0 at 0x5F010

*CSM++ = 0xFFFFFFFF; //DcsmZ1Regs.Z1_CSMKEY1;// Register Z1_CSMKEY1 at 0x5F012

*CSM++ = 0xFFFFFFFF; // DcsmZ1Regs.Z1_CSMKEY2;// // Register Z1_CSMKEY2 at 0x5F014

*CSM++ = 0xFFFFFFFF; // DcsmZ1Regs.Z1_CSMKEY3;// // Register Z1_CSMKEY3 at 0x5F016

  • 请问下是什么原因?

  • Flash_CsmUnlock(void)
    {
    volatile long int *CSM = (volatile long int *)0x5F090; //CSM register file

    volatile long int *CSMPWL = (volatile long int *)0x78028; //CSM Password location (assuming default Zone sel block)

    volatile int tmp;

    int I;

    // Read the 128-bits of the CSM password locations (PWL)

    for (I=0; I<4; I++)
    {
    tmp = *CSMPWL++;
    }

    *CSM++ = 0xFFFFFFFF; //DcsmZ1Regs.Z1_CSMKEY0;// Register Z1_CSMKEY0 at 0x5F010

    *CSM++ = 0xFFFFFFFF; //DcsmZ1Regs.Z1_CSMKEY1;// Register Z1_CSMKEY1 at 0x5F012

    *CSM++ = 0xFFFFFFFF; // DcsmZ1Regs.Z1_CSMKEY2;// // Register Z1_CSMKEY2 at 0x5F014

    *CSM++ = 0xFFFFFFFF; // DcsmZ1Regs.Z1_CSMKEY3;// // Register Z1_CSMKEY3 at 0x5F016

    }

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 你好,

    听起来你正试图根据你的评论解锁Z1。 

    volatile long int *CSM = (volatile long int *)0x5F090; //CSM register file

    这是Z2_CSMKEY寄存器。


    volatile long int *CSMPWL = (volatile long int *)0x78028; //CSM Password location (assuming default Zone sel block)
  • 多谢,确实key值地址搞错了,问题解决了,跑飞的原因是密码和写入的key值对应不上,第2个key值不是ffffff。

    感谢。