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

 
 
> Экономия 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
Ответов
aaarrr
сообщение Mar 8 2016, 11:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Jenya7 @ Mar 8 2016, 10:38) *
1. если я объявил глобальную переменную uint8_t под нее все равно выделиться регистр?

Какой же регистр для глобальной переменной? Если речь о количестве выделенной памяти, то для такой переменной оно составит 1 байт.

Цитата(Jenya7 @ Mar 8 2016, 10:38) *
2. если я засунул стринг или какую нибудь переменную во флэш - при обращении к нему он копируется в RAM или я обращаюсь в область text?

Нет, ничего никуда копироваться не будет. Если есть сомнения, проконтролируйте размещение по map-файлу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 8 2016, 12:34
Сообщение #3


Гуру
******

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



QUOTE (aaarrr @ Mar 8 2016, 13:19) *
Какой же регистр для глобальной переменной? Если речь о количестве выделенной памяти, то для такой переменной оно составит 1 байт.

Вообще-то 4 байта на этой платформе. Если не паковать в структуры.


QUOTE (aaarrr @ Mar 8 2016, 14:20) *
Зависит от окружения:
CODE
struct
{
     uint8_t    v1;
     uint32_t   v2;
}

В этом случае v1 займет 4 байта.

CODE
struct
{
     uint8_t    v1;
     uint8_t    v2;
     uint16_t   v3;
}

А в этом - 1 байт.

Всегда по 4, если так или иначе не указывать компилятороу индивидуальные правила паковки, но и в этом случае структура без паковки будет кратна 4 байтам.




QUOTE (Jenya7 @ Mar 8 2016, 13:51) *
а если мне нужно хранить несколько членов одновременно?

А если нет?


QUOTE (AlexandrY @ Mar 8 2016, 13:49) *
Стеки ужать.

Обязательно.
QUOTE
Обнулить память для HEAP.

Ну так уж и обнулить, а если она нужна? А вот вместо тупого выделения статического куска, отдавать Heap всю оставшуюся нераспределеной память,
это дело святое. Общая тенденция прямо противоположная - ИСПОЛЬЗОВАТЬ Heap.
QUOTE
Перенести структуры в юнионы.

Ну не тупо и бездумно, конечно.
QUOTE
Заменить printf и sprintf на свои версии.

Да.
QUOTE
Укоротить циклические буфера.

Лобовой совет, но в общем да.
QUOTE
Заменить в операционке вытеснющие задачи на кооперативные.

Или да, или нет.
QUOTE
Использовать драйвера интерфейсов не одновременно, а с разделением во времени.

Это уже следствие совета структуры в юнионы сложить.


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


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Mar 8 2016, 15:34) *
Вообще-то 4 байта на этой платформе. Если не паковать в структуры.
...
Всегда по 4, если так или иначе не указывать компилятороу индивидуальные правила паковки, но и в этом случае структура без паковки будет кратна 4 байтам.

Компилятор считает иначе.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 8 2016, 13:26
Сообщение #5


Гуру
******

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



QUOTE (aaarrr @ Mar 8 2016, 15:19) *
Компилятор считает иначе.

Конкретный компилятор руководствуясь конкретными глобальными стратегиями может считать, как ему приказали. В общем случае выравнивение у жестко 32bit платформ идет по границе разрядности.


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


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Mar 8 2016, 16:26) *
Конкретный компилятор руководствуясь конкретными глобальными установками может считать, как ему приказали. В общем случае выравнивение у жестко 32bit платформ идет по границе разрядности.

Без каких-либо специальных установок. Насчет "общего случая" не скажу, но смысла в таком выравнивании не просматривается, так что сомневаюсь.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Экономия RAM.   Mar 8 2016, 07:38
|- - 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, 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
- - zombi   Даже прочитать всё это сложно! не говоря уже о...   Mar 8 2016, 15:16
|- - Jenya7   Цитата(zombi @ Mar 8 2016, 21:16) Даже пр...   Mar 8 2016, 15:39
|- - zltigo   QUOTE (Jenya7 @ Mar 8 2016, 17:39) как вы...   Mar 8 2016, 16:07
|- - Jenya7   Цитата(zltigo @ Mar 8 2016, 22:07) Какая ...   Mar 8 2016, 16:16
||- - adnega   Цитата(Jenya7 @ Mar 8 2016, 19:16) предст...   Mar 8 2016, 16:45
|||- - Jenya7   Цитата(adnega @ Mar 8 2016, 22:45) Адресн...   Mar 8 2016, 17:15
|||- - jcxz   Оптимизировать нужно там, где наибольший расход. 2...   Mar 8 2016, 17:32
||||- - 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 Текстовая версия Сейчас: 24th July 2025 - 02:58
Рейтинг@Mail.ru


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