Перейти к содержанию
    

STM32F4: CCM RAM

Реально ли разместить там стек?

Или компилятор сам как то размещает там данные?

в мап файле ничего не нашел по адресам этой памяти...

 

  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
  CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K

 

Все, что нашел в скрипте линкера по этой памяти

 

    .bss_CCMRAM : ALIGN(4)
    {
        *(.bss.CCMRAM .bss.CCMRAM.*)
    } > CCMRAM

 

Компилятор GCC (в связке с эклипсой) https://launchpad.net/gcc-arm-embedded

Изменено пользователем k000858

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После RESET она не работает, нужно дополнительно включать (видимо, до main).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня в STM32F303 всё работает.

http://electronix.ru/forum/index.php?showt...t&p=1247987

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему? RCC->AHB1ENR, бит CCMDATARAMEN включает ее, reset value = 0

Упс. Начальное значание как раз 1 (смотрю для f407 в частности).

Значит просто записать в SP адрес конца CCM сразу после сброса или в нулевое слово таблицы векторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реально ли разместить там стек?

Я размещал вручную так.

Для stm32f407 .icf файл для IAR.

 

/*###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__	  = 0x000FFFFF;
define symbol __ICFEDIT_region_RAM_start__	= 0x20000000;
define symbol __ICFEDIT_region_RAM_end__	  = 0x2001BFFF;
define symbol __ICFEDIT_region_RAMCCM_start__ = 0x10000000;
define symbol __ICFEDIT_region_RAMCCM_end__   = 0x1000FFFF;

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x1000;
define symbol __ICFEDIT_size_heap__   = 0xf000;
/**** 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 RAM_regionCCM   = mem:[from __ICFEDIT_region_RAMCCM_start__   to __ICFEDIT_region_RAMCCM_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 with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application
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 RAM_region   { readwrite };
place in RAM_regionCCM   {block CSTACK, block HEAP };

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И не забыть, что с DMA эта область памяти не работает. Поэтому при прописывании в линкере используемой области памяти нужно сделать так, что бы буфера DMA туда не попали.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И не забыть, что с DMA эта область памяти не работает. Поэтому при прописывании в линкере используемой области памяти нужно сделать так, что бы буфера DMA туда не попали.

А у меня в STM32F303 - работает, со свистом. Что же там такого наделали в F4xx?

Извиняюсь, это у меня обычная RAM работает по DMA. В CCMRAM не запускал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...