LINUX.ORG.RU

Как писать программы для esp32?

 ,


3

5

Как-то так сложилось, что в руки попала esp-wroom-32 и попросили для неё написать программы.

Есть небольшой опыт программирования на ассемблере для avr: работа с прерываниями по таймеру и взаимодействие по UART. Для этого достаточно:

  • текстового редактора
  • avr-gcc
  • avrdude
  • make (опционально)

Для stm32 на LOR’е опубликован шикарнейший цикл статей. Спасибо, @vbr! На практике, признаюсь, пока не пробовал.

А как быть с esp32? В официальной инструкции рекомендуется использовать ESP-IDF (integrated development framework, если правильно помню). Я попробовал загрузить базовые примеры («Привет, Мир!» и помигать диодиком) и пришёл в ужас от того, как эта Python поделка секунд >10 это дело загружает.

Также попробовал это дело через Arduino IDE, только базовые примеры сам уже написал. Гораздо быстрее всё грузится, но всё равно – такое себе.

Какой необходимый минимум программ, чтобы работать с esp32?

Ответ на: комментарий от ahdenchik

Я имел ввиду FreeRTOS, конечно. У него n контрибьютеров, причём n больше количества авторов их сайта

И каким образом ты предлагаешь мне запруфить? Гипотетически? Опрос провести реально? Так ты и от него отмахнешься: скажешь не было кворума или площадка недоверенная, софистика – она такая

хотя общепринятое мнение на моей стороне

Пруфы-то где?

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

А где пруфы на изначальное твое утверждение? Бремя доказательства на заявляющем: ты утвердил, я усомнился – я не должен предоставлять пруфов, в противном случае никто никогда ни до чего не договорится.

Я вот уверен что большинство не считает FreeRTOS осью

Пруфы? Пока, у меня – надпись на главной и название продукта, а у тебя – ничего. Опроса нет ни у тебя, ни у меня.

Общепринятый в 2025 году смысл слов «операционная система» другой

Кем принятый? Какой другой? ( ты так и не озвучил )

а я гротескно показываю неуместность этого твоего буквоедства

не получается. Выглядит как троллинг тупостью

Кажется, про MS-DOS вопрос ты проигнорил почему-то?

Не проигнорил: дос – ос

pihter ★★★★★
()
Последнее исправление: pihter (всего исправлений: 1)
Ответ на: комментарий от pihter

Ну вот. Опять занудствуешь. Будь здорова, Сова!

Кому лучше станет от этого буквоедства и придирок к словам?

По сути своей freertos — это скорее навороченный шедулер. Когда в задачу входят множество спонтанно возникающих внешних событий, требующих нетривиальной реакции — он скорее полезен, и бегать от этого не надо. Да, можно притащить свой, ещё более упрощённый. Но, нужно как минимум понимать, зачем это делается и что полезного это даст в итоге.

ТС озвучил, что речь не про поковыряться, а про конкретную задачу. Это уже, как минимум, повод отложить в сторону фанбойство. RP2040 — да, клёвые, но тут они себя проявляют примерно никак. Пихать в серийные устройства Pico W — допустим, а где их столько взять? А их столько делают вообще? Я уж молчу про ценник x2-x3 относительно модулей ESP32.

Вот, навскидочку, для понимания сути вопроса:

https://www.lcsc.com/product-detail/WiFi-Modules_Espressif-Systems-ESP32-WROOM-32E-N8_C701342.html

https://www.lcsc.com/product-detail/Raspberry-Pi_Raspberry-Pi-PICO-W_C7203003.html

Ну и в целом, чем у LCSC склады забиты:

https://www.lcsc.com/products/WiFi-Modules_939.html

anonymous
()
Ответ на: комментарий от anonymous

Кому лучше станет от этого буквоедства и придирок к словам?

Сначала сказали что пика на платке в отличии от есп. Я спросил: чииииво? Оказалось что есп – тоже на платке.

Это буквоедство и придирка к словам? Окей.

