I am trying to follow the application note SPNA099A to set the MSM for the TMS470R1B1M. I do not seem to be able to make it work though. My first goal was to change the MSM password on the board, and then not supply it in the .MAC file the next time i programmed. In my mind this should block me from programming or debugging the second time. I took my project and did the following things to ( I thought) change the MSM password:
1. I added a file titled MSM_key.c to my project and included the two segments found on page 6 of the application note.
//------------------------------------------------------------------------
//This module modifies the MSM keys
//------------------------------------------------------------------------
#pragma location="MSMKEYS"
__root const unsigned long MSMKeys[4] =
{
0xAAAAAAAA,
0xBBBBBBBB,
0xCCCCCCCC,
0xDDDDDDDD
};
2. I changed the linker file to define regions for MSMKEYS
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00000080;
define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x00400000;
define symbol __ICFEDIT_region_RAM_end__ = 0x0040FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_svcstack__ = 0x40;
define symbol __ICFEDIT_size_irqstack__ = 0x100;
define symbol __ICFEDIT_size_fiqstack__ = 0x100;
define symbol __ICFEDIT_size_undstack__ = 0x0;
define symbol __ICFEDIT_size_abtstack__ = 0x0;
define symbol __ICFEDIT_size_heap__ = 0x1000;
/**** End of ICF editor section. ###ICF###*/
define symbol __FlashKeyStartAddr__ = 0x0000FFE0;
define symbol __FlashKeyEnd_Addr__ = 0x0000FFFF;
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to (__FlashKeyStartAddr__-1)] |
mem:[from (__FlashKeyEnd_Addr__+1) to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define region MSMKEYS = mem:[from __FlashKeyStartAddr__ size 0x10];
define region FLASHKEYS = mem:[from (__FlashKeyStartAddr__+0x10) to __FlashKeyEnd_Addr__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { };
define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { };
define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { };
define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { };
define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
block UND_STACK, block ABT_STACK, block HEAP };
In my mind this should work and change the MSM_key to what i have in the MSM_key.c file. What am i missing? If someone has a successful example of this I would appreciate getting a copy of it. Does the .c file need to be included somewhere in my project?