• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу