k000858 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 (изменено) · Жалоба Реально ли разместить там стек? Или компилятор сам как то размещает там данные? в мап файле ничего не нашел по адресам этой памяти... 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 Изменено 8 апреля, 2014 пользователем k000858 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба После RESET она не работает, нужно дополнительно включать (видимо, до main). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба После RESET она не работает, нужно дополнительно включать (видимо, до main). Неправда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vovanse 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Неправда. Почему? RCC->AHB1ENR, бит CCMDATARAMEN включает ее, reset value = 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба RCC AHB1 peripheral clock register (RCC_AHB1ENR) Address offset: 0x30 Reset value: 0x00100000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба У меня в STM32F303 всё работает. http://electronix.ru/forum/index.php?showt...t&p=1247987 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Почему? RCC->AHB1ENR, бит CCMDATARAMEN включает ее, reset value = 0 Упс. Начальное значание как раз 1 (смотрю для f407 в частности). Значит просто записать в SP адрес конца CCM сразу после сброса или в нулевое слово таблицы векторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Impartial 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 (изменено) · Жалоба Реально ли разместить там стек? Я размещал вручную так. Для 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 }; Изменено 8 апреля, 2014 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sekat 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба И не забыть, что с DMA эта область памяти не работает. Поэтому при прописывании в линкере используемой области памяти нужно сделать так, что бы буфера DMA туда не попали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба И не забыть, что с DMA эта область памяти не работает. Поэтому при прописывании в линкере используемой области памяти нужно сделать так, что бы буфера DMA туда не попали. А у меня в STM32F303 - работает, со свистом. Что же там такого наделали в F4xx? Извиняюсь, это у меня обычная RAM работает по DMA. В CCMRAM не запускал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться