ESP32 ужас новичка при взгляде на итоговый размер скетча.

walker-dn
Offline
Зарегистрирован: 22.05.2021

Приветствую вас любители микроконтроллеров. :)
 

Честно прошерстил 20 страниц раздела новичков ,но не нашел ответа на свой вопрос....
Имею не очень много опыта по программированию контроллеров, до этого был опыт изучения
Atmega 8535..  но там я писал на ASM-е, и  было все понятно. Открыл даташит,там все есть.
Но тут пришлось столкнутся с ESP32, в целом отличная штука...
Поставил Arduino IDE начал писать,пробовать и т.д..
Но мне уж сильно режет глаз итоговый размер скетча.
Тогда я взял простейший код:
void setup() {

int a;
a=a+3;
}

void loop() {

}
Скомпилировал, и слегка афигел....
Скетч использует 252179 байт (24%) памяти устройства. Всего доступно 1048576 байт.
Глобальные переменные используют 14620 байт (4%) динамической памяти, оставляя 313060 байт для локальных переменных. Максимум: 327680 байт.
2 строки простейшего кода = 252Кб?
Это вообще как?
IDE там что,еще FreeRTOS компилирует по тихому?

Может подскажите, ну-жно ли где-то поискать что он там компилирует еще кроме 2-х строк, и возможно
отключить не нужные модули или библиотеки?

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

Не по-тихому, а совершенно официально компилирует freertos, wi-fi, и не только. Ужас это дурачки, сходу лезущие отключать то, чего не понимают.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

За RTL чонить знаешь?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

кста, int a; и a=a+3; можешь безболезненно выкинуть, размер скечча не изменится.  Чюдеса, аха?

walker-dn
Offline
Зарегистрирован: 22.05.2021

rkit пишет:

Не по-тихому, а совершенно официально компилирует freertos, wi-fi, и не только. Ужас это дурачки, сходу лезущие отключать то, чего не понимают.

Спасибо вам за ответ.
За "дурачков" тоже.
Получается,что если в проекте не используется например Wi-Fi , код его поддерживающий все-равно
будет скомпилирован и будет занимать место как во flash так и в RAM в виде переменных?
Я так понимаю что это только мне одному кажется странным да? Учитывая что не так уж их и много
этой памяти в контроллерах...
 

walker-dn
Offline
Зарегистрирован: 22.05.2021

Да,я читал что компилятор может оптимизировать всякую ересь ;)
Этот код был просто для теста-же...

 

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

Нет, не кажется странным. Мне кажется странной идея лезть что-то оптимизировать, когда у тебя еще 3 с половиной свободных мегабайтов памяти. Мне кажется странным использовать arduino, если ты шизофренично борешься за каждый байт.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

walker-dn пишет:

 Учитывая что не так уж их и много

этой памяти в контроллерах...
 

Если тебя прёт от хардкора в микроконтроллерах, то пользуй Attiny13a, там 1К кода и 64 байта ОЗУ. И IDE ничего не добавит к твоим экзерсисам ;))))

ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп, только маленький ;)). И как компу нужна ОС, Линукс или Виндоус или еще что-то, так ESP32 нужна FreeRTOS для работы. Включая все драйвера и служебные модули. Если тебе не нужен ВаФай в проекте - возьми МК без вайфай, не катит? Если ты не майнишь крипту и не гоняешь "в танчики", ты же не станешь выбрасывать видеокарту из компа и у тебя нет возможности отключить драйвера и поддержку зД графики? Вот тут та же история! ;)))

walker-dn
Offline
Зарегистрирован: 22.05.2021

wdrakula пишет:

walker-dn пишет:

 Учитывая что не так уж их и много

этой памяти в контроллерах...
 

Если тебя прёт от хардкора в микроконтроллерах, то пользуй Attiny13a, там 1К кода и 64 байта ОЗУ. И IDE ничего не добавит к твоим экзерсисам ;))))

ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп, только маленький ;)). И как компу нужна ОС, Линукс или Виндоус или еще что-то, так ESP32 нужна FreeRTOS для работы. Включая все драйвера и служебные модули. Если тебе не нужен ВаФай в проекте - возьми МК без вайфай, не катит? Если ты не майнишь крипту и не гоняешь "в танчики", ты же не станешь выбрасывать видеокарту из компа и у тебя нет возможности отключить драйвера и поддержку зД графики? Вот тут та же история! ;)))

Не, меня не прет от хардкора. 
Я просто человек старого формата, начинал еще на Z80 на асме...(42 годика)  Там иногда приходилось и такты процессора считать :) (наверно сейчас набегут старпера пинать )
Мне будет нужен будет кольцевой буффер под журнал событий, и я просто не очень рад что кто то сьел 18 Кб как здрасте...
 

ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп

Спасибо мил человек,что не поленился обьяснить нам чайникам.. :) 
Я внимательно читал описание ESP32 , просто на мой взгляд уже вроде 21-й век,и раз уж у нас компилируется ядро RtOS, то могли бы какой нить конфигуратор к нему придумать...
Фиг сним, я бы даже от файлика с инклудами не отказался бы,залез закомментировал что не надо..
Ядро Linux содержит несколько десятков  миллионов строк,кучу подсистем и модулей, но там можно открыть конфигуратор и включить/выключить что не нужно..
И это нормально, это было заложено сразу.
А тут ,милипусечные обьемы всего, и такие барские замашки..
 

sadman41
Offline
Зарегистрирован: 19.10.2016

Напиши в Expressif, получи их как процессоры дешёвые делать. А то они ж, горемычные, не знают как правильно бизнес вести.

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

walker-dn пишет:

просто на мой взгляд уже вроде 21-й век,и раз уж у нас компилируется ядро RtOS, то могли бы какой нить конфигуратор к нему придумать...

Еще раз - зачем ты пользуешься ардуино, если тебе нужны файлики и конфигураторы? Ардуино это среда для обучения и прототипирования.

Хочешь файлик - бери голый компилятор, пиши мейкфайл, и сколько угодно трать остатки своей жизни на экономию байтов в программе из двух строчек.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

walker-dn пишет:

Не, меня не прет от хардкора. 

А чего прёт-то? Мы тут все такие, считатели тактов :) 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

walker-dn пишет:

Ядро Linux содержит несколько десятков  миллионов строк,кучу подсистем и модулей, но там можно открыть конфигуратор и включить/выключить что не нужно..
И это нормально, это было заложено сразу.
А тут ,милипусечные обьемы всего, и такие барские замашки..

Я на Линухе с 1996 г, мне 51 "годик", по твоему меткому выражению. ;)) Часть кода этого самого ядра я сам и писал, если что, нет там "десятков миллионов строк". "Крайний" раз, когда я собирал ядро, был лет 15 назад. В этом давно уже нет никакой нужды, после создания интерфейсов кернел модулей и концепции микроядра. Если тебе хочется "считать такты" выбирай систему, на которой это нужно. На ESP32 это НЕ НУЖНО. Для этого и создаются дешевые и объемные системы, чтобы программист не занимался рукоблудием с подсчетом тактов и байтов, доходчиво? ОЗУ и памяти для кода (если ты знаешь, что значат слова "Гарвардская архитектура") в ESP32 более чем достаточно.

======================

Хотя ты знаешь, есть ипанутые... сорри. Вот ты на тилипоне СМС удаляешь старые или почту чистишь? Есть люди, которые это делают! Мне они кажутся слегка... ну крыша протекает, штоле. ;)))))))))))) Без обид, но маньякальная страсть к порядку - симптом тревожный.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

mykaida пишет:

walker-dn пишет:

Не, меня не прет от хардкора. 

А чего прёт-то? Мы тут все такие, считатели тактов :) 

Если я (или ты) что-то хорошо умеем, это не значит, что это умение в современном мире актуально или полезно, ОК? Я с трудом избавляюсь от глупости экономии памяти... мне до сих пор трудно пользоваться Стрингами, даже на ESP, но я понимаю, что это часть безобидного психоза. Более молодым не надо даже заморачиваться на этот бред.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

wdrakula пишет:

Хотя ты знаешь, есть ипанутые... сорри. Вот ты на тилипоне СМС удаляешь старые ...

Я такой :) удаляю старые смс. Узнал о себе много нового :-))))

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

wdrakula пишет:

Я с трудом избавляюсь от глупости экономии памяти...

Извините, граф, но у меня так же. Видимо вбили в своё время.

Хотя полностью согласен - на ESP32 экономия памяти не нужна в общем случае.

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

mykaida пишет:

wdrakula пишет:

Я с трудом избавляюсь от глупости экономии памяти...

Извините, граф, но у меня так же. Видимо вбили в своё время.

Хотя полностью согласен - на ESP32 экономия памяти не нужна в общем случае.

Мне кажется, тут нужно подходить совершенно с другой стороны. В конце концов, 512k ESP принципиально ничем не отличаются от 2k AVR, особенно если сравнивать с 16G ПК.

Но с одной стороны - должна быть привычка писать изначально оптимально. И это правильно.

А с другой - должна быть так же привычка, не пытаться оптимизировать там, где оптимизация не нужна. А нужна она или не нужна, зависит от задачи, а не от того, 2k памяти установлено в контроллере или 512k.

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ТС, выбирайте конфигурацию без OTA и удивляйтесь еще больше. Кроме того, если вы используете ESP32 в среде ардуино, то вы по умолчанию грузите в ESP FreeRtos.