Потом сказали что FreeRTOS – это вообще не ОС. Я спросил: чииииво? Оказывается – ОС, хотя бы по мнению «авторов их сайта».

Ну давайте я буду говрить что земля плоская, а всех несогласных буду записывать в зануды и буквоеды, ну какая кому польза от споров?

По сути своей freertos — это скорее навороченный шедулер.

Блин. Да по сути чуть ли не любая ОС – навороченый шедулер. А автомобиль или даже ракета – навороченный костер. Это - софистика. Давайте строго, по-научному – ОС или не ОС?

pihter ★★★★★
()
Ответ на: комментарий от pihter

Не проигнорил: дос – ос

Да по сути чуть ли не любая ОС – навороченый шедулер

Ну и где шедулер в MS-DOS?

Ну давайте я буду говрить что земля плоская, а всех несогласных буду записывать в зануды и буквоеды, ну какая кому польза от споров?

Вы наступили на свои же грабли, поздравляю!

ahdenchik
()
Последнее исправление: ahdenchik (всего исправлений: 1)
Ответ на: комментарий от anonymous

ТС озвучил, что речь не про поковыряться, а про конкретную задачу

А тс тут уже ни при чем: это отдельная ветка в которой я усомнился в заявлении одного регистранта что фриртос – не ОС

Это уже, как минимум, повод отложить в сторону фанбойство

А я согласен: я, когда узнал подробности, сам посоветовал ему остаться на есп и раскурить как ее программировать. Малина тут не к месту оказалась

Пихать в серийные устройства Pico W — допустим, а где их столько взять? А их столько делают вообще?

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

Я уж молчу про ценник x2-x3 относительно модулей ESP32.

С этим тоже никто никогда не спорил. Цена – самое вкусное что есть в ЕСП: даже я себе закупил ящик вайфайных релюх на них по сто рублей!

pihter ★★★★★
()
Ответ на: комментарий от pihter

Вот мне интересно, что ты куришь? Я тебе доку кинул на чип с радиомодулем, все что надо - приделать к чипу антенну.

но у тебя походу шизофрения и ты в очередной раз пишешь что он «на платке»

Morin ★★★★★
()
Ответ на: комментарий от ahdenchik

Да по сути чуть ли не любая ОС – навороченый шедулер

Ну и где шедулер в MS-DOS?

В досе, емнип, – нет. А ты понимаешь разницу между ‘любая’ и ‘чуть-ли не любая’?

Ну давайте я буду говрить что земля плоская, а всех несогласных буду записывать в зануды и буквоеды, ну какая кому польза от споров?

Вы наступили на свои же грабли, поздравляю!

Ох блин, проучил зануду. Ты, конечно, – гораздо лучше меня

зануда и буквоед

pihter ★★★★★
()
Ответ на: комментарий от Morin

Вот мне интересно, что ты куришь?

В такой манере я общаться не буду: или разговаривай по-человечески или иди гавкайся по-собачьи с кем-нибудь другим

Я тебе доку кинул на чип с радиомодулем, все что надо - приделать к чипу антенну

А я не про твой чип говорил, а про «чип» ТС-а, который – платка. Про твой чип я не спорю.

но у тебя походу шизофрения и ты в очередной раз пишешь что он «на платке»

Ты вот не понял о чем речь, но бросаешься оскорблениями. Речь была про другой, который постил ТС, про него еще видео нагуглили как с него крышку снимают.

Почитай тред, сбавь обороты: я с тобой нигде не спорил, во всем согласен ( насколько я помню ), а ты кидаешься с оскорблениями, потому что недопонял

pihter ★★★★★
()
Ответ на: комментарий от pihter

Сначала сказали что пика на платке в отличии от есп. Я спросил: чииииво? Оказалось что есп – тоже на платке.

ESP32, может быть как «на платке», так и отдельным корпусом, интегрирующимся в своё устройство. Специально показал примеры модулей без кожуха, чтобы было видно разводку.

