Размер структур и классов в программах на ESP8266

Поделиться
HTML-код
  • Опубликовано: 17 ноя 2024

Комментарии • 25

  • @Ek_Ko
    @Ek_Ko 3 года назад +1

    Использование __attribute__((__packed__)) с помещением элемента в вектор приводит к спонтанным перезагрузкам.

  • @Happinesstoom
    @Happinesstoom 2 года назад +1

    Алекс, откопал:
    #pragma pack(push,1)
    struct {...};
    #pragma pack(pop)
    Выравнивает в 1 байт. Последняя строка возвращает все как было для последующего кода.
    Вдруг будет время затронуть это в каком-то видео. Интересно было бы вас послушать.

  • @alexandervinogradov6856
    @alexandervinogradov6856 3 года назад

    Спасибо, очень полезно! Даже для копипастера. Начал передавать данные с ардуины на esp8266 и ... улетает нормально, а приходит куча мусора. Добавил __attribute__((__packed__)) и все заработало как надо.

  • @Gartenzwerg
    @Gartenzwerg 4 года назад

    Очень здорово, что мне этот канал попался. До этого я в основном из
    Random Nerd Tutorials информацию черпал. Спасибо.

  • @yuriyrr5672
    @yuriyrr5672 4 года назад +1

    стандартная упаковка #pragma pack(1) прекрасно работает

  • @whynot8140
    @whynot8140 6 лет назад +7

    У меня лично каждый ролик как продолжение сериала захватывающего. Всегда рад. Спасибо!

  • @alexandern8671
    @alexandern8671 6 лет назад +1

    Лично я понятия не имел о таком атрибуте, спасибо. КМК для практических целей должно быть достаточно в структуре сначала объявить все uint32_t, затем все двухбайтовые, затем все однобайтовые поля. Вперемешку, конечно, хуже всего. Дополнительное время для packed, скорее всего, требуется из-за того, что читается все четырехбайтовое слово, и затем оно маскируется и сдвигается до получения нужных двух или одного байта.
    Для себя - установить наконец PlatformIO

  • @РусланКарпов-п1ь
    @РусланКарпов-п1ь 5 лет назад

    Алекс ты красава

  • @olegkozlov302
    @olegkozlov302 Год назад

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

  • @CmuT_B_naJIbTo
    @CmuT_B_naJIbTo 3 года назад

    Размеры структур и всего остального можно посмотреть в Project inspection на platformio ide

  • @Константин-у9у8и
    @Константин-у9у8и 6 лет назад +2

    Поставил палец вверх на первой секунде просмотра , за то что уже не ждал , и за то что надо чаще

  • @stenzoautomatic
    @stenzoautomatic 6 лет назад +1

    Алекс,молодец!!!Единственный русскоязычный контент по Platformio,на днях начну с помощью него подключать к esp8266 внешний ацп ads1115 и выводить значение на дисплей nextion,если бы не вы, то так и изучал бы Arduino IDE.Даёшь больше роликов!!!!

  • @ShkolnikPrahramist
    @ShkolnikPrahramist 6 лет назад +1

    Пишу hello world'ы на плюсах. Очень интересно смотреть. Спасибо за контент.

  • @DimiEG
    @DimiEG 6 лет назад +1

    Спасибо за уроки. Не зря Вас подбадривали ;)

  • @Dialbist
    @Dialbist 6 лет назад

    А мне что-то Платформио не зашел, что-то геморно было добавлять библиотеки не стандартные, короче постоянно ошибки сыпались, можно было конечно разобраться, но я взял локальную VisualStudio c надстройкой MicroVisual, кстати рекомендую для локальной разработки. А вот в Arduino IDE нереально нормально работать конечно и тем более писать большой код

    • @sergewddm
      @sergewddm 5 лет назад

      Я тоже долго сидел на Visual Micro + MS Visual Studio. Теперь окончательно перешёл на Platformio (в том числе благодаря роликам автора данного канала) после того, как повесил некоторые свои устройства на ESP8266. А именно, нужно было слегка модернизировать код в ESP8266. Но после заливки новой версии прошивки по OTA, WiFi в ESP отвалился и MQTT соответственно тоже. Дальнейшая загрузка по OTA стала невозможной. Это случилось из- за изменения кода (обновления) некоторых библиотек + мой кривой код ☺. Накануне переустанавливал винду и Arduino со всеми библиотеками. Так вот, пришлось вытаскивать свою железку из труднодоступного места и перешивать её шнурком.
      Используя Platformio, нужные библиотеки настраиваются очень гибко (указание определённых версий и т.д.).
      P.S. Alex, спасибо за интересные видео. Данный материал смотрел с большим удовольствием. Очень познавательно для любителей электроники и программирования.

  • @СергейБатькович-щ3л

    Интересует микрообзор IDE для незнакомого с ней балбеса(возможности и т.п.) и краткие рекомендации по использованию.

  • @Alexander_Gurov_RF
    @Alexander_Gurov_RF 5 лет назад

    Ну и что здесь нового? Обычное выравнивание. И дело тут не в скорости. Просто многие архитектуры не позволяют обращаться к данным по невыровненным адресам, и выкидывают исключение.

  • @alexkiller9051
    @alexkiller9051 4 года назад

    За выводы спасибо

  • @alexejhripunkov5997
    @alexejhripunkov5997 6 лет назад

    Очень интересно. Спасибо.

  • @alexkiller9051
    @alexkiller9051 4 года назад

    Как по мне так такие выводы в каждом мануале крупными буквами в начале, писать нужно

  • @alexgalstyan
    @alexgalstyan 6 лет назад

    Спасибо, очень полезная информация. Я вот ещё не разобрался, насколько я помню функция тоже имеет вес и в данном примере он не учтен. Не могу понять причину, думаю причина в sizeof

    • @alexmorozov73
      @alexmorozov73  6 лет назад

      Код функций (методов) не располагается в оперативной памяти и в случае классов он один для всех экземпляров класса, поэтому не учитывается.
      На самом деле, класс занимает больше памяти, чем сумма его свойств, т.к. в случае виртуальных функций есть еще VTBL, правда в последних версиях Arduino для ESP8266 VTBL может храниться во флеше.