cancel
Showing results for 
Search instead for 
Did you mean: 

How to use CCM RAM on STM32F303VC?

Asantos
Senior
Posted on October 31, 2012 at 12:58

There's no examplo using CCM RAM on the STM32F303 stantard library. I need to know how modify the EWARM liker icf file to add the CCM RAM section and how to put an assembler routine in this section.

1 REPLY 1
Posted on October 31, 2012 at 15:15

Not an IAR expert, but would something like this work:

// .C

char FOO_CCM[128] @ 0x10000000;

Or

// .ICF

/*###ICF### Section handled by ICF editor, don't touch! ****/

/*-Editor annotation file-*/

/* IcfEditorFile=''$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml'' */

/*-Specials-*/

define symbol __ICFEDIT_intvec_start__ = 0x08000000;

/*-Memory Regions-*/

define symbol __ICFEDIT_region_ROM_start__    = 0x08000000;

define symbol __ICFEDIT_region_ROM_end__      = 0x0803FFFF;

define symbol __ICFEDIT_region_RAM_start__    = 0x20000000;

define symbol __ICFEDIT_region_RAM_end__      = 0x20009FFF;

define symbol __ICFEDIT_region_CCMRAM_start__ = 0x10000000;

define symbol __ICFEDIT_region_CCMRAM_end__   = 0x10001FFF;

/*-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 { readwrite };

initialize by copy { section .ccm };

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

place in CCMRAM_region  { section .ccm, block CSTACK };

// .S

  SECTION .ccm:CODE:NOROOT(2)

  DCD 0xDEADBEEF

// .C

char FOO_CCM[128] @ ''.ccm'';

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..