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.
TI 工程师:
当前做公司项目遇到一个问题,为了给公司产品增加保密性,试图用TI 产品的加密模块进行加密。但当前既有程序比较大,ebss未初始化部分必须占用SRAML0L1区域,单纯靠SRAM H0 和SRAM M0M1不能满足程序运行需求。于是就有矛盾:一旦使用加密功能,未初始化的ebss所在的0X8000 0X9000区域就无法正常运行。
查看手册看到SRAML0L1属于密码保护区,加密无法访问,如果这种情况由什么好的解决方案么?
2812内存分配如下
当下的cmd文件如下:
MEMORY { PAGE 0 : RAMM0 : origin = 0x000000, length = 0x000400 RAML1 : origin = 0x009000, length = 0x001000 CRC : origin = 0x3F0000, length = 0x000001 FLASH : origin = 0x3F0001, length = 0x007F7F CSM_RSVD : origin = 0x3F7F80, length = 0x000076 BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002 CSM_PWL : origin = 0x3F7FF8, length = 0x000008 //BEGIN_H0 : origin = 0x3F8000, length = 0x000002 RAMH0 : origin = 0x3F8000, length = 0x002000 /*2b00*/ BOOTROM : origin = 0x3FF000, length = 0x000FC0 RESET : origin = 0x3FFFC0, length = 0x000002 PAGE 1 : RAMM1 : origin = 0x000400, length = 0x000480 RAML0 : origin = 0x008000, length = 0x001000 } SECTIONS { /* CSM Password Locations */ passwords : > CSM_PWL, PAGE = 0 csm_rsvd : > CSM_RSVD, PAGE = 0 codestart_rom : > BEGIN_FLASH, PAGE = 0 .romtext : > FLASH, PAGE = 0 /* DSECT */ .reset : > RESET, PAGE = 0, TYPE = DSECT //vectors : > VECTORS PAGE = 0, TYPE = DSECT /*** Uninitialized Sections ***/ /* Allocate data areas: */ .stack : > RAMM1, PAGE = 1 //.ebss : > RAMM1|RAML0, PAGE = 1 .ebss1 : { .\selftest\post.obj (.ebss) .\error\error.obj (.ebss) } > RAMM1, PAGE = 1 .ebss2 : { ebss_start = .; *(.ebss) ebss_end = .; } > RAML0, PAGE = 1 .sysmem : > RAML0, PAGE = 1 /*** Initialized Sections ***/ .cinit : > FLASH, PAGE = 0 .switch : > FLASH, PAGE = 0 /*.econst : {* (.econst)} LOAD = FLASH, PAGE = 0 RUN = RAML0, PAGE = 1 RUN_START(_econst_run_start), LOAD_START(_econst_load_start), LOAD_END(_econst_load_end)*/ .econst1 : { .\selftest\crc16.obj (.econst) } > FLASH, PAGE = 0 .econst2 : {* (.econst)} LOAD = FLASH, PAGE = 0 RUN = RAML0, PAGE = 1 RUN_START(_econst_run_start), LOAD_START(_econst_load_start), LOAD_END(_econst_load_end) /*.text : {*(.text)} LOAD = FLASH, PAGE = 0 RUN = RAMH0, PAGE = 0 RUN_START(_text_h0_run_start), LOAD_START(_text_h0_load_start), LOAD_END(_text_h0_load_end)*/ .text1 : { .\app\rfapp.obj (.text) .\error\error.obj (.text) .\selftest\post.obj (.text) .\selftest\background.obj (.text) .\selftest\crc16.obj (.text) .\driver\eeprom_drv.obj (.text) .\param\param.obj (.text) } > FLASH, PAGE = 0 .text2 : { .\control\control.obj (.text) } LOAD = FLASH, PAGE = 0 RUN = RAML1, PAGE = 0 RUN_START(_text_l1_run_start), LOAD_START(_text_l1_load_start), LOAD_END(_text_l1_load_end) .text3 : {*(.text)} LOAD = FLASH, PAGE = 0 RUN = RAMH0, PAGE = 0 RUN_START(_text_h0_run_start), LOAD_START(_text_h0_load_start), LOAD_END(_text_h0_load_end) .CRC_keep : > CRC, PAGE = 0 IQmath : LOAD = FLASH, PAGE = 0 RUN = RAMM0, PAGE = 0 RUN_START(_iqmath_run_start), LOAD_START(_iqmath_load_start), LOAD_END(_iqmath_load_end) IQmathTables : LOAD = BOOTROM, PAGE = 0, TYPE=NOLOAD }
map文件如下
MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- PAGE 0: RAMM0 00000000 00000400 00000000 00000400 RWIX RAML1 00009000 00001000 00000b0d 000004f3 RWIX CRC 003f0000 00000001 00000001 00000000 RWIX FLASH 003f0001 00007f7f 00002f52 0000502d RWIX CSM_RSVD 003f7f80 00000076 00000076 00000000 RWIX BEGIN_FLASH 003f7ff6 00000002 00000002 00000000 RWIX CSM_PWL 003f7ff8 00000008 00000008 00000000 RWIX RAMH0 003f8000 00002000 0000192d 000006d3 RWIX BOOTROM 003ff000 00000fc0 00000000 00000fc0 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX PAGE 1: RAMM1 00000400 00000480 00000386 000000fa RWIX DEV_EMU 00000880 00000180 000000d6 000000aa RWIX FLASH_REGS 00000a80 00000060 00000000 00000060 RWIX CSM 00000ae0 00000010 00000000 00000010 RWIX XINTF 00000b20 00000020 00000000 00000020 RWIX CPU_TIMER0 00000c00 00000008 00000008 00000000 RWIX CPU_TIMER1 00000c08 00000008 00000000 00000008 RWIX CPU_TIMER2 00000c10 00000008 00000000 00000008 RWIX PIE_CTRL 00000ce0 00000020 0000001a 00000006 RWIX PIE_VECT 00000d00 00000100 00000100 00000000 RWIX ECANA 00006000 00000040 00000000 00000040 RWIX ECANA_LAM 00006040 00000040 00000000 00000040 RWIX ECANA_MOTS 00006080 00000040 00000000 00000040 RWIX ECANA_MOTO 000060c0 00000040 00000000 00000040 RWIX ECANA_MBOX 00006100 00000100 00000000 00000100 RWIX SYSTEM 00007010 00000020 00000020 00000000 RWIX SPIA 00007040 00000010 00000010 00000000 RWIX SCIA 00007050 00000010 00000010 00000000 RWIX XINTRUPT 00007070 00000010 00000000 00000010 RWIX GPIOMUX 000070c0 00000020 00000020 00000000 RWIX GPIODAT 000070e0 00000020 00000020 00000000 RWIX ADC 00007100 00000020 0000001a 00000006 RWIX EVA 00007400 00000040 00000032 0000000e RWIX EVB 00007500 00000040 00000000 00000040 RWIX SCIB 00007750 00000010 00000000 00000010 RWIX MCBSPA 00007800 00000040 00000025 0000001b RWIX RAML0 00008000 00001000 00000cdd 00000323 RWIX
你好,确实如果要加密的话M0 M1部分的SARAM无法访问加密flash,然而目前我也想不出什么好的建议。
不知道你的代码占有多大内存?,能否用代码优化来减少一点ram中的代码量?