ОЗУ ESP8266 и Ардуино ИДЕ

forfrends
Offline
Зарегистрирован: 24.02.2015

Всем привет! Пытаюсь разобраться в том, сколько памяти (ОЗУ) реально доступно на ESP8266. Перечитал несколько статей и форумов - в результате пришел к заключению что размер доступной памяти напрямую зависит от того в какой среде пишется код.

Тогда подскажите, сколько оперативной памяти отделяется пользователю? На пример у меня есть Wemos D1 Mini Pro, сколько у нее доступной ОЗУ?

rkit
Offline
Зарегистрирован: 23.11.2016

Возьми да измерь

b707
Offline
Зарегистрирован: 26.05.2017

forfrends пишет:

Тогда подскажите, сколько оперативной памяти отделяется пользователю? На пример у меня есть Wemos D1 Mini Pro, сколько у нее доступной ОЗУ?

скомпилируйте в ИДЕ любой код для Вемоса - в конце бцдет написана доступная память

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

forfrends пишет:

Тогда подскажите, сколько оперативной памяти отделяется пользователю? На пример у меня есть Wemos D1 Mini Pro, сколько у нее доступной ОЗУ?

скомпилируйте в ИДЕ любой код для Вемоса - в конце бцдет написана доступная память

Это не корректная цифра, т.к. немало памяти выделяется динамически.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

rkit пишет:

Это не корректная цифра, т.к. немало памяти выделяется динамически.

В таком случае корректную цифру невозможно получить в принципе - в каждом месте программы она будет своя.

rkit
Offline
Зарегистрирован: 23.11.2016

Возможно. Экспериментально. Или проанализировав код досконально.

forfrends
Offline
Зарегистрирован: 24.02.2015

Код: обычный блинк
Плата: Wemos D1 Mini Pro

IDE написала следующее:

Executable segment sizes:

IROM   : 228492          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 26792   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 
DATA   : 1248  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 688   ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 24880 )         - zeroed variables      (global, static) in RAM/HEAP 

Скетч использует 257220 байт (24%) памяти устройства. Всего доступно 1044464 байт.
Глобальные переменные используют 26816 байт (32%) динамической памяти, оставляя 55104 байт для локальных переменных. Максимум: 81920 байт.

Получается оперативки всего 81920 байт? Стек берет из этой памяти, или это с учетом стека? Исходя из этого в ESP 128 Килобайт, но она не вся доступна: https://esp8266.ru/forum/threads/voprosy-po-ram-iram-i-prochej-pamjati.266/post-4571

Насколько плотно я могу забить ее? Я интересуюсь потому что мне нужно создать немаленький буфер, чем он будет больше, тем лучше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

forfrends пишет:
Перечитал несколько статей и форумов
А чё видосы не посмотрели?

Может, всё-таки лучше даташит почитать? Не?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

forfrends пишет:

Насколько плотно я могу забить ее? Я интересуюсь потому что мне нужно создать немаленький буфер, чем он будет больше, тем лучше.

Этого кроме Вас никто знать не может.

Потому как ответ на этот вопрос определяется тем, как написана программа. В частности, где и как она использует динамическую память и где и как она использует стек. Может оказаться так, что и 30-40 байт запаса (под рост стека) будет достаточно, а может и нескольких кбайт не хватить.

Разработчики Arduino IDE считают, что допустимо забивать память на 75%.

forfrends
Offline
Зарегистрирован: 24.02.2015

Спасибо. Буду пробовать