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