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.

This discussion is locked. Please start a new topic to ask your question.
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..