Pull to refresh

Comments 36

"на сайте одной из российских фирм, торгующих Arduino, обнаружился модуль ESP32 lolin32 OLED по цене ниже, чем на Aliexpress."

Увы, такого не бывает на Али всегда дешевле:

Вы ж стоимость доставки не показываете.

А так да, почти за 745.

Я смотрел у другого продавца, там было ~1200р и решил, что и у остальных будет приблизительно так же. Значит плохо я умею искать на Али :(

ESP сами по себе довольно корявые внутри (не знаю как это обьяснить), поэтому приколов можно много накопать. Любят их за другое - цена и возможности. В узких кругах ходит шутка, что еррата на есп больше самого даташита. А вдруг не шутка?

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

Их уже три — ESP32, ESP32-S2 и ESP32-S3 (не считая ещё двух на ядре RISC V вместо Extensa LX — ESP32-C3 и ESP32-C6), и они существенно разные.

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

Становится ясно, что иногда кто-то, помимо моего кода, вмешивается в процесс исполнения и запускает некий длительный процесс

Там же установлена RTOS и WIFI, как я понимаю они тоже должны работать. Я правда только micropython использовал.

Да, внутри freertos и просто куча всяких доп файлов "экосистемы". Плюс может сидеть wifi/ble, тут уже от библиотеки и чипа зависит.

Если взять ESP IDF (почти чистый C код) и собрать проект мигания светодиодом, то на выходе бинарник будет весить под 120кб флеша и 60к озу :)

Ого.. не знал. Хотел тоже погонять но не задалось. А напрямую на асме её можно юзать?

можно но оооочень мало кому захочется: это потребует кучу времени для старта. но jtag прицепить можно, а значит будет гораздо лучше чем в старые добрые времена ПЗУ стираемых ультрафиолетом.

Практически нельзя. Документации нет, и даже ISA ядер Extensa — официально под NDA (хотя, говорят, в интернете найти можно всё).

Вот, меня эта сторона и интересовала: есть ли полноценная дока на архитектуру или там серо-черный ящик с сюрпризами?

Второе.

SDK описана достаточно хорошо, но чуть в сторону — и вас ждут увлекательные приключения в серой зоне и «исходники как документация» в лучшем случае.

К счастью, память обычно не проблема и имеющегося в SDK обычно хватает.

Как понял, Xtensa это собираемая система на кристалле из кубиков, но ещё на стадии проектирования кристалла. И, соответственно вопрос не столько в этой доке самой архитектуры, сколько чего конкретно напихано в процессор конкретной ESP-шки, и вот тут дока хромает:

Типовая часть (общая) есть, понятна. А вот описания отдельных фич отсутствуют порой полностью. Так?

А вот описания отдельных фич отсутствуют порой полностью

Скажем так: детализированные описания отдельных фич. По сути, для многого на низком уровне есть лишь констатация присутствия фичи с очень, очень кратким описанием — без внутренних деталей.

Есть описание всех регистров перифирии в technical_reference_manual для работы на низком уровне.

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

WiFi как и второе ядро надо запускать явно, это точно не причина

автор сделал какой то бытрый и качественный скачек от ардуино да прилично все описал. Наверное он че то раньше умел :)

я даже не знаю стоит ли повторять за автором рекомендуемая ардуино это надстройка над ESP IDF а она содержит кучу своего закрытого а так же процедуры из rom вызывает. в arduino 2 как то прикрутили отладку.. Но "правильная" отладка затруднена скуднейшей документацией по регистрам. она может nda но даташит и pm на esp очень .. лаконичный

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

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

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

автор сделал какой то бытрый и качественный скачек от ардуино да прилично все описал

В 2014 автор писал про DMA, он явно что-то умеет!

Действительно

В 2014 автор писал про DMA

https://habr.com/ru/articles/228531/

и даже обещал продолжение про решение проблем с ДМА на отечественных МК (насколько я понял), я что-то продолжение не могу найти, интересно чем все закончилось.

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

сферический DMA в вакууме? Был вот, например, хороший обзор всяких особенностей DMA в реализации от Milandr, .. а толку

А это на каком языке написано?

Я пришел к варианту vscode->platformio->esp-idf

Проект platformio немного отличается от чистого esp-idf, но не сильно и эти отличия документированы. Еще одно время версия esp-idf в platformio заметно отставала от актуальной, но сей час такой проблемы нет.

Фреймворк esp-idf немного косоват, но развивается и базовый функционал работает стабильно. Но в порядке вещей, например, такие вещи как нерабочие устаревшие примеры, которые даже не собираются на актуальном esp-idf.

Документация в порядке убывания актуальности - примеры, комментарии в хидерах библиотек и собственно документация. Закрывает потребности от 50 до 100% от необходимого в зависимости от требуемого функционала.

Периферия радует не только ассортиментом, но и гибкостью.

Хотя если пользоваться обёрткой ардуино, то гибкости будет куда меньше, но и код будет проще - иногда одна комманда без параметров заменяет страницу исходного кода.

Считать такты и писать на ассемблере на этот MCU не вижу ни малейшего смысла для 99,9% задач.

Попробуйте mongoose os, проект заброшен но там очень много написано, намного больше возможностей чем с Arduino IDE

Ну я попробовал самое ходовое - Arduino и оно, в общем то, неплохо, даже для меня, а уж для нормального самодельщика так и просто хорошо.

поглядел. с одной стороны - там интересно, потому что в esp32 они залезли на уровне регистров, без  ESP IDF . С другой стороны эта универсальная вещь под несколько контроллеров, которая может все, что умеет каждый контроллер, но похоже не имеет заточки под возможности конкретных контроллеров - так что интересно что это за "много чего". как по мне - она поможет поглядеть-поучиться, но они за что то еще и деньги просят

Есть маленькое замечание - прошивка не всегда проходит, но если нажать на кнопку "BOOT" во время попыток старта загрузки, то все получается гарантировано.

Проблема самой платы. У меня есть две другие разновидности отладочныых плат на ESP32: одна входит в режим программирования без нажатия boot тоже 50 на 50, другая - всегда (чипы usb-uart разные).

Эта проблема решается напайкой дополнительного конденсатора между выводом EN и землей. Номинал - от 10 мкф и больше. Можно электролит, можно неполярный.

Например, для Tensilica дополнительно вставляется барьер памяти memw перед считыванием переменной (и это можно понять), а также перед записью результата (а вот это понять сложнее)

Это поведение можно отключить добавив опцию компилятора -mno-serialize-volatile

Барьер перед записью в память гарантирует, что запись не будет переупорядочена с другими более ранними чтениями и записями. Вообще это поведение унаследовано из времён, когда о явных барьерах ещё не принято было задумываться и считалось, что volatile -- наше всё. Полагаю, что в некоторых культурах программирования это до сих пор верно. При компиляции ядра linux это поведение отключено и явные барьеры должны быть в правильных местах.

Спасибо за совет, попробовал, действительно барьер исчез из ассемблера.

Sign up to leave a comment.

Articles