А вот Pico W — оно только в виде модуля и есть. Там своя антенна патентованная–проприетарная, например. Можно ли её воспроизвести? Хз. Можно ли завести кипарисину с той же прошивкой из Pico SDK на другой антенне? Хз. Можно ли использовать кипарисину отдельно от RP2040 с кодом из Pico SDK? Хз. Нужно ли копипастить в своё устройство связку из RP2040 и CYW43439, только чтобы использовать Pico SDK вместо ESP-IDF? Если не нужны особенности RP2040 — уже выглядит, как минимум, избыточно.

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

Уж извини, не хочу обидеть, но со стороны это выглядит именно так — придираешься к словам, игнорируя суть вопроса. Какая разница, ОС или не ОС? Платка или не платка? Что это меняет в контексте задачи?

ТС спросил, есть ли альтернативный тулчейн. Есть, но в рамках исследовательского ковыряния. Мейнстрим — ESP-IDF. Если поисследовать — пожалуйста. А коли работу работать — IMHO, все экспериментальные штуки нужно отложить, если они не дают какого–то очевидного преимущества.

anonymous
()
Ответ на: комментарий от anonymous

ESP32, может быть как «на платке», так и отдельным корпусом, интегрирующимся в своё устройство. Специально показал примеры модулей без кожуха, чтобы было видно разводку.

До вчерашнего дня не знал что бывают не на платке. Ну – буду знать

А вот Pico W — оно только в виде модуля и есть. Там своя антенна патентованная–проприетарная, например. Можно ли её воспроизвести? Хз. Можно ли завести кипарисину с той же прошивкой из Pico SDK на другой антенне? Хз. Можно ли использовать кипарисину отдельно от RP2040 с кодом из Pico SDK? Хз. Нужно ли копипастить в своё устройство связку из RP2040 и CYW43439, только чтобы использовать Pico SDK вместо ESP-IDF? Если не нужны особенности RP2040 — уже выглядит, как минимум, избыточно.

Со всем согласен, да

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

Уж извини, не хочу обидеть, но со стороны это выглядит именно так — придираешься к словам, игнорируя суть вопроса. Какая разница, ОС или не ОС? Платка или не платка? Что это меняет в контексте задачи?

В контексте задачи – ничего. Но это же форум, тут, в процессе одного обсуждения, возникают другие. Ты вот сам-то согласен что фриртос – не ОС, а авторы сайта не выражают мнение авторов продукта? Чувак сделал, мягко говоря, сомнительное заявление, а на мое «чивоо» вы как-то хором смотрите как на занудство. Ну окэээй, общем-то, смотрите как хотите. Я тут уж никого проучивать не буду, кто я такой.

Какая разница, ОС или не ОС?

В контексте ОП-поста, конечно никакой. А как вопрос сам по себе – ну есть разница, че бы и не обсудить – это бесплатно, никто никого не неволит

ТС спросил, есть ли альтернативный тулчейн. Есть, но в рамках исследовательского ковыряния. Мейнстрим — ESP-IDF. Если поисследовать — пожалуйста. А коли работу работать — IMHO, все экспериментальные штуки нужно отложить, если они не дают какого–то очевидного преимущества.

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

pihter ★★★★★
()

Возвращаясь к теме — братишки, я вам тут пообсуждать принёс:

https://github.com/cpq/mdk

https://github.com/cpq/esputil

Понятия не имею что это и как оно, только что сам наткнулся.

Аватарка автора (в контексте истории с Tasmota) вызывает лёгкий глазной тик, но в остальном выглядит интересно.

anonymous
()
Ответ на: комментарий от anonymous

Понятия не имею что это и как оно, только что сам наткнулся.

Да, спасибо. ИМХО, направление в общем в правильную сторону, но это прям совсем альфа версия:

Currently, a limited API is implemented. The plan is to implement WiFi/BLE primitives in order to integrate cesanta/mongoose networking library. Unfortunately radio registers are not documented by Espressif - please contact us if you have more information on that.

