Memory Map

The CC13x2 or CC26x2 contains several memory regions including RAM, ROM, and Flash. This section aims to show how these memory regions are utilized by the stack and user application.

The stack library configuration memory map can be seen below. See Stack Library Configuration for more information on the configuration.

Memory Section Starting Address Size (bytes) Description
Flash 0x00000000 60 Cortex Interrupt Vecs
0x00001000 816 TI RTOS ROM Jump Table (see note)
Application / Stack Code
SNV 1-2 pages Simple Non-Volatile Storage
Last Flash Page* 88 Customer Configuration
ROM 0x10000000 ROM_SIZE TI-RTOS, BLE-Stack/BLE5-stack, Crypto, Driverlib, Boot
RAM 0x20000000 RAMVEC_SIZE Interrupt Vector Table in RAM for dynamic Hwi creation
0x20000100 RTOSRAM_SIZE Reserved for pointers for TI-RTOS in ROM
.bss and .data
ICall heap
TI-RTOS kernel system stack (CSTACK)
AUX RAM 0x400E0000 AUXRAM_SIZE Memory area belonging to the Sensor Controller

Note

At the table above, the following variables are platform dependent.

  • Last Flash Page: top of the Flash subtracted by its page size

    • CC13x2 or CC26x2 : 344 kB or 0x56000 (0x58000 - 0x2000)
    • CC13x2x7 or CC26x2x7 : 696 kB or 0xAE000 (0xB0000 - 0x2000)
  • ROM_SIZE : 256 kB

  • RAMVEC_SIZE : 216 B

  • RTOSRAM_SIZE : 24 B

  • AUXRAM_SIZE : 4 kB

The TI-RTOS ROM Jump Table can be relocated to any address. To do that, open the .cfg file of your project and add the following lines after the ROM declaration:

var ROM = xdc.useModule('ti.sysbios.rom.ROM');
if (Program.cpu.deviceName.match(/CC26/)) {
ROM.romName = ROM.CC26X2V2;
}
else if (Program.cpu.deviceName.match(/CC13/)) {
ROM.romName = ROM.CC13X2V2;
}
ROM.constStructAddr       = 0x4000;  // replace 0x4000 with any address in FLASH
ROM.externFuncStructAddr  = 0x43C0;  // replace 0x43C0 with any address in FLASH
ROM.dataStructAddr        = 0x20001080;  // replace 0x20001080 with any address in RAM

For projects that use OAD, the TI-RTOS Jump Table definitions are later in the .cfg file. Check for the declaration below:

if (Program.build.cfgArgs.OAD_IMG_A == 1)
{
  m3Hwi.resetVectorAddress  = 0x00055fc0;
  ROM.constStructAddr = 0x37000;
  ROM.externFuncStructAddr = 0x373C0;
}
else if (Program.build.cfgArgs.OAD_IMG_B == 1) //(OAD_IMG_TYPE == "B")
{
  if (compilerDefs.indexOf('SECURITY') > -1)
  {
     // Check for SECURITY compiler symbol
      m3Hwi.resetVectorAddress = 0x90; // Image B Reset Vector Address
  }
  else
  {
     m3Hwi.resetVectorAddress = 0x50; // Image B Reset Vector Address
  }
  ROM.constStructAddr = 0x01000;
  ROM.externFuncStructAddr = 0x013c0;
}
else
{
   m3Hwi.resetVectorAddress = 0x0;
}

The .map file for a given project can be consulted to see exactly what sections of the stack reside in ROM.

Note

The SNV region can be configured to be either one or two pages long using the NVOCMP_NVPAGES define. On some systems, only two page SNV may be supported. Refer to Flash for more information about what is supported on a given platform.