cancel
Showing results for 
Search instead for 
Did you mean: 

Trying to run an ISR routine inside the CCM SRAM of STM32F303 using EWARM

Asantos
Senior
Posted on November 14, 2012 at 02:23

linker icf file:

/*-Sizes-*/

define symbol __ICFEDIT_size_cstack__ = 0x400;

define symbol __ICFEDIT_size_heap__   = 0x200;

/**** End of ICF editor section. ###ICF###*/

define memory mem with size = 4G;

define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];

define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];

define region CCMRAM_region   = mem:[from __ICFEDIT_region_CCMRAM_start__   to __ICFEDIT_region_CCMRAM_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };

define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

initialize by copy { section MYCODE }; 

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 HEAP };

place in CCMRAM_region { section MYCODE };    

********************** ISR Function *******************************

#pragma location=''MYCODE''

  void DMA1_Channel1_IRQHandler(void)

{

  u16 i;

  GPIOC->BSRR = GPIO_Pin_7;

  

  DMA_ClearITPendingBit(DMA1_IT_TC1);

  Vtemp1 = ((u32) ADC1buf[1] * 0x66A8) >> 13;

  

  for(i=0;i<20;i++){}

  

  GPIOC->BSRR = GPIO_Pin_7<<16;

  

}

When I try to load the code using the jlink, show the error message ''Wrinting outside flash memory at address 0x10000000'' .

If I change the name of the function, It is possible to load the code and when the function is called, I can confirm that the function is running inside the CCM SRAM.

Has anyone  already tried to run a ISR routine in the CCM SRAM using the EWARM?

                     
0 REPLIES 0