И есть подозрение, что оно совсем заброшено.

Похоже, автор на esp32-c3 остановился, у которой RISC-V архитектура.

Jullyfish
() автор топика
Ответ на: комментарий от ahdenchik

Попробовал. Как-то не обратил внимание, что это просто использование idf.py, да и mcu_software.elf у меня не линкуется (я взял файл в качестве main.c пример с hello_world_main.c из примеров). Но в любом случае создаётся страшный каталог build и как бы разница не сильно большая в количестве файлов.

Также всю их библиотеку можно использовать как наружную, с которой нужно самому линковаться. ВОзможность появилась относительно недавно, её я не проверял. Вспомню ссылку на это - напишу.

Буду рад, если вспомните и скинете.

Jullyfish
() автор топика
Ответ на: комментарий от Jullyfish

Но в любом случае создаётся страшный каталог build и как бы разница не сильно большая в количестве файлов.

«Страшный каталог» это артефакты сборки бинарника же, в котором всё для работы всего в ESP, включая WiFi и прочее. Там и FreeRTOS вкомпиливается по дефолту у них

Без этого нет смысла юзать ESP (выше уже ответил про это, впрочем)

Также всю их библиотеку можно использовать как наружную, с которой нужно самому линковаться. ВОзможность появилась относительно недавно, её я не проверял. Вспомню ссылку на это - напишу.

Буду рад, если вспомните и скинете.

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

ahdenchik
()
Последнее исправление: ahdenchik (всего исправлений: 1)

В качестве хохмы у меня есть вот такая поделка: https://github.com/jcmvbkbc/esp32-linux-build

Чтобы она заработала надо поставить два десятка пакетов из списка в README, и за полчаса она собирает noMMU линукс и SDK на основе buildroot для него под ESP32-S3 с как минимум 8М FLASH и 8M PSRAM.

Вот тут есть давнишнее видео с демонстрацией того как он работает: https://www.youtube.com/shorts/mTVgyt7S9Hs

jcmvbkbc
()
Ответ на: комментарий от vbr

Я тут в процессе поиска документации у себя на диске нашёл документ «Xtensa Instruction Set Architecture (ISA) Reference Manual». В сети так же ищется легко. Или это не то?

u5er ★★
()
Последнее исправление: u5er (всего исправлений: 1)
Ответ на: комментарий от u5er

Я НЕ УСПЕВАЮ ВСЁ ЭТО ЧИТАТЬ, ПОМОГИТЕ

Спасибо, тоже гляну!

На стр. 24:

• Address Space
– Symmetric address mapping
– 4 GB (32-bit) address space for both data bus and instruction bus
– 1296 KB embedded memory address space
– 19704 KB external memory address space
– 512 KB peripheral address space
– Some embedded and external memory regions can be accessed by either data bus or instruction
bus
– 328 KB DMA address space

4 GB это же опечатка?..

Jullyfish
() автор топика
Ответ на: комментарий от Jullyfish

…address space …for both data bus and instruction bus

Это размер максимально адресуемого пространства для 32-битных указателей.

Т.е. да, теоретически ничего не мешает прикрутить на шину 4GiB рамы и в этих границах оперировать кодом и данными. А что смущает?

anonymous
()

Раз уж на то пошло, есть даже дока по асму от Espressif… «Честно награблено из открытых источников», бгг.

https://dl.espressif.com/github_assets/espressif/xtensa-isa-doc/releases/download/latest/Xtensa.pdf

Исходник: https://github.com/espressif/xtensa-isa-doc

Ну и в целом, поддержка Xtensa есть и в gcc (вон, выше товарищ Осьмилис похвастался, как можно линукс собрать), и в clang/llvm.

anonymous
()
Ответ на: комментарий от Jullyfish

Не думаю. Тут указано количество памяти, которое контроллер может адресовать. Не забывай, что не всё адресное пространство отдано под оперативку.

u5er ★★
()