您好、香榭丽舍
我向我们的客户询问这一点。
由于 LS RAM 可以加密、CLA 到 CPU 不能加密。 这种理解是否正确?
加密区域可以访问 CPU 到 CLA RAM、也就是说、加密 CLA 区域可以获取从 CPU 传输的数据
但 CPU 无法通过 CLA 到 CPU RAM 在 CLA 中获取加密数据
2. 客户现在遇到的问题是、当他们不使用 DCSM 时、代码运行正常、但在使用 DCSM 之后、当代码未经解密而运行时、加密的 CLA 无法访问 CPU 到 CLA 的数据(DAC 输出的数据、输出为0)。
我检查了客户的.cmd 文件的配置、不应出现未加密 RAM 访问加密 RAM 的错误。 您会帮助分析原因吗? 谢谢!
MEMORY { PAGE 0 : /* BEGIN is used for the "boot to Flash" bootloader mode */ /* not boot used*/ BEGIN : origin = 0x080000, length = 0x000002 CLA_PROG_RAM : origin = 0x008000, length = 0x003800 RESET : origin = 0x3FFFC0, length = 0x000002 RAMGS1 : origin = 0x00E000, length = 0x002000 RAMGS2 : origin = 0x010000, length = 0x002000 /* Flash sectors */ /* BANK 0 */ HEADERINFO : origin = 0x084000, length = 0x000100, fill 0xFFFF /* on-chip Flash */ CPU_PROG_FLASH : origin = 0x084102, length = 0x00BEFE/* on-chip Flash */ /* BANK 1 */ CLA_PROG_FLASH : origin = 0x090000, length = 0x004000 /* on-chip Flash */ FLASH_BANK1_SEC4 : origin = 0x094000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC5 : origin = 0x095000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC6 : origin = 0x096000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC7 : origin = 0x097000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC8 : origin = 0x098000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC9 : origin = 0x099000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x001000 /* on-chip Flash */ FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x001000 /* on-chip Flash */ PAGE 1 : BOOT_RSVD : origin = 0x000002, length = 0x0000F3 /* Part of M0, BOOT rom will use this for stack */ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ RAMLS7 : origin = 0x00B800, length = 0x0007F8 RAM_STACK : origin = 0x00C000, length = 0x000C00 RAMGS0 : origin = 0x00CC00, length = 0x001400 RAMGS3 : origin = 0x012000, length = 0x002000 CLA1_MSGRAMLOW : origin = 0x001480, length = 0x000080 CLA1_MSGRAMHIGH : origin = 0x001500, length = 0x000080 } SECTIONS { codestart : > BEGIN, PAGE = 0, ALIGN(4) .text : >>CPU_PROG_FLASH, PAGE = 0, ALIGN(4) .cinit : > CPU_PROG_FLASH, PAGE = 0, ALIGN(4) .pinit : > CPU_PROG_FLASH, PAGE = 0, ALIGN(4) .switch : > CPU_PROG_FLASH, PAGE = 0, ALIGN(4) .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ .cio : > RAMGS1, PAGE = 0 .stack : > RAM_STACK, PAGE = 1 .ebss : > RAMGS0, PAGE = 1 .esysmem : > RAMGS3, PAGE = 1 .econst : > CPU_PROG_FLASH, PAGE = 0, ALIGN(4) ramgs0 : > RAMGS0, PAGE = 1 ramgs1 : > RAMGS3, PAGE = 1 .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ /* CLA specific sections */ Cla1Prog : LOAD = CLA_PROG_FLASH, RUN = CLA_PROG_RAM, LOAD_START(_Cla1ProgLoadStart), RUN_START(_Cla1ProgRunStart), LOAD_SIZE(_Cla1ProgLoadSize), PAGE = 0, ALIGN(4) Cla1ToCpuMsgRAM : > CLA1_MSGRAMLOW, PAGE = 1 CpuToCla1MsgRAM : > CLA1_MSGRAMHIGH, PAGE = 1 /*.TI.ramfunc : LOAD = CPU_PROG_FLASH, */ GROUP { .TI.ramfunc { -l F021_API_F28004x_FPU32.lib} } LOAD = CPU_PROG_FLASH, RUN = RAMGS1 | RAMGS2, LOAD_START(_RamfuncsLoadStart), LOAD_SIZE(_RamfuncsLoadSize), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), RUN_SIZE(_RamfuncsRunSize), RUN_END(_RamfuncsRunEnd), PAGE = 0, ALIGN(4) .scratchpad : > RAMLS7, PAGE = 1 .bss_cla : > RAMLS7, PAGE = 1 Cla1DataRam : > RAMLS7, PAGE = 1 .const_cla : LOAD = CLA_PROG_FLASH, RUN = CLA_PROG_RAM, RUN_START(_Cla1ConstRunStart), LOAD_START(_Cla1ConstLoadStart), LOAD_SIZE(_Cla1ConstLoadSize), PAGE = 0 CodeInfoFile : > HEADERINFO, PAGE = 0 } /* //=========================================================================== // End of file. //=========================================================================== */
此致、
Julia