|
SDRAM + stm32f429, не хватило памяти |
|
|
|
Jun 27 2018, 09:24
|

Частый гость
 
Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250

|
Привет всем. Не совсем понимаю задачу, которую нужно решить, может, кто-то просветит меня( Дело в том, что у меня не хватило памяти для программы. на rom выделено 32K, добавить нельзя сюда, ибо подключается стороннее приложение, которому нужна память с определенного адреса. Код MEMORY { rom (rx) : ORIGIN = 0x08000000, LENGTH = 32K app_flash (rx) : ORIGIN = 0x08008000, LENGTH = 992K ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K appram (rwx) : ORIGIN = 0x20002000, LENGTH = 120K } Некто посоветовал мне подключить SDRAM. Чтобы посмотреть, как эта штука вообще работает, пробую на stm32f429 работать с SDRAM. Пока только на HAL. Так вот... простите за тупые вопросы, не совсем понимаю, каким именно образом мне сократить объем программы, используя внешнюю память. Что туда грузить? Массивы из библиотек, которые подключаю? Кто-нибудь, объясните, пожалуйста, доходчиво для тех, кто в танке.
|
|
|
|
|
 |
Ответов
|
Jun 27 2018, 10:51
|

Частый гость
 
Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250

|
Цитата(jcxz @ Jun 27 2018, 10:35)  SDRAM - это ОЗУ. Соответственно - размещать в ней можно только объекты требующие ОЗУ. Ну если не считать того, что для отладки её можно использовать для загрузки ROM-секций программы (код и данные). К "сокращению объёма программы" это вообще никакого отношения не имеет. Сокращает объём программы оптимизация и голова программиста. Код сокращен до минимума. Как можно решить эту проблему с нехваткой? получаю вот что Код region `rom' overflowed by 10748 bytes на форумах пишут, что можно как бы добавить к _rom, но внешнее подключенное приложение пишет свои данные начиная с определенного адреса.
|
|
|
|
|
Jun 27 2018, 11:04
|

Частый гость
 
Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250

|
Наверное, я не правильно задаю вопрос( Лучше так: Как можно исправить эту ошибку? Код region `rom' overflowed by 10748 bytes Цитата(jcxz @ Jun 27 2018, 11:58)  А нафига обрезали сегмент flash-кода до 32K??? Там же 2 МБ флеша! Наведите порядок с регионами памяти: Код define memory mem with size = 4G; define region FLASH_regionA = mem:[from 0x08000000 to 0x081FFFFF]; define region RAM_regionA = mem:[from 0x10000000 size 0x10000]; //CCM SRAM define region RAM_regionB = mem:[from 0x20000000 size 0x20000]; //main SRAM (bit-band) define region RAM_regionC = mem:[from 0x20020000 size 0x10000]; //main SRAM (bit-band) define region RAM_regionD = mem:[from 0x40024000 size 0x01000]; //backup SRAM define region ROM_region = mem:[from 0xE00FF000 to 0xE00FFFFF]; define region SDRAM_region = mem:[from 0xD0000000 size 0x00800000]; //SDRAM для STM32F429 с SDRAM. Секции ro-data и text линковать в FLASH_regionA: Код place in FLASH_regionA {ro}; сейчас объясню. у меня есть проект рантайма от разработчиков с возможностью его "поправить под себя". проект сделан под stm32f4 - discovery, с таким вот распределением памяти Код /* Define memory regions. */ MEMORY { rom (rx) : ORIGIN = 0x08000000, LENGTH = 32K app_flash (rx) : ORIGIN = 0x08008000, LENGTH = 992K ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K appram (rwx) : ORIGIN = 0x20002000, LENGTH = 120K }
PROVIDE( _stack = ORIGIN(appram) + LENGTH(appram) ); PROVIDE( _app_start = ORIGIN(app_flash) ); PROVIDE( _app_end = _app_start + LENGTH(app_flash) ); Это стандартная прошивка. Начиная с адреса app_flash работает внешнее приложение YAPLC_IDE (это я просто в попытках хотя бы посмотреть, как настраивать sdram, пробую на hal stm32f429, а так мк - stm32f407vg)
|
|
|
|
|
Jun 27 2018, 11:16
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Ekka @ Jun 27 2018, 14:04)  Как можно исправить эту ошибку? Код region `rom' overflowed by 10748 bytes В этом сообщении компоновщик Вам сообщает, что Вы пытаетесь какой-то сегмент выходного образа прошивки засунуть в регион 'rom', но там не хватает места. Исправить - перераспределить память, увеличить 'rom', перенести сегмент который не лезет в другие регионы. Например: сдвиньте 'app_flash' вниз (уменьшив соответственно его размер) и на освобождённый размер увеличьте 'rom'. Или определите выше 'app_flash' дополнительный регион (уменьшив 'app_flash') и компонуйте нелезущие сегменты туда.
|
|
|
|
|
Jun 27 2018, 11:27
|

Частый гость
 
Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250

|
Цитата(jcxz @ Jun 27 2018, 12:16)  В этом сообщении компоновщик Вам сообщает, что Вы пытаетесь какой-то сегмент выходного образа прошивки засунуть в регион 'rom', но там не хватает места. Исправить - перераспределить память, увеличить 'rom', перенести сегмент который не лезет в другие регионы. Например: сдвиньте 'app_flash' вниз (уменьшив соответственно его размер) и на освобождённый размер увеличьте 'rom'. Или определите выше 'app_flash' дополнительный регион (уменьшив 'app_flash') и компонуйте нелезущие сегменты туда. в том то и проблема, что я app_flash не могу двигать с этого адреса - 0х08008000, потому что внешнее приложение оттуда пишет свое, а в его внутренних кишках (среда YAPLC-IDE, с файлами на питоне и многой другой ерундой) и лезть нечего... там все поедет, программа разработчиков. Потому и спрашиваю, как сделать можно...
|
|
|
|
|
Jun 27 2018, 11:46
|

Частый гость
 
Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250

|
Цитата(jcxz @ Jun 27 2018, 12:35)  Тогда второй вариант, как писал выше. Наверняка там не весь объём 'app_flash' используется и в конце 0xFF. К тому же в STM32F429 как я уже писал - 2МБ флеша, а по вашим сообщениям видно что у Вас описан только 1МБ. Так что выше 'app_flash' есть ещё 1МБ. Определите там регион и компонуйте в него. нет-нет-нет... у меня STM32F4-DISCOVERY, stm32f429 просто поиграться... мне на 407VG надо, у stm32f4 disco всего 1мб flash вроде
Сообщение отредактировал Ekka - Jun 27 2018, 11:47
|
|
|
|
Сообщений в этой теме
Ekka SDRAM + stm32f429 Jun 27 2018, 09:24 adnega Цитата(Ekka @ Jun 27 2018, 12:24) Кто-ниб... Jun 27 2018, 09:29  jcxz Цитата(Ekka @ Jun 27 2018, 13:51) получаю... Jun 27 2018, 10:58   controller_m30 Цитата(Ekka @ Jun 27 2018, 14:04) Кодregi... Jun 27 2018, 12:16 esaulenka Зайдём с другой стороны. Где именно на STM32F4DISC... Jun 27 2018, 12:14 Ekka Цитата(esaulenka @ Jun 27 2018, 13:14) За... Jun 27 2018, 12:31  adnega Цитата(Ekka @ Jun 27 2018, 15:31) Потому ... Jun 27 2018, 13:20   jcxz Цитата(adnega @ Jun 27 2018, 16:20) Но я ... Jun 27 2018, 13:24    adnega Цитата(jcxz @ Jun 27 2018, 16:24) У меня ... Jun 27 2018, 14:21     jcxz Цитата(adnega @ Jun 27 2018, 17:21) Возмо... Jun 27 2018, 19:29      adnega Цитата(jcxz @ Jun 27 2018, 22:29) Глупо с... Jun 28 2018, 05:26       jcxz Цитата(adnega @ Jun 28 2018, 08:26) Для п... Jun 28 2018, 06:11        adnega Цитата(jcxz @ Jun 28 2018, 09:11) Не вижу... Jun 28 2018, 07:01         jcxz Цитата(adnega @ Jun 28 2018, 10:01) Согла... Jun 28 2018, 09:04          adnega Цитата(jcxz @ Jun 28 2018, 12:04) И вот е... Jun 28 2018, 10:19           jcxz Цитата(adnega @ Jun 28 2018, 13:19) Ваше ... Jun 28 2018, 11:24            adnega Цитата(jcxz @ Jun 28 2018, 14:24) У ТС - ... Jun 28 2018, 12:17             Ekka Привет, спасибо за ваши советы.
Я сейчас действите... Jul 2 2018, 12:35              k155la3 Цитата(Ekka @ Jul 2 2018, 15:35) Приложен... Jul 2 2018, 15:43              Ekka Привет всем. Как писать с другого адреса от загруз... Jul 3 2018, 12:39               jcxz Вам трудно что-то советовать, так как непонятно ни... Jul 4 2018, 08:58                Ekka Ребята, спасибо всем, кто отвечал, нашлись мои оши... Jul 20 2018, 13:24    k155la3 Цитата(jcxz @ Jun 27 2018, 16:24) . . .Не... Jun 28 2018, 06:54 esaulenka Варианты:
1) если планируется какое-то своё железо... Jun 27 2018, 13:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|