• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Все, что вы знали о ESP32 - забудьте! Будет ESP32S

pvvx

Активный участник сообщества
Что касается Ethernet — драйвер для MAC периферии сейчас проходит код ревью... Замечаний довольно много, думаю что будет в master на следующей неделе. Работа с драйвером PHY идет через таблицу функций, которая передается драйверу MACа при инициализации. В изначальной версии у нас будет один драйвер для PHY (не помню название чипа; если нужно — могу уточнить).
Собственно драйвер PHY — две с половиной функции, думаю это не будет проблемой.
В том-то и дело, что это реализуется очень просто, но если библиотеки открыты на этом уровне, а не как у ESP8266.
Что касается интеграции с LwIP — да, она есть. Не знаю что там с форвардингом пакетов между интерфейсами, но вроде можно включить. Только опцию протащить из lwipopts в Kconfig.
C LwIP проблем нет - он описан вдоль и поперек.
 

igrr

Moderator
Команда форума
Ещё интересный вопрос, как с одной последовательной Flash работают оба CPU (SMP), т.е. насколько падает производительность в таких случаях? В 3 или 4 раза?
Я думаю, если задаться целью, можно написать код который в SMP режиме работает в 2 раза медленнее чем на одном ядре. Как получить замедление в 3 или 4 раза я пока не понимаю... В прочем если знаете, не рассказывайте пока, интересно самому подумать.

Основные проблемы с производительностью при переходе от однопроцессорной системы к SMP возникают отнюдь не от доступа к флэш. В реальных приложениях за счет кэширования обращение к флэш идет не так уж часто, и уменьшение производительности из за второго ядра весьма мало. А вот блокировки и синхронизация ядер отнимают гораздо больше времени. Критическая секция в одноядерной RTOS — это просто глобальное отключение прерываний. В SMP всё гораздо интереснее, там используется специальная атомарная инструкция, и это занимает больше времени. Соответственно все примитивы RTOS становятся медленнее. Это достаточно серьёзная проблема для приложений где нужно достигать пропускной способности >70Mbps. Но это в основном те скорости на которых ESP32 работает в планшетах (то есть на самом деле ESP8689). Для IoT рынка это не является большой проблемой. Мы чаще слышим просьбу "дайте нам целое ядро чтобы делать с ним всё что угодно" чем "сделайте так чтобы мьютекс брался за 20 тактов".
Но если нужно, поддержка запуска RTOS на одном ядре в sdk имеется. На втором ядре тогда пишите код сами, bare metal.
 

sharikov

Active member
- В конфигурациии ядра использованной в ESP31B не было FPU. В ESP32 есть FPU.
Интересно чем обосновывали добавление FPU.
Я не видел жалоб на медленную плавучку а вот проблем с нехваткой озу вагон.
С моей точки зрения весь "лишний" кремний лучше было бы пустить не на FPU а на RAM потому что всяким питонам и луа сколько RAM не дай - все сожрут и скажут мало.
 

pvvx

Активный участник сообщества
Я думаю, если задаться целью, можно написать код который в SMP режиме работает в 2 раза медленнее чем на одном ядре. Как получить замедление в 3 или 4 раза я пока не понимаю... В прочем если знаете, не рассказывайте пока, интересно самому подумать.
Там, где требуется производительность как раз возникает ситуация, что код не маленький. Его обычно оптимизируют не на размер, а на скорость и он не лезет в "кеши". Из простых и известных примеров - развертка ZIP на больших CPU, хотя там немного другое.
Но в данном MCU установлен ADC и могут потребоваться разные программные фильтры и кодеки. Иначе ADC бесполезен. Я не думаю, что хватит "кеша" закешировать всё, что участвует в процессе приема и передачи потока и в таком процессе будут трудиться оба ядра и не c API (ROM), а с кодом из Flash. А "мютексы" как раз безразличны - код то будет свой, и всегда можно распределить как захочется.
Во всех других случаях производительность не требуется. Мигать светодиодом по WiFi можно и на одном ядре при CLK в 20 MHz. Этого достаточно для обслуживания WiFi и проектов в Arduino. Большие просто не влезут из-за малого размера RAM и её дефрагментации на раздельные куски.
ESP32 не позволяет перейти на другой уровень, кроме того, что на нем будут мигать светодиодом теперь по HTTPS. :) Т.е. является промежуточным между следующим классом. Это по большей части связано с куcочной RAM. Кинули бы по пол мега на ядро - был-бы другой разговор... А то уровень 16-ти разрядного DOS не пройден, а 32-х разрядный CPU на 160 MHz :) Полный дисбаланс... :( Как прикол - чем-то это смахивает на 386-ой с кешем и вынутой из мамки модулями памяти :)

PS: Пока замечательно в этом всём только одно - возможно постепенно собьют цену таким представителям PIC32MZ2048ECM144 - 32-bit PIC Microcontrollers На них уже Lau и прочее давно крутится GitHub - whitecatboard/LuaOS-PIC32MZ: Lua OS for PIC32MZ EF series
 
Последнее редактирование:

igrr

Moderator
Команда форума
Интересно чем обосновывали добавление FPU.
Для аудио приложений (~WiFi/BT колонки) это дает заметный прирост производительности. Конечно можно всегда переписать код на фиксированную точку... Но single precision FPU добавляет не так много к площади. Не больше чем 8k RAM.

Я не думаю, что хватит "кеша" закешировать всё, что участвует в процессе приема и передачи потока и в таком процессе будут трудиться оба ядра и не c API (ROM), а с кодом из Flash.
В описанной вами ситуации фильтр или кодек отправляется на второе ядро и спокойно крутится там. Кодек с размером "горячего" кода более 32кб (=размер кэша на одном ядре)? Мы пока что не видели.

Кинули бы по пол мега на ядро - был-бы другой разговор
4 мегабайта on-chip памяти — это фича которую хотят очень многие. Но сделать это сохранив стоимость в районе $1.5–$2 за чип достаточно сложно. Мы этим занимаемся, но потребуется еще пара итераций чтобы сделать такой чип.
 

pvvx

Активный участник сообщества
4 мегабайта on-chip памяти — это фича которую хотят очень многие. Но сделать это сохранив стоимость в районе $1.5–$2 за чип достаточно сложно. Мы этим занимаемся, но потребуется еще пара итераций чтобы сделать такой чип.
Уже - RTL8711AM. 2.5 Мегабайта на ядро и ценой равной ESP32. :)
В описанной вами ситуации фильтр или кодек отправляется на второе ядро и спокойно крутится там. Кодек с размером "горячего" кода более 32кб (=размер кэша на одном ядре)? Мы пока что не видели.
Это значит, что не готовили реальных приложений. Пусть 32к на кодек, но поток требует не только кодек, но и другие части системы. Итого более 70 кило точно в "кеше". Переносить весь код в RAM? Тогда ничего не останется от RAM. ESP32 не первый чип с к 500 кило RAM и возможностью работы из Flash и опыт уже есть. Из него уже известно, что размера RAM в куски общей суммой в 400 кило маловато для перехода на что-то более, чем ESP8266 + SSL.
Посчитайте сами - сколько надо только LwIP для полноценной поддержки простейшего сервера, а не одного сокета :) Цифра стремиться за сотню кило. mbedtls - минимум два буфера по более 20 кило на одно соединение :) Если ещё какое сжатие, пусть картинки в png - это ещё от 40 кило (т.к. уже слеплено на RTL8710AF для Arduino). И всё это непрерывными кусками, не учитывая промежуточных буферов самих сокетов и т.д.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Забываем про RTL8711AM - он снят с продажи на Ali (ноль предложений). Бобик издох а идея была хорошая.
Это кому как. :) ESP32 тоже снимали и только на днях выяснится что там с поставками. :)
Поиск находит 2 шт. лот БЕСПЛАТНАЯ ДОСТАВКА RTL8711AM RTL8711AF Cortex M3 MCU серийный wifi модуль купить на AliExpress
Есть пачками на taobao: Купить на Taobao дешего, по выгодной цене

По возможностям модулей c набортным WiFi на сегодня получается ряд вида: ESP8266->RTL8710AF->ESP32->RTL8711AM. При цене ESP8266=RTL8710AF, ESP32=RTL8711AM :)
C чего чего думаете такой пиар ESP32?

Далее идут модули с OpenWRT с 512 Мегабайт RAM, по цене чуть более NodeMCU-32S.
 
Последнее редактирование:

sharikov

Active member
Поиск находит ...
"Извините, по вашему запросу ' rtl8711am ' ничего не найдено. Пожалуйста, попробуйте еще."
8711amnotfound.png

C чего чего думаете такой пиар ESP32?
Отчего пиар я понимаю. Espressif очень хочет продавать продукцию.
В случае realtek такого не наблюдается: они монстр и традиционно кладут болт на всех потребителей покупающих менее 100500 миллионов чипов.
 

pvvx

Активный участник сообщества
"Извините, по вашему запросу ' rtl8711am ' ничего не найдено. Пожалуйста, попробуйте еще."
Значит поиск на сайте ali не работает. С ним давно такое.
Мой заказ с RTL8711AM вышли с таможни Москвы. Значит на днях будут.
В случае realtek такого не наблюдается: они монстр и традиционно кладут болт на всех потребителей покупающих менее 100500 миллионов чипов.
Та фиг с ними :)
Что у нас там по ПО для ESP32-S? Дурина то хоть работает?
 

pvvx

Активный участник сообщества
Последнее редактирование:

pvvx

Активный участник сообщества
И Arduino там будет? :) С++ примеров там не нашел. Какие-то копошения по либам видно, но примеров нет. Вы же прекрасно знаете, что в основном тут используют Arduino... :)
Вопрос темы прост – стоит или нет покупать ESP32S, а для большинства это переводится в “готово или нет Arduino для ESP32?”.
Стандартные примеры в Arduino при выборе платы "node32s" и установках описанных в GitHub - espressif/arduino-esp32: Arduino core for the ESP32 не собираются:
Код:
Arduino: 1.6.12 (Windows 7), Плата:"Node32s, 80MHz, 921600"

Изменены опции сборки, пересобираем все
D:\Arduino1.6.12\libraries\WiFi\examples\WiFiWebClient\WiFiWebClient.ino: In function 'void setup()':

WiFiWebClient:56: error: 'class WiFiClass' has no member named 'firmwareVersion'

   String fv = WiFi.firmwareVersion();

                    ^

Несколько библиотек найдено для "WiFi.h"
Используется: D:\Arduino1.6.12\hardware\espressif\esp32\libraries\WiFi
Не используется: D:\Arduino1.6.12\libraries\WiFi
exit status 1
'class WiFiClass' has no member named 'firmwareVersion'
А собственные примеры от Espressif сыплят варнингами.

Выходит, что оценку по занимаемой памяти и прочим характеристикам ПО к ESP-32Sна сегодня не сделать. Всё находится в незавершенной стадии.

PS: igrr - не подумайте, что придираться тут выдумал. По логам и коментам к ESP-32S работает только пару человек, один из них вы…
 
Последнее редактирование:

pvvx

Активный участник сообщества
Кто знает (?), в понятие "SD-card interface support" у ESP32-S входит режим опускания сигналов на 1.8V?
А то тут GitHub - espressif/esp-idf: Espressif IoT Development Framework. Official development framework for ESP32. не вижу Hal SDIO Host...
ESP32_datasheet_0705.pdf: It also supports one SD card operating at 1.8V level.
А даташитам от Espressif не доверяю. У них всё всегда "поддерживается", но кода нет и не будет никогда :( c ответом на любой вопрос - "Спасибо за ваш интерес к ESP..." :)
 
Последнее редактирование:

sharikov

Active member
Кто знает (?), в понятие "SD-card interface support" у ESP32-S входит режим опускания сигналов на 1.8V?
Не надо кошмарить население. 1,8V на SD карту нахер никому не нужно. Стандарт есть но таких карт никто не видел.
Ягодно-фруктово-цитрусовые платы подают питание на SD карту напрямую от 3,3V и никто не жалуется.
 

pvvx

Активный участник сообщества
Не надо кошмарить население. 1,8V на SD карту нахер никому не нужно. Стандарт есть но таких карт никто не видел.
Ягодно-фруктово-цитрусовые платы подают питание на SD карту напрямую от 3,3V и никто не жалуется.
Мне надо. Не для SD.
"Ягодно-фруктово-цитрусовые платы" в большинстве вообще на 5V...
С математикой дружите? 100MHz на 5-ти выводах на 3.3V по диким емкостям проводников китайской платы... через лапшу на плату Arduino-mega :) :) :)
 
Последнее редактирование:

gfftioy

New member
В общем, ситуация с ESP32 немного прояснилась.

С самим чипом ESP32 все в порядке, снят с производства только модуль AI-THINKER ESP3212.
Вместо него теперь модуль ESP-32S, который имеет другую распиновку (больше выводов) соответственно отладочные платы и переходники для ESP3212 не подходят для ESP-32S.

Большинство продавцов обещают поставку ESP-32S в конце ноября, кое-где модуль есть в наличии, и возможен предзаказ на отладочную плата с USB.

Есть в продаже отладочные платы с USB от Adafruit и AI Thinker
Расширенный список продавцов есть здесь

Уже готово Arduino для ESP32 (от Espressif) GitHub - espressif/arduino-esp32: Arduino core for the ESP32
NodeMCU допиливает ветку для ESP32 GitHub - nodemcu/nodemcu-firmware at dev-esp32
человек они отличаются только названием я прост сравнил они отличаются только одной буквой хитрые эти китаёзы честно я на али зашёл характеристики идентичны только отличие в том что есть разъём для антенны но честно как то пох если присмотрятся к esp32 то видно на антенне есть два золотистых квадратика можно антеннку к ним припаять и не покупать новую esp
 
Сверху Снизу