Fox_Sanchez 1 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Есть проект на STM32F429 с микросхемой внешней SDRAM-памяти. Все настроил и сконфигурировал, память по указателям читается-пишется нормально. Дальше хочу чтобы она распределялась линкером. Добавил секцию в .ld файл, отправил в нее здоровенный массив - работает. Но эта скотобаза КубИДЕ в упор не хочет мне показывать сколько там памяти занято. Build Alalyzer эту мою секцию не отображает. GCC на выходе говорит вот это: text data bss dec hex filename 105704 20 16001948 16107672 f5c898 qwe.elf Тобишь все в одну кучу посчитано. Но ведь оно работает, значит попало куда надо. Но что-то тут не так. Что и где я забыл прописать? Раньше подобное делал в keil и там все было ясно-понятно. *** Отбой, перезагрузил комп - все отобразилось в Build Analyzer как надо. Глюк какой-то был. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fox_Sanchez 1 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба Может кому-то будет полезно. В файле *.ld в MEMORY добавляем строчку XRAM1 /* Memories definition */ MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K XRAM1 (xrw) : ORIGIN = 0xD0000000, LENGTH = 16384K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K } И в SECTIONS добавляем описание секции. (NOLOAD) указывает, что в момент старта эта память не проинициализирована и загружать в нее ничего нельзя. Все переменные там буду не проинициализированы. /* External RAM section */ .xram1 (NOLOAD): { *(.xram1*); } >XRAM1 Дальше в программе объявляем переменные вот так: __attribute__((section(".xram1")))volatile uint8_t array[16000000]; и они попадают во внешнюю память. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 25 ноября, 2020 Опубликовано 25 ноября, 2020 · Жалоба 41 minutes ago, Fox_Sanchez said: volatile Зачем volatile? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fox_Sanchez 1 26 ноября, 2020 Опубликовано 26 ноября, 2020 · Жалоба Чтоб оптимизатор не выкинул. Я по-началу его создал только чтоб посмотреть куда он попадет, сам массив нигде в программе не использовался. В общем случае конечно volatile не нужно делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a_electronic 0 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба Файл *.map в помощь. Там все есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться