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

 
 
> Экономия RAM.
Jenya7
сообщение Mar 8 2016, 07:38
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Камень STM32f107VC. получил неприятный сюрприз – закончился RAM. а я еще даже не начал писать.
в связи с этим хотел задать несколько вопросов.
1. если я объявил глобальную переменную uint8_t под нее все равно выделиться регистр?
2. если я засунул стринг или какую нибудь переменную во флэш - при обращении к нему он копируется в RAM или я обращаюсь в область text?
3. может есть какие нибудь трюки позволяющие экономить RAM?

Сообщение отредактировал Jenya7 - Mar 8 2016, 11:13
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zombi
сообщение Mar 8 2016, 15:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Даже прочитать всё это сложно! не говоря уже о том что бы понять!
Пипец какой!!!
Для программиста на ассемблере это всё просто дико!
Чем люди занимаются вместо алгоритма blink.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 8 2016, 15:39
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(zombi @ Mar 8 2016, 21:16) *
Даже прочитать всё это сложно! не говоря уже о том что бы понять!
Пипец какой!!!
Для программиста на ассемблере это всё просто дико!
Чем люди занимаются вместо алгоритма blink.gif

как говорил Форест Гамп - алгоритм алгоритму рознь.


товарищи а вы как поступаете?
как выделяете глобальные переменные и члены глобальных структур?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 8 2016, 16:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Jenya7 @ Mar 8 2016, 17:39) *
как выделяете глобальные переменные и члены глобальных структур?

Какая разница КАК? Как не выделяй, если они НУЖНЫ, то они нужны. В Вашем случае, если хоть как то попытаться понять написанное, одна из проблем растраты памяти, это ее выделение оптом под всякие структуры, хоть используемые, хоть нет. На такие действия ответ один - НЕ выделяйте. А Вы какого ожидали? Если общие советы, то тут уже тоже перечислены: http://electronix.ru/forum/index.php?showt...t&p=1409464


QUOTE (adnega @ Mar 8 2016, 16:48) *
Можно ли в ней разместить структуру элементов с меньшим размером, но чтоб доступ был 32/16-битным?
Как это указать компилятору и можно ли сделать в принципе?

Играться с паковкой и ручным добавлением padding.


QUOTE (zombi @ Mar 8 2016, 17:16) *
Чем люди занимаются вместо алгоритма blink.gif

Очевидно, что рукопашной возней с битами и байтами в низкоуровневых языках.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 8 2016, 16:16
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(zltigo @ Mar 8 2016, 22:07) *
Какая разница КАК? Как не выделяй, если они НУЖНЫ, то они нужны. В Вашем случае, если хоть как то попытаться понять написанное, одна из проблем растраты памяти, это ее выделение оптом под всякие структуры, хоть используемые, хоть нет. На такие действия ответ один - НЕ выделяйте. А Вы какого ожидали? Если общие советы, то тут уже тоже перечислены: http://electronix.ru/forum/index.php?showt...t&p=1409464



Играться с паковкой и ручным добавлением padding.



Очевидно, что рукопашной возней с битами и байтами в низкоуровневых языках.

ну что значит - как не выделяй. можно создать переменную uint8_t а можно uint32_t.
Перенести структуры в юнионы. - я не понял как это возможно.
Использовать драйвера интерфейсов не одновременно, а с разделением во времени. - то же непонятно. (мне).
я создаю массив структур с запасом не потому что я дурак (хотя это тоже) а потому что я не знаю сколько элементов понадобиться пользователю.
представьте адресную книжку - появился новый друг - открыл новую запись.

Сообщение отредактировал Jenya7 - Mar 8 2016, 16:18
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 8 2016, 16:45
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Mar 8 2016, 19:16) *
представьте адресную книжку - появился новый друг - открыл новую запись.

Адресную книжку нужно хранить в энергонезависимой памяти, иначе сброс МК приведет к ее потере.
Доступ к адресной книжке может быть довольно медленным, т.к. пользователь во много раз менее быстро способен воспринимать информацию.
Т.е. адресную книжку можно и нужно хранить во flash.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Mar 8 2016, 17:15
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(adnega @ Mar 8 2016, 22:45) *
Адресную книжку нужно хранить в энергонезависимой памяти, иначе сброс МК приведет к ее потере.
Доступ к адресной книжке может быть довольно медленным, т.к. пользователь во много раз менее быстро способен воспринимать информацию.
Т.е. адресную книжку можно и нужно хранить во flash.

у меня не совсем адресная книжка но принцип тот же. я загружаю с внешнего носителя до десяти контактов. работаю с ними. если был рисет - они снова загрузяться с носителя.
я думал считывать контакты с носителя поэлементно и работать с ними - но это время - считывание, парсинг. так я только один раз это сделал на стартапе.
Цитата(HardEgor @ Mar 8 2016, 23:00) *
Выложите свой map-файл, тогда все всё увидят и объяснят. А то получится безрезультатный флуд еще на 2 страницы.

такой вот он мап-файл.

Неудачная загрузка. Вам запрещено загружать такой тип файлов


а что собственно флудить. либо выделяем все глобальные переменные нужного размера либо все uint32_t, давайте решим наконец. sm.gif



Сообщение отредактировал Jenya7 - Mar 8 2016, 17:31
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 8 2016, 17:32
Сообщение #8


Гуру
******

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



Оптимизировать нужно там, где наибольший расход.
29К для TCP-стека это что-то уж слишком много. Поменяйте TCP-стек на более экономный.
Для TCP-стека работающего поверх Ethernet-уровня, вполне достаточно очереди приёма в 3-5 ethernet-кадров и очереди передачи в 2-3 ethernet-кадров.
Плюс - несколько десятков байт на информацию о состоянии сокетов и прочие переменные. Всё в сумме это будет около 10кБ (или меньше в зависимости от размера MTU для Ethernet и кол-ва кадров).
Вся обработка всех уровней Ethernet-IP-TCP/UDP и т.п. - на колбэках на этих же кадрах без копирований.

