А если ты про миграцию проекта, при этом не хочешь разом все переписывать, то есть компонент esp32-arduino, добавляется либо в папку components, либо прописывается в манифесте idf_components.yaml
Если ты про IDE, то vscode дает возможность создания профилей. Я так и сделал: отдельный профиль (и папка с workspace) под PlatformIO, и отдельный - под ESP-IDF голый.
Отдельный профиль - отдельный набор расширений.
А юнит-тесты на ESP-IDF собираю и провожу через консоль, так как юнит-тест, по сути, проект в проекте, и пока не видел, что он адекватно отрабатывается IDE.
Не помню, начиная с какой версии, но если у тебя поддержки профилей в vscode нет - обнови его.
Рано или поздно всё равно придется мигрировать с PIO на чистый ESP-IDF.
Одна из предпосылок - система сборки. В CMakeLists.txt можно подключать или отключать конкретные файлы исходного кода или компоненты, и указывать зависимости. PlatformIO подхватывает вообще всё, что может вызвать ошибки из исходников, которые не относятся к конфигурации или циклические зависимости
Тоже включал Bluetooth, Bluetooth/WiFi coexistence, запускал Bluetooth одновременно с WiFi. Заработало, но на ESP32S3 осталось после этого свободно ~30 кб ОЗУ (хотя было 100-110 без Bluetooth).
С 30 кб могут происходить сбои при обращении к HTTPS-серверу на контроллере, не запустится скачивание обновления по HTTPS. Использовал mbedTLS для защищенных соединений, по возможности буферы выносил в PSRAM
Заметил, что Postman вообще отказывается отправлять запросы даже в локальной сети, если нет подключения к интернету. Это когда отлаживал API HTTP-сервера на базе ESP32, и очевидно, там не было интернета. Есть ли еще подобные Postman решения, которые работают корректно без интернета и с поддержкой вебсокетов? Curl не поддерживает вебсокеты.
Защита от угона, например. Известен случай, когда у Toyota LandCruiser вырезали в заднем крыле отверстие ножом для консервных банок, затем подключались к CAN-шине и открывали ее, и даже прописывали свои ключи. Ну, и еще один момент на VAG: когда ставишь устройства от другого автомобиля (например, приборную панель или мультимедию), то включается защита компонента, и он не работает, снимается только (около)официальным инструментом ODIS. Но кто знает - тот знает
В основном с android 4.0, 4.1, 7-9 дюймов экраны, в одном из них даже hdmi есть. Есть и экраны отдельные, думал с Banana Pi R2Pro запустить, но все руки не доходят и времени нет
Хотелось бы еще сделать так, чтобы плата делала снимки с USB-камеры хотя бы в FullHD, или как максимум транслировала картинку на веб-сервер или в сеть по RTSP/MJPEG, как раз USB 2.0 это позволяет.
В свое время пробовал на ESP32S3 делать снимки с USB-камеры, но удавалось не более 640*480, как раз из-за пропускной способности USB 1.1 и того, что камеры чаще всего дают только потоковое изображение в относительно большом разрешении на 20-30 кадров/сек, а still-режима (когда просто сделал фото и выгружаешь из камеры спокойно) во многих камерах просто нет
Я бы добавил еще специфику некоторых устройств: после неудачного обновления ПО модули по RS485 больше не отвечают, а чтобы подключить UART и воскресить устройство, надо строить леса/заказывать автовышку и восстанавливать прошивку, и так с каждым, а их десятки (привет софиты с RDM).
А если в загрузчике предусмотрено обновление ПО/оживление устройства через тот же интерфейс, через который общается с хостом, то проблем с лесами/автовышкой не будет.
Ну или другой пример: фитооблучатель с управлением по USB, корпус заварен ультразвуковой сваркой. И у пользователя/управляющего модуля есть возможность воскресить устройство самостоятельно, например, удерживая одну-единственную кнопку на облучателе, подключить к компу, он перейдет и останется в загрузчике и, и пользователь спокойно вернет штатную прошивку.
Я бы добавил пункт: делать загрузчик, учитывая реалии, где устройство будет находиться. То есть, там может не быть UART-CLI, там только RS485 или USB. Или устройство должно вешаться на высоту свыше 10-15 метров (на сцене, например), или плата устройства в неразборном корпусе. В обоих случаях UART-CLI недоступен.
У меня как раз завалялись китайские планшеты, отдельные экраны и смартфоны. Все никак не получалось завести их и даже не было понимания, как и с чего заводить. Хотя есть banana pi r2pro с разными интерфейсами: RGB, DSI (MIPI?) и eDP
Подниму загашник - покидаю фото дисплеев на опознание
Плюс, есть такие библиотеки с открытым кодом, которые задуманы для упрощения взаимодействия с сервисом, например, OpenAI, в то время как серверная часть остается закрытой. Таким образом, можно снизить порог вхождения и привлечь новых клиентов.
А те, кто способен поддерживать открытый исходный код своих библиотек (не продуктов!), и играют вдолгую, получают через какое-то время готовые кадры, которые уже знакомы с библиотеками
Скорее всего, у тебя сам по себе пример работать не будет: нужны скрипт линковки, где объявлена секция ram_text и crt.S, startup-файл, где работает подгрузка.
Дмитрий, добрый вечер, пробовали такое делать, но пример пока висит в ветке test: https://github.com/MikronMIK32/mik32-examples/blob/test/HAL_Blink_SPIFI/src/main.c
В этом примере лишь включается кэш, перенастройка самой флеш памяти требует встраивания многих функций библиотеки spifi, либо переноса их в ram_text. Встраиваемые функции можно посмотреть в hal_spifi.h (https://github.com/MikronMIK32/mik32-hal/blob/test/peripherals/Include/mik32_hal_spifi.h)
Пример компилируется с hal и shared из ветки test соответственно, а саму секцию ram_text можно посмотреть в скриптах линковки (https://github.com/MikronMIK32/mik32v2-shared/tree/test/ldscripts), в файле sections.lds (https://github.com/MikronMIK32/mik32v2-shared/blob/test/ldscripts/sections.lds#L61), копирование - в стартовом файле (https://github.com/MikronMIK32/mik32v2-shared/blob/test/runtime/crt0.S#L77)
Я как-то в чате поддержки mik32 закидывал идею выполнение части кода из ОЗУ путем определения некоторых функций в секции в ОЗУ, ибо если запускать выполнение из SPIFI, то оттуда выполняется очень медленно: контроллер SPIFI в 1-битном режиме без кэша работает, и прибегают к такому подходу: в EEPROM загрузчик, в SPI-flash основная программа.
Проверь плиз пример из тестовой ветки, который загружается из SPIFI, и блок переконфигурируется кодом из ОЗУ
Ссылка на пример с перенастройкой SPIFI из ОЗУ https://github.com/MikronMIK32/mik32-examples/tree/test/HAL_Blink_SPIFI
Они сайт забыли обновить, либо это для тех, кто заказывает большими объемами.
В чипе продается, может взять любой, у кого есть деньги.
Предвидя вопрос: а зачем мне этот чип, если могу взять китайский?
Я подобным образом тоже поступаю, и тоже хотелось бы купить отладочную плату на Амуре, есть что там испытать. Ну и встречный вопрос: а если завтра китайцы скажут, что не будут контроллеры продавать, что делать будем?
А если ты про миграцию проекта, при этом не хочешь разом все переписывать, то есть компонент esp32-arduino, добавляется либо в папку components, либо прописывается в манифесте idf_components.yaml
Если ты про IDE, то vscode дает возможность создания профилей. Я так и сделал: отдельный профиль (и папка с workspace) под PlatformIO, и отдельный - под ESP-IDF голый.
Отдельный профиль - отдельный набор расширений.
А юнит-тесты на ESP-IDF собираю и провожу через консоль, так как юнит-тест, по сути, проект в проекте, и пока не видел, что он адекватно отрабатывается IDE.
Не помню, начиная с какой версии, но если у тебя поддержки профилей в vscode нет - обнови его.
Рано или поздно всё равно придется мигрировать с PIO на чистый ESP-IDF.
Одна из предпосылок - система сборки. В CMakeLists.txt можно подключать или отключать конкретные файлы исходного кода или компоненты, и указывать зависимости. PlatformIO подхватывает вообще всё, что может вызвать ошибки из исходников, которые не относятся к конфигурации или циклические зависимости
Проект на ESP-IDF, использовал HTTPS-сервер+HTTPS клиент для скачивания обновления+MQTT защищенный, SSL/TLS бэкенд - mbedTLS.
В рантайме либо HTTPS-сервер, либо HTTPS клиент+MQTT защищенный.
Возможно, в Вашем проекте HTTPS или MQTTS не задействован
Ну или использовались динамические буферы
Тоже включал Bluetooth, Bluetooth/WiFi coexistence, запускал Bluetooth одновременно с WiFi. Заработало, но на ESP32S3 осталось после этого свободно ~30 кб ОЗУ (хотя было 100-110 без Bluetooth).
С 30 кб могут происходить сбои при обращении к HTTPS-серверу на контроллере, не запустится скачивание обновления по HTTPS. Использовал mbedTLS для защищенных соединений, по возможности буферы выносил в PSRAM
А какие параметры были выставлены/урезаны, чтобы это всё заработало? Динамические буферы?
Обычный вариант ESP32 не переварит одновременно WiFi и BLE, тупо не хватит ОЗУ. Лучше использовать для этого варианты с PSRAM
А почему DMX/RDM не подошел?
Заметил, что Postman вообще отказывается отправлять запросы даже в локальной сети, если нет подключения к интернету. Это когда отлаживал API HTTP-сервера на базе ESP32, и очевидно, там не было интернета. Есть ли еще подобные Postman решения, которые работают корректно без интернета и с поддержкой вебсокетов? Curl не поддерживает вебсокеты.
Защита от угона, например.
Известен случай, когда у Toyota LandCruiser вырезали в заднем крыле отверстие ножом для консервных банок, затем подключались к CAN-шине и открывали ее, и даже прописывали свои ключи.
Ну, и еще один момент на VAG: когда ставишь устройства от другого автомобиля (например, приборную панель или мультимедию), то включается защита компонента, и он не работает, снимается только (около)официальным инструментом ODIS. Но кто знает - тот знает
Могу предложить MCP23S17/MCP23017, как раз SPI-расширитель GPIO двунаправленный, до 5 МГц тактовой частоты держат, как тебе?
В основном с android 4.0, 4.1, 7-9 дюймов экраны, в одном из них даже hdmi есть. Есть и экраны отдельные, думал с Banana Pi R2Pro запустить, но все руки не доходят и времени нет
У меня еще планшеты есть на Android, какие-то живые, какие-то нет, если нужно, обращайся😉
Хотелось бы еще сделать так, чтобы плата делала снимки с USB-камеры хотя бы в FullHD, или как максимум транслировала картинку на веб-сервер или в сеть по RTSP/MJPEG, как раз USB 2.0 это позволяет.
В свое время пробовал на ESP32S3 делать снимки с USB-камеры, но удавалось не более 640*480, как раз из-за пропускной способности USB 1.1 и того, что камеры чаще всего дают только потоковое изображение в относительно большом разрешении на 20-30 кадров/сек, а still-режима (когда просто сделал фото и выгружаешь из камеры спокойно) во многих камерах просто нет
Я бы добавил еще специфику некоторых устройств: после неудачного обновления ПО модули по RS485 больше не отвечают, а чтобы подключить UART и воскресить устройство, надо строить леса/заказывать автовышку и восстанавливать прошивку, и так с каждым, а их десятки (привет софиты с RDM).
А если в загрузчике предусмотрено обновление ПО/оживление устройства через тот же интерфейс, через который общается с хостом, то проблем с лесами/автовышкой не будет.
Ну или другой пример: фитооблучатель с управлением по USB, корпус заварен ультразвуковой сваркой. И у пользователя/управляющего модуля есть возможность воскресить устройство самостоятельно, например, удерживая одну-единственную кнопку на облучателе, подключить к компу, он перейдет и останется в загрузчике и, и пользователь спокойно вернет штатную прошивку.
Я бы добавил пункт: делать загрузчик, учитывая реалии, где устройство будет находиться. То есть, там может не быть UART-CLI, там только RS485 или USB. Или устройство должно вешаться на высоту свыше 10-15 метров (на сцене, например), или плата устройства в неразборном корпусе. В обоих случаях UART-CLI недоступен.
Статья-находка😊
У меня как раз завалялись китайские планшеты, отдельные экраны и смартфоны. Все никак не получалось завести их и даже не было понимания, как и с чего заводить. Хотя есть banana pi r2pro с разными интерфейсами: RGB, DSI (MIPI?) и eDP
Подниму загашник - покидаю фото дисплеев на опознание
Плюс, есть такие библиотеки с открытым кодом, которые задуманы для упрощения взаимодействия с сервисом, например, OpenAI, в то время как серверная часть остается закрытой. Таким образом, можно снизить порог вхождения и привлечь новых клиентов.
А те, кто способен поддерживать открытый исходный код своих библиотек (не продуктов!), и играют вдолгую, получают через какое-то время готовые кадры, которые уже знакомы с библиотеками
Скорее всего, у тебя сам по себе пример работать не будет: нужны скрипт линковки, где объявлена секция ram_text и crt.S, startup-файл, где работает подгрузка.
Дмитрий, добрый вечер, пробовали такое делать, но пример пока висит в ветке test: https://github.com/MikronMIK32/mik32-examples/blob/test/HAL_Blink_SPIFI/src/main.c
В этом примере лишь включается кэш, перенастройка самой флеш памяти требует встраивания многих функций библиотеки spifi, либо переноса их в ram_text. Встраиваемые функции можно посмотреть в hal_spifi.h (https://github.com/MikronMIK32/mik32-hal/blob/test/peripherals/Include/mik32_hal_spifi.h)
Пример компилируется с hal и shared из ветки test соответственно, а саму секцию ram_text можно посмотреть в скриптах линковки (https://github.com/MikronMIK32/mik32v2-shared/tree/test/ldscripts), в файле sections.lds (https://github.com/MikronMIK32/mik32v2-shared/blob/test/ldscripts/sections.lds#L61), копирование - в стартовом файле (https://github.com/MikronMIK32/mik32v2-shared/blob/test/runtime/crt0.S#L77)
Я как-то в чате поддержки mik32 закидывал идею выполнение части кода из ОЗУ путем определения некоторых функций в секции в ОЗУ, ибо если запускать выполнение из SPIFI, то оттуда выполняется очень медленно: контроллер SPIFI в 1-битном режиме без кэша работает, и прибегают к такому подходу: в EEPROM загрузчик, в SPI-flash основная программа.
Проверь плиз пример из тестовой ветки, который загружается из SPIFI, и блок переконфигурируется кодом из ОЗУ
Ссылка на пример с перенастройкой SPIFI из ОЗУ https://github.com/MikronMIK32/mik32-examples/tree/test/HAL_Blink_SPIFI
Они сайт забыли обновить, либо это для тех, кто заказывает большими объемами.
В чипе продается, может взять любой, у кого есть деньги.
Предвидя вопрос: а зачем мне этот чип, если могу взять китайский?
Я подобным образом тоже поступаю, и тоже хотелось бы купить отладочную плату на Амуре, есть что там испытать. Ну и встречный вопрос: а если завтра китайцы скажут, что не будут контроллеры продавать, что делать будем?