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.

TMS320F28388D: DCSM加密问题

Part Number: TMS320F28388D
Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

操作步骤

(1)程序在未使用DCSM都能正常运行;
(2)使用了DCSM的Z1加密了所有能加密的RAM和FLASH后,程序不能正常运行;
(3)如果在main函数开头调用了DCSM_unlockZone1CSM进行解密后,程序能够正常运行;

问题1:使用上述(3)的方法虽然能令程序正常运行,但是否会对代码安全造成风险?
已测试:①在该情况下(main函数开头调用了DCSM_unlockZone1CSM进行解密),使用JTAG通过UniFlash读回的代码仍然为全零,除非在UniFlash也输入CSMPSWD进行芯片解锁;②在该情况下使用CCS,在不配置密码的情况下,也无法烧录新的程序;测试①②是否已经说明代码已经是安全的?是否仍然有其他的能在此条件下读回用户代码的方法,对代码安全造成威胁?

问题2:导致上述(2)的原因,定位为在非安全区域调用了安全区域的代码;
如下图所示GSRAM不能被加密,当需要使用memcpy将部分安全区域FLASH代码搬运到GSRAM运行时,这部分在GSRAM中运行的代码中如果存在需要调用另外的仍然处于FLASH安全区域的未被搬运到GSRAM代码的情况,会造成在非安全区域调用了安全区域的代码的错误,因此导致程序不能正常运行;最好的解决方法当然是将搬运代码目的地的GSRAM替换成可以加密的LSRAM,但是如果需要搬运到RAM运行的代码量大,仅靠LSRAM无法装入,该如何解决该问题?难道为了避免在非安全区域调用安全区域的代码,只能使用LSRAM作为搬运目的地吗,而存储更大的GSRAM只能存放变量等数据,不能作为代码运行空间?

memory map

sysconfig中DCSM配置:

CMD: