Pull to refresh
16
0
Дмитрий @9a75sd

Пользователь

Send message

На одном из проектов применял схему с генерацией уникальных ключей на каждое устройство, но с шифрованием на борту. Но оно длится долго (около 1-2 минут), и легко забраковать устройство на производстве. А ведь потом еще заводское тестирование запускать.

На следующем проекте доработал схему: подготовка, шифрование частей флешки и сборка в полный бинарник идет на компьютере, а в ESP32 сначала идет прошивка полного шифрованного бинаря, потом прожиг ключа шифрования, и только потом прожиг фьюзов на то, чтобы работал с флешкой, как с шифрованной.

Насколько помню, необходимо и достаточно выставить нечетное количество бит SPI_CRYPT_CNT, чтобы флешка воспринималась как шифрованная. Остальное выставляется в целях безопасности.

Сгенерированные пакеты при этом сохраняю на заводе или на "фабрике устройств" (виртуальная машина, где идет сборка прошивки и подготовка пакетов для устройств с готовыми реквизитами, только прошить). Это нужно для дальнейшего обслуживания.

Естественно, UART Download mode не отключал наглухо. Даже при выставлении Secure Boot UART Download mode ограничивается: esptool.py на чтение/запись не будет работать без флага —no-stub (этот флаг отключает попытку загрузить микропрограмму в оперативку и взаимодействует прямо с флешкой), со stub ESP32 в Download mode настраивается на обмен данными с кешированием.

Правильно ли понимаю, что n8n дает возможность прикрутить ChatGPT ручки и ножки, которые ты пожелаешь, чтобы делал что-то по твоей просьбе?

Разработка этого BIOS для портативок тянет за собой еще и создание SDK для написания игр для таких консолей, и студии для создания игр на базе этого SDK, только с подходом low-code: бОльшая концентрация на содержимом игры, но остается доступ к подкапотке игры, ну, как Unity.

Ну и сделать проект BIOS открытым, чтобы можно было портировать на разные платформы, а игровую студию - даже монетизировать.

Удачи с этим😌

Было бы ещё неплохо в консоли иметь слот/разъем под модули расширения, особенно, если нет радиоканала (WiFi/Bluetooth).
Пример: к приставке подключается как модуль расширения (а может даже интегрирован) ESP8266, и на приставке игра типа локального тетриса, в котором есть режим судьи. В этом режиме включается раздача wifi, к ней подключаются другие такие приставки, ну и смарт-тв или планшет, на котором выводится турнирная таблица.

Насчет "дешевле" могу не согласиться, 32-битки уже дешевле 8-биток, в особенности, AVR. AVR'в сейчас даже дороже.

А насчет надёжности да, надёжнее, за счет 5В и сильных портов, до 20 мА с пина

А если некоторые антенны на нижних уровнях разместить? Типа, устройства просматривают верх, некоторые - низ

Есть еще идея: детекция присутствия в комнате, при этом отличая человека от кошки

+взять, например, ESP32S3, и собрать проект с поддержкой USB-хабов, и собирать эти данные. Поддержку хабов вроде как завезли в ESP-IDF v5.5

В Buildroot external tree в файле external.mk прописал следующую строку:
```include $(sort $(wildcard $(BR2_EXTERNAL_BananaPi_Serial_Logger_PATH)/package/*/*.mk))```
Причем, BananaPi_Serial_Logger - это имя, которое должно совпадать с external.desc, поле name, и убрать кавычки, хабр съел звездочки

Много причин

Вот некоторые из которых, чего нет в ESP32, всей серии:

  • Надо много пинов, и с минимальной задержкой доступа (например, управление асинхронным двигателем)

  • Те же асинхронники, тоебуется процессор со встроенным модулем для вычислений с плавающей точкой

  • Нужно подключить esp32 как модем к микропроцессору, например, к Allwinner H3 (на это есть esp-hosted)

  • Уже есть готовые платы у компании, и там есть разъем под модуль расширения, и они выпускаются серийно

Это уже может быть в AT-командах прошивки ESP. Это называется "прозрачный режим". Он еще есть в модемах вроде SIM800

Еще как пример: морда для умного дома, но это надо заморочиться. Интерфейс либо в браузер выводить, либо делать свой интерфейс на базе LVGL или Qt

Как раз мой случай

Мне понадобилось записать логи с последовательного порта устройства, чтобы отловить программную проблему, но при подключении к компьютеру и подключении терминальной программы давался сигнал сброса на устройство, и багу при таких обстоятельствах не отловить. Плюс, ноутбук оставлять в укромном месте, чтобы только собирал логи - жирно и неудобно. В итоге на одноплатнике запустил 3 bash-скрипта и 2 udev-правила.

Один скрипт - собственно логирование порта, который завершает свою работу, если порт отключается, другой - чистит логи старше 30 дней, а третий - копирует логи на флешку, если она с именем USBLOGS.

Первое udev-правило - запускает скрипт, если видит подключение ttyACM или ttyUSB, а второе - при обнаружении флешки с меткой USBLOGS запускает скрипт на копирование логов. При этом, скопировалось или нет, можно отсмотреть только по индикатору на флешке.

Такое решение помогло отловить проблему.

Первое решение могло логировать только один порт (скрипт работал постоянно, не было udev-правила и складывал только в одну папку). Сейчас решение умеет логировать несколько портов, разделяя логи по папкам с именем НазваниеПорта_СерийныйНомер.

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

А если ты про миграцию проекта, при этом не хочешь разом все переписывать, то есть компонент 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

Information

Rating
6,677-th
Registered
Activity