ESP32 ужас новичка при взгляде на итоговый размер скетча.
- Войдите на сайт для отправки комментариев
Приветствую вас любители микроконтроллеров. :)
Честно прошерстил 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-х строк, и возможно
отключить не нужные модули или библиотеки?
Не по-тихому, а совершенно официально компилирует freertos, wi-fi, и не только. Ужас это дурачки, сходу лезущие отключать то, чего не понимают.
За RTL чонить знаешь?
кста, int a; и a=a+3; можешь безболезненно выкинуть, размер скечча не изменится. Чюдеса, аха?
Не по-тихому, а совершенно официально компилирует freertos, wi-fi, и не только. Ужас это дурачки, сходу лезущие отключать то, чего не понимают.
Спасибо вам за ответ.
За "дурачков" тоже.
Получается,что если в проекте не используется например Wi-Fi , код его поддерживающий все-равно
будет скомпилирован и будет занимать место как во flash так и в RAM в виде переменных?
Я так понимаю что это только мне одному кажется странным да? Учитывая что не так уж их и много
этой памяти в контроллерах...
Да,я читал что компилятор может оптимизировать всякую ересь ;)
Этот код был просто для теста-же...
Нет, не кажется странным. Мне кажется странной идея лезть что-то оптимизировать, когда у тебя еще 3 с половиной свободных мегабайтов памяти. Мне кажется странным использовать arduino, если ты шизофренично борешься за каждый байт.
Учитывая что не так уж их и много
этой памяти в контроллерах...
Если тебя прёт от хардкора в микроконтроллерах, то пользуй Attiny13a, там 1К кода и 64 байта ОЗУ. И IDE ничего не добавит к твоим экзерсисам ;))))
ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп, только маленький ;)). И как компу нужна ОС, Линукс или Виндоус или еще что-то, так ESP32 нужна FreeRTOS для работы. Включая все драйвера и служебные модули. Если тебе не нужен ВаФай в проекте - возьми МК без вайфай, не катит? Если ты не майнишь крипту и не гоняешь "в танчики", ты же не станешь выбрасывать видеокарту из компа и у тебя нет возможности отключить драйвера и поддержку зД графики? Вот тут та же история! ;)))
Учитывая что не так уж их и много
этой памяти в контроллерах...
Если тебя прёт от хардкора в микроконтроллерах, то пользуй Attiny13a, там 1К кода и 64 байта ОЗУ. И IDE ничего не добавит к твоим экзерсисам ;))))
ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп, только маленький ;)). И как компу нужна ОС, Линукс или Виндоус или еще что-то, так ESP32 нужна FreeRTOS для работы. Включая все драйвера и служебные модули. Если тебе не нужен ВаФай в проекте - возьми МК без вайфай, не катит? Если ты не майнишь крипту и не гоняешь "в танчики", ты же не станешь выбрасывать видеокарту из компа и у тебя нет возможности отключить драйвера и поддержку зД графики? Вот тут та же история! ;)))
Не, меня не прет от хардкора.
Я просто человек старого формата, начинал еще на Z80 на асме...(42 годика) Там иногда приходилось и такты процессора считать :) (наверно сейчас набегут старпера пинать )
Мне будет нужен будет кольцевой буффер под журнал событий, и я просто не очень рад что кто то сьел 18 Кб как здрасте...
ESP32 это не просто МК, а SoC - систем он чип, если тебе проще понять - как комп
Спасибо мил человек,что не поленился обьяснить нам чайникам.. :)
Я внимательно читал описание ESP32 , просто на мой взгляд уже вроде 21-й век,и раз уж у нас компилируется ядро RtOS, то могли бы какой нить конфигуратор к нему придумать...
Фиг сним, я бы даже от файлика с инклудами не отказался бы,залез закомментировал что не надо..
Ядро Linux содержит несколько десятков миллионов строк,кучу подсистем и модулей, но там можно открыть конфигуратор и включить/выключить что не нужно..
И это нормально, это было заложено сразу.
А тут ,милипусечные обьемы всего, и такие барские замашки..
Напиши в Expressif, получи их как процессоры дешёвые делать. А то они ж, горемычные, не знают как правильно бизнес вести.
просто на мой взгляд уже вроде 21-й век,и раз уж у нас компилируется ядро RtOS, то могли бы какой нить конфигуратор к нему придумать...
Еще раз - зачем ты пользуешься ардуино, если тебе нужны файлики и конфигураторы? Ардуино это среда для обучения и прототипирования.
Хочешь файлик - бери голый компилятор, пиши мейкфайл, и сколько угодно трать остатки своей жизни на экономию байтов в программе из двух строчек.
Не, меня не прет от хардкора.
А чего прёт-то? Мы тут все такие, считатели тактов :)
Ядро Linux содержит несколько десятков миллионов строк,кучу подсистем и модулей, но там можно открыть конфигуратор и включить/выключить что не нужно..
И это нормально, это было заложено сразу.
А тут ,милипусечные обьемы всего, и такие барские замашки..
Я на Линухе с 1996 г, мне 51 "годик", по твоему меткому выражению. ;)) Часть кода этого самого ядра я сам и писал, если что, нет там "десятков миллионов строк". "Крайний" раз, когда я собирал ядро, был лет 15 назад. В этом давно уже нет никакой нужды, после создания интерфейсов кернел модулей и концепции микроядра. Если тебе хочется "считать такты" выбирай систему, на которой это нужно. На ESP32 это НЕ НУЖНО. Для этого и создаются дешевые и объемные системы, чтобы программист не занимался рукоблудием с подсчетом тактов и байтов, доходчиво? ОЗУ и памяти для кода (если ты знаешь, что значат слова "Гарвардская архитектура") в ESP32 более чем достаточно.
======================
Хотя ты знаешь, есть ипанутые... сорри. Вот ты на тилипоне СМС удаляешь старые или почту чистишь? Есть люди, которые это делают! Мне они кажутся слегка... ну крыша протекает, штоле. ;)))))))))))) Без обид, но маньякальная страсть к порядку - симптом тревожный.
Не, меня не прет от хардкора.
А чего прёт-то? Мы тут все такие, считатели тактов :)
Если я (или ты) что-то хорошо умеем, это не значит, что это умение в современном мире актуально или полезно, ОК? Я с трудом избавляюсь от глупости экономии памяти... мне до сих пор трудно пользоваться Стрингами, даже на ESP, но я понимаю, что это часть безобидного психоза. Более молодым не надо даже заморачиваться на этот бред.
Хотя ты знаешь, есть ипанутые... сорри. Вот ты на тилипоне СМС удаляешь старые ...
Я такой :) удаляю старые смс. Узнал о себе много нового :-))))
Я с трудом избавляюсь от глупости экономии памяти...
Извините, граф, но у меня так же. Видимо вбили в своё время.
Хотя полностью согласен - на ESP32 экономия памяти не нужна в общем случае.
Я с трудом избавляюсь от глупости экономии памяти...
Извините, граф, но у меня так же. Видимо вбили в своё время.
Хотя полностью согласен - на ESP32 экономия памяти не нужна в общем случае.
Мне кажется, тут нужно подходить совершенно с другой стороны. В конце концов, 512k ESP принципиально ничем не отличаются от 2k AVR, особенно если сравнивать с 16G ПК.
Но с одной стороны - должна быть привычка писать изначально оптимально. И это правильно.
А с другой - должна быть так же привычка, не пытаться оптимизировать там, где оптимизация не нужна. А нужна она или не нужна, зависит от задачи, а не от того, 2k памяти установлено в контроллере или 512k.
ТС, выбирайте конфигурацию без OTA и удивляйтесь еще больше. Кроме того, если вы используете ESP32 в среде ардуино, то вы по умолчанию грузите в ESP FreeRtos.