И абсолютно не соглашусь насчёт HEAP - стандартная HEAP в embedded - это зло. К тому-же совершенно не нужна.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Экономия RAM.   Mar 8 2016, 07:38
- - aaarrr   Цитата(Jenya7 @ Mar 8 2016, 10:38) 1. ес...   Mar 8 2016, 11:19
|- - Jenya7   Цитата(aaarrr @ Mar 8 2016, 17:19) Какой ...   Mar 8 2016, 11:46
||- - aaarrr   Цитата(Jenya7 @ Mar 8 2016, 14:46) а если...   Mar 8 2016, 12:20
||- - adnega   Цитата(aaarrr @ Mar 8 2016, 15:20) Зависи...   Mar 8 2016, 14:31
||- - aaarrr   Цитата(adnega @ Mar 8 2016, 17:31) Я дума...   Mar 8 2016, 14:33
|- - zltigo   QUOTE (aaarrr @ Mar 8 2016, 13:19) Какой ...   Mar 8 2016, 12:34
|- - aaarrr   Цитата(zltigo @ Mar 8 2016, 15:34) Вообще...   Mar 8 2016, 13:19
|- - zltigo   QUOTE (aaarrr @ Mar 8 2016, 15:19) Компил...   Mar 8 2016, 13:26
|- - aaarrr   Цитата(zltigo @ Mar 8 2016, 16:26) Конкре...   Mar 8 2016, 13:33
|- - zltigo   QUOTE (aaarrr @ Mar 8 2016, 15:33) но смы...   Mar 8 2016, 13:47
- - AlexandrY   Цитата(Jenya7 @ Mar 8 2016, 09:38) 3. мо...   Mar 8 2016, 11:49
|- - Jenya7   Цитата(AlexandrY @ Mar 8 2016, 17:49) Пер...   Mar 8 2016, 11:51
- - adnega   А посмотреть листинг и понять куда RAM ушла можно?   Mar 8 2016, 13:39
|- - Jenya7   Цитата(adnega @ Mar 8 2016, 19:39) А посм...   Mar 8 2016, 13:47
- - Jenya7   и все таки? To byte or not to byte? 1 байт или 4 б...   Mar 8 2016, 13:40
|- - zltigo   QUOTE (Jenya7 @ Mar 8 2016, 15:40) и все ...   Mar 8 2016, 13:55
- - aaarrr   1 байт. Что легко можно проверить самостоятельно.   Mar 8 2016, 13:41
- - aaarrr   Цитата(zltigo @ Mar 8 2016, 16:47) Смысл ...   Mar 8 2016, 14:01
|- - zltigo   QUOTE (aaarrr @ Mar 8 2016, 16:01) Мы, ка...   Mar 8 2016, 14:08
|- - aaarrr   Цитата(zltigo @ Mar 8 2016, 17:08) Трудно...   Mar 8 2016, 14:23
|- - zltigo   QUOTE (aaarrr @ Mar 8 2016, 16:23) Это др...   Mar 8 2016, 14:37
- - adnega   Есть версия, что v1 займет 1 байт (sizeof(v1) = 1)...   Mar 8 2016, 14:48
||||- - Jenya7   Цитата(jcxz @ Mar 8 2016, 22:32) Оптимизи...   Mar 8 2016, 19:15
|||- - HardEgor   Цитата(Jenya7 @ Mar 8 2016, 23:15) такой ...   Mar 10 2016, 07:46
||- - HardEgor   Цитата(Jenya7 @ Mar 8 2016, 22:16) ну что...   Mar 8 2016, 17:00
|- - zombi   Цитата(zltigo @ Mar 8 2016, 19:07) Очевид...   Mar 8 2016, 16:31
|- - zltigo   QUOTE (zombi @ Mar 8 2016, 18:31) В низко...   Mar 8 2016, 18:32
|- - jcxz   Цитата(zltigo @ Mar 9 2016, 00:32) Слова ...   Mar 8 2016, 18:46
|- - zombi   Цитата(zltigo @ Mar 8 2016, 21:32) Поскол...   Mar 8 2016, 18:53
|- - zltigo   QUOTE (zombi @ Mar 8 2016, 20:53) Еще и т...   Mar 8 2016, 20:33
- - ar__systems   Ставьте 16МБ SDRAM и не придется париться :-)   Mar 8 2016, 23:23
|- - Jenya7   Цитата(ar__systems @ Mar 9 2016, 05:23) С...   Mar 9 2016, 07:27
|- - zltigo   QUOTE (Jenya7 @ Mar 9 2016, 09:27) а я мо...   Mar 9 2016, 14:51
||- - Jenya7   Цитата(zltigo @ Mar 9 2016, 20:51) Не пон...   Mar 9 2016, 15:24
||- - zltigo   QUOTE (Jenya7 @ Mar 9 2016, 17:24) как же...   Mar 9 2016, 17:17
||- - zombi   Цитата(zltigo @ Mar 9 2016, 20:17) Что то...   Mar 9 2016, 23:14
||- - adnega   Цитата(zombi @ Mar 10 2016, 02:14) Ну так...   Mar 10 2016, 06:29
||- - zltigo   QUOTE (adnega @ Mar 10 2016, 08:29) А дик...   Mar 10 2016, 07:21
||- - adnega   Цитата(zltigo @ Mar 10 2016, 10:21) Один ...   Mar 10 2016, 07:32
|||- - zltigo   QUOTE (adnega @ Mar 10 2016, 09:32) Лет 1...   Mar 10 2016, 07:46
|||- - adnega   Цитата(zltigo @ Mar 10 2016, 10:46) Но уп...   Mar 10 2016, 07:58
||- - zombi   Цитата(zltigo @ Mar 10 2016, 11:21) Один ...   Mar 10 2016, 08:01
||- - adnega   Цитата(zombi @ Mar 10 2016, 11:01) Америк...   Mar 10 2016, 08:19
||- - zombi   Цитата(adnega @ Mar 10 2016, 11:19) Обсуж...   Mar 10 2016, 09:15
|||- - adnega   Цитата(zombi @ Mar 10 2016, 12:15) Это Вы...   Mar 10 2016, 09:19
||- - zltigo   QUOTE (adnega @ Mar 10 2016, 10:19) Обсуж...   Mar 10 2016, 10:17
||- - zombi   Цитата(zltigo @ Mar 10 2016, 14:17) Тольк...   Mar 10 2016, 21:37
||- - zltigo   QUOTE (zombi @ Mar 10 2016, 23:37) Интере...   Mar 10 2016, 21:41
|||- - zombi   Цитата(zltigo @ Mar 11 2016, 01:41) Но то...   Mar 10 2016, 22:07
||- - Jenya7   Цитата(zombi @ Mar 11 2016, 02:37) Интере...   Mar 13 2016, 10:25
||- - zombi   Цитата(Jenya7 @ Mar 13 2016, 14:25) помог...   Mar 13 2016, 11:22
||- - adnega   Цитата(zombi @ Mar 13 2016, 14:22) Т.е. с...   Mar 13 2016, 11:31
||- - zombi   Цитата(adnega @ Mar 13 2016, 14:31) Почит...   Mar 13 2016, 11:54
||- - adnega   Цитата(zombi @ Mar 13 2016, 14:54) Т.е. н...   Mar 13 2016, 12:17
||- - zombi   Цитата(adnega @ Mar 13 2016, 16:17) Отриц...   Mar 13 2016, 12:25
||- - adnega   Цитата(zombi @ Mar 13 2016, 15:25) Обвиня...   Mar 13 2016, 14:14
|- - Kabdim   Цитата(Jenya7 @ Mar 9 2016, 10:27) а я мо...   Mar 10 2016, 11:44
- - amaora   В динамическом выделении будет смысл если, освобод...   Mar 9 2016, 12:24
- - Jenya7   я вот думаю а что если использовать внешнюю память...   Mar 9 2016, 13:15
- - sigmaN   Хахаха у zombi бомбануло прям так не слабо по ходу...   Mar 13 2016, 07:56
|- - zombi   ...   Mar 13 2016, 20:38
- - ViKo   В однозадачном режиме использовать кучу безопасно....   Mar 13 2016, 11:06
|- - Jenya7   Цитата(ViKo @ Mar 13 2016, 17:06) В одноз...   Mar 13 2016, 12:20
- - adnega   Тема исчерпана - неплохо бы закрыть и последнее по...   Mar 13 2016, 20:40
|- - zombi   Цитата(adnega @ Mar 14 2016, 00:40) Тема ...   Mar 13 2016, 21:19
- - ViKo   Создать глобальное объединение (union) из массивов...   Mar 14 2016, 04:48
|- - jcxz   Цитата(ViKo @ Mar 14 2016, 10:48) Создать...   Mar 14 2016, 08:24
|- - zltigo   QUOTE (jcxz @ Mar 14 2016, 10:24) Никак. ...   Mar 14 2016, 09:32
|- - jcxz   Цитата(zltigo @ Mar 14 2016, 15:32) Разум...   Mar 14 2016, 14:00
|- - zltigo   QUOTE (jcxz @ Mar 14 2016, 16:00) Прочита...   Mar 14 2016, 14:57
- - zombi   ТС вопрошает Цитата(Jenya7 @ Mar 8 2016, 11...   Mar 14 2016, 22:38
|- - zltigo   QUOTE (zombi @ Mar 15 2016, 00:38) Вниман...   Mar 14 2016, 23:19
- - sigmaN   ЦитатаА помогли ли ТС ваши советы? И где конкретно...   Mar 16 2016, 07:22
- - ar__systems   Неужели наконец-то всю память сэкономили?   Mar 23 2016, 04:41
- - Jenya7   Цитата(ar__systems @ Mar 23 2016, 09:41) ...   Mar 23 2016, 07:34


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

 


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


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