реклама на сайте
подробности

 
 
> SDRAM + stm32f429, не хватило памяти
Ekka
сообщение Jun 27 2018, 09:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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.

Так вот... простите за тупые вопросы, не совсем понимаю, каким именно образом мне сократить объем программы, используя внешнюю память.
Что туда грузить? Массивы из библиотек, которые подключаю?

Кто-нибудь, объясните, пожалуйста, доходчиво для тех, кто в танке.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jun 27 2018, 09:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ekka @ Jun 27 2018, 12:24) *
Так вот... простите за тупые вопросы, не совсем понимаю, каким именно образом мне сократить объем программы, используя внешнюю память.

SDRAM - это ОЗУ. Соответственно - размещать в ней можно только объекты требующие ОЗУ. Ну если не считать того, что для отладки её можно использовать для загрузки ROM-секций программы (код и данные).
К "сокращению объёма программы" это вообще никакого отношения не имеет. Сокращает объём программы оптимизация и голова программиста.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jun 27 2018, 10:51
Сообщение #3


Частый гость
**

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



Цитата(jcxz @ Jun 27 2018, 10:35) *
SDRAM - это ОЗУ. Соответственно - размещать в ней можно только объекты требующие ОЗУ. Ну если не считать того, что для отладки её можно использовать для загрузки ROM-секций программы (код и данные).
К "сокращению объёма программы" это вообще никакого отношения не имеет. Сокращает объём программы оптимизация и голова программиста.


Код сокращен до минимума.
Как можно решить эту проблему с нехваткой?

получаю вот что

Код
region `rom' overflowed by 10748 bytes


на форумах пишут, что можно как бы добавить к _rom, но внешнее подключенное приложение пишет свои данные начиная с определенного адреса.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 27 2018, 10:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ekka @ Jun 27 2018, 13:51) *
получаю вот что
...
rom (rx) : ORIGIN = 0x08000000, LENGTH = 32K

А нафига обрезали сегмент flash-кода до 32K??? wacko.gif
Там же 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};


Для отладки можно использовать SDRAM для размещения кода и ro-данных, типа так:
CODE
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_regionA = mem:[from 0xD0000000 size 0x00040000]; //SDRAM (code/const)
define region SDRAM_regionB = mem:[from 0xD0040000 size 0x000BF000]; //SDRAM (data)
define region SDRAM_regionC = mem:[from 0xD00FF000 size 0x00701000]; //SDRAM (data)

define block HEAP with alignment = 8, size = 0x000 {};

//.dma: channel control table for DMA-controller
//.BITBAND_RAM: для bitband-переменных

initialize by copy {rw};
do not initialize {section .noinit};
do not initialize {section .raw};
do not initialize {section .ccm};
do not initialize {section .dma};
do not initialize {section .eraw};
do not initialize {section .edma};
do not initialize {section .bssStk};
do not initialize {section .bssStkMain};
do not initialize {section .imonSave};
do not initialize {section .backup};
do not initialize {section .aoutRecord};
do not initialize {section .graphMem};
do not initialize {section .rawMp3};
do not initialize {section .rawAac};
do not initialize {section .rawAacSbr};

define overlay .rawMpeg {section .rawMp3};
define overlay .rawMpeg {section .rawAac};

define block IMAGE_HEAD with fixed order {section .intvec, section .checksum,
section .codehead, section .intvecTail, section .codebegin};
place in RAM_regionA {section .bssStkMain, section .bssStk, overlay .rawMpeg, section .ccm};
place in RAM_regionB {ro, first block IMAGE_HEAD, last section .codetail,
section .rodataInternal, section .textInternal, section .constFast};
place in RAM_regionC {section .BITBAND_RAM, section .dma};
place in RAM_regionA | RAM_regionC {rw, section .bssInternal, block HEAP};
place in RAM_regionD {section .backup};
place in SDRAM_regionB {section .eraw, section .edma, section .framCache, section .graphMem};
place in SDRAM_regionC {section .aoutRecord};

place in SDRAM_regionA {
section .codeSignature,
section .fnt,
section .rodata,
section .text object rds.o,
section .text object menu.o,
section .text object ir_term.o,
section .text object fonttest.o,
section .text object storage.o,
section .text object tuner.o,
section .text object esp_link.o,
section .text object datetime.o,
section .text object sntp.o,
section .text object dflash.o,
section .text object bakf.o,
section .text object dte.o,
section .text object dte_lcd.o,
section .text object fram_map.o,
section .text object periodic.o,
section .text object pack.o,
section .text object ansi.o,
section .text object config.o,
section .text object tscr.o,
section .text object spi.o,
section .text object service.o,
section .text object ui.o
};

Как видно - код и ro-данные линкуются частично в RAM_regionB, частично в SDRAM_regionA.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ekka   SDRAM + stm32f429   Jun 27 2018, 09:24
- - adnega   Цитата(Ekka @ Jun 27 2018, 12:24) Кто-ниб...   Jun 27 2018, 09:29
|- - Ekka   Наверное, я не правильно задаю вопрос( Лучше так:...   Jun 27 2018, 11:04
|- - jcxz   Цитата(Ekka @ Jun 27 2018, 14:04) Как мож...   Jun 27 2018, 11:16
||- - Ekka   Цитата(jcxz @ Jun 27 2018, 12:16) В этом ...   Jun 27 2018, 11:27
||- - jcxz   Цитата(Ekka @ Jun 27 2018, 14:27) и лезть...   Jun 27 2018, 11:35
||- - Ekka   Цитата(jcxz @ Jun 27 2018, 12:35) Тогда в...   Jun 27 2018, 11:46
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01548 секунд с 7
ELECTRONIX ©2004-2016