FAQ

FAQ

How to put code into SRAM for execution when using NUC505?  Issue Date:2017-10-17

1. In the main, add:

    /* Relocate vector table in SRAM for fast interrupt handling. */

    {

#if defined ( __CC_ARM )

        extern uint32_t __Vectors[];

        extern uint32_t __Vectors_Size[];

        extern uint32_t Image$$ER_VECTOR2$$ZI$$Base[];
  

        printf("Relocate vector table in SRAM (0x%08X) for fast interrupt handling.\n", Image$$ER_VECTOR2$$ZI$$Base);

        memcpy((void *) Image$$ER_VECTOR2$$ZI$$Base, (void *) __Vectors, (unsigned int) __Vectors_Size);

        SCB->VTOR = (uint32_t) Image$$ER_VECTOR2$$ZI$$Base;
     

#elif defined (__ICCARM__)

        #pragma section = "VECTOR2"

        extern uint32_t __Vectors[];

        extern uint32_t __Vectors_Size[];
 

printf("Relocate vector table in SRAM (0x%08X) for fast interrupt handling.\n", __section_begin("VECTOR2"));

memcpy((void *) __section_begin("VECTOR2"), (void *) __Vectors, (unsigned int) __Vectors_Size);

SCB->VTOR = (uint32_t) __section_begin("VECTOR2");
       

#endif

    }

2. Add scatter file, as shown below:

FAQ192_I

For the sample code, refer to: NUC505BSPV3.01.000\SampleCode\BootTemplate\MainOnSRAM

3. To execute the code in Debug mode, change the initialization file to SPIROM.ini.

FAQ192_II

Products: Microcontrollers ,Arm Cortex-M4 MCUs ,NUC505 Series ,NUC505DL13Y ,NUC505DLA ,NUC505DS13Y ,NUC505DSA ,NUC505YLA2Y ,NUC505YLA ,NUC505YO13Y
Applications:
Function: Peripherals,Memory,SRAM