您好,我使用C2000_WARE中的例程blinky_with_DCSM的工程环境配置了自定义的密码,并将RAMLS2块与Flash C扇区配置为安全区域Z1以及仅执行保护。采取使用dcsm.c与dcsm.h中提供的函数进行上锁与解锁,并检查安全状态。
目前我又遇到的问题是,Debug并烧录程序至非安全区的RAM后,运行程序之前,使用CCS中的on-chip Flash工具可以正常的上锁与解锁。但是当运行DCSM_unlockZone1CSM(&csmK)函数后,检测此时状态为非安全状态。当运行DCSM_secureZone1()函数进行上锁后,检测安全状态为锁定状态,Z1_CR寄存器中ALLZERO位为1。之后如果读取Flash C扇区后,再次运行CSM_unlockZone1CSM(&csmK)函数进行解锁,其状态变为安全状态Z1_CR寄存器的所有位都为0。如果不读取Flash C扇区,运行CSM_unlockZone1CSM(&csmK)函数进行解锁,其状态始终为锁定状态。
如果运行DCSM_unlockZone1CSM(&csmK)函数后进行第一次解锁,再使用CCS中的on-chip Flash工具进行上锁,再解锁会出现解锁错误,设备处于锁定状态的提示。
当发生以上情况时,只能退出Debug界面,重新烧录程序后,再运行,上述情况一直出现。
请问,造成这种情况的可能原因是什么,我该如何去解决?