Энтузиаст запустил игру Doom на умной мультиварке Krups Cook4Me с сенсорным дисплеем, 128 МБ встроенной и оперативной памяти, Wi-Fi-модулем ESP32 и микропроцессором Renesas R7S721031VZ. Доступ к основному процессору мультиварки исследователь получил через интерфейс SWD. Подключив программатор к сервисным контактам, энтузиаст скопировал содержимое встроенной памяти и на его основе собрал модифицированную прошивку, позволившую запустить Doom. Из-за нестандартного расположения сенсорных элементов управления играть на скороварке в Doom оказалось не особо неудобно.

Программирование микроконтроллеров *
Учимся программировать микроконтроллеры
Нативный драйвер OLED-дисплеев для RP2040
Только что в один из своих проектов на микроконтроллере RP2040 понадобилось интегрировать графический дисплей для отображения погодной информации. Выбор пал на распространенные монохромные OLED-дисплеи разрешением 128х64 точки.
Из плюсов этих дисплеев для меня: высокая яркость и контрастность, простота интерфейса, дешевизна и высокая плотность информации в небольшом размере.
Контроллер у всех этих дисплеев стандартный - SH1106.
Свои проекты я пишу на С с использованием нативной Pico SDK. Поиск библиотеки для нужной платформы на С результатов не дал. Все, что на данный момент есть, - различные ардуино-библиотеки и микропитон.
В итоге было принято решение портировать на RP2040 одну из реализаций для STM32. Эта библиотека умеет рисовать графические примитивы в виде вертикальных и горизонтальных линий, прямоугольников пустых и заполненных, растровых изображений а также есть различные функции вывода текста и числовой информации.
Библиотека позволяет задать разрешение экрана а разворачивать экран на 90/180/270 градусов.
Изначально библиотека включала в 2 шрифта с размерами знакомест 5х7 и 7х10 точек.
Для своих целей я самостоятельно разработал большой шрифт 12х16 точек (на фото он).

Репозиторий проекта: https://gitflic.ru/project/svperchenko/sh1106_for_rp2040. Всем, кому надо, можно пользоваться.
На недавно прошедшем мероприятии 39th Chaos Communication Congress 27 дек 2025 была обнародована информация о впечатляющих уязвимостях в программном обеспечении беспроводных (bluetooth) наушников на базе чипа ф. Airoha. Результаты таковы, что можно смело наводить панику: на видео демонстрируется не только дистанционное считывание названия проигрываемой наушниками композиции, но и обеспечивается доступ к звуковому каналу (bluetooth профиль HFP HF со всеми его фичами), что важно - незаметно для пользователя наушников, а далее - и к софту на смартфоне пользователя. Немаловажно что протестированы наушники вовсе не каких то там непонятных производителей, а известнейших и популярных брендов: многие модели Sony и Marshall, а также некоторые JBL, Jabra, Beyerdynamic, Bose (далее по ссылке есть список протестированых моделей). Выглядит впечатляюще, хотя и сильно подглюкивает, но уже близко к тому что мы видим в компьютерных играх и фильмах про хакеров.
https://www.youtube.com/watch?v=TK5Tz4Bt94Y
Изначально реверсеры раскрутили и прошивки для нескольких устройств, а затем фирменный протокол обмена поверх bluetooth (называется RACE). В нем есть и доступ к оперативке устройств и доступ к флешу. Ну и дырок всяких достаточно.
В текстовом виде + ссылки: https://insinuator.net/2025/12/bluetooth-headphone-jacking-full-disclosure-of-airoha-race-vulnerabilities/
Производители наушников уже оповещены и конечно же обновили прошивки.
Записал видео (на английском языке) своей критики выдачи ИИ тула от Абишека Вармы из университета штата Иллинойс. Тул генерит SVA (SystemVerilog Assertions) для верификации (по простонародному - QA) цифровых аппаратных блоков систем на кристалле. Для повышения понятности, в начале видео рассказал основные идеи протокола AXI (Advanced eXtensible Interface): правила хендшейка valid/ready, конвейерность транзакций, внеочередной возврат данных по запросу чтения с тэгами.
Код, который я попросил Абишека скормить тулу для ревью.
Кратко что получилось:
Правила для проверок оно пишет некорректные. Например что если записать по адресу 100 число 123, то отныне и вовеки веков если прочитать с адреса 100, то там будет 123. Не задумывается, то после первой записи и до чтения может быть вторая, которая запишет число 456.
Далее, проверка для теста проверяет что после сброса (reset) данные на шине AXI будут равны X в виде data == 'x. Но это ерунда по двум причинам: Во-первых, данные могут быть после сброса какими угодно, хоть 0, хоть 123, так как они будуг игнорироваться если с ними не ходит бит valid=1, который кстати сбрасывается в 0. Во вторых, операция сравнения == 'x (неопределенным значением) дает в качестве результата 'x. Чтобы делать именно сравнение с 'x нужно использовать другую операцию ===, то это все равно не будет работать потому что (1). Это вообще невалидный тест.
Но это все цветочки - на это его можно натаскать. Более интересный вид тупости - ИИ конструирует проверку, что если сделаны запросы с тэгами 11, 3, 4, 7, то и данные будут возвращаться в таком же порядке - с тэгами 11, 3, 4, 7. Ему не приходит в голову задать себе вопрос - если бы это было так, зачем в AXI вообще были бы нужны тэги? Они ведь нужны чтобы идентифицировать данные которые приходят не в том порядке, скажем 4, 11, 3, 7.
Итд.
Мне навеяло темой: "Что должно быть на каждой PCB с микроконтроллером":
В чем счастье эмбеддед программиста.
Больше 20 лет назад мы с товарищем, специалистом по схемотехнике — цифровой, аналоговой, любой, и конструкции плат, должны были прикрутить маленький экранчик (10х10 сантиметров примерно) для визуализации ввода к нашему секретному девайсу. И все было как обычно, он принес(прислал) мне описание контроллера экрана, я проверил схему подключения к атмеге (какая-то 8-ми битная микруха АТ серии там была), которую он нарисовал, на предмет программной управляемости (необходимости, достаточности и удобства конструкции). Он развел, вытравил, спаял, скрутил, собрал, проверил цепи,... я всего не знаю что там надо делать, я преклоняюсь перед талантом людей, которые все это знают и грамотно делают, иначе мне бы было не на чем работать! И в один прекрасный день мы собрались вдвоем (для меня это была как бы халтурка) чтобы включить, запрограммировать и окончательно проверить что схема и все необходимые функции программного управления работают и можно снять характеристики, все проверить для того чтобы написать уже пользовательскую программу. Я сначала всегда пишу программу, которая проверяет возможности железа: схемотехнику обвязки и возможности аппаратных модулей встроенных в контроллер-процессор, тайминги, какие-то взаимные ограничения на использование ног, периферийных юнитов, кросстайминги, просто свое понимание работы периферии полученное из теоретического описания. Все требует проверки на практике, на работающей железке с работающей программой.
Я скомпилировал подготовленную программу, основной целью которой было вывести несколько символов на экран, чтобы подтвердить что я все правильно понял и ничего не напутал по описанию контроллера экрана, по протоколу управления, мы ничего не напутали по схемотехнике, последовательный порт SPI по которому управляется экран правильно проинициализирован и правильно используется в микроконтроллере.
Мы подключили программатор и загрузили прошивку! Ожидая что на экране что-то появится. Дисплей имел и графический режим управления, в котором можно было зажигать любые пиксели по координатам, но нас вполне устраивал символьный режим с курсором, в котором у нас было где-то 8 строк по 10 символов. И, как это обычно бывает, ничего не произошло, экран остался безжизненным. Первым делом надо проверить что прошивка работает - поморгать светодиодом, если нет светодиодов просто посмотреть запрограммированный сигнал на каком то выводе процессора осциллографом - все было в порядке, все сигналы на месте. Я начал строить предположения о том, что я мог неправильно понять и, соответственно неправильно настроить-сконфигурировать-передать-принять-перепутать порядок посылок при инициализации дисплея. На это ушел может быть час или два - я дотошно перебирал варианты, вплоть до самых невероятных - ничего не помогало, экран оставался мертвым. Я рассказал напарнику, что называется на пальцах, последовательность операций, которые выполняет моя прошивка. Что-то мы дополнительно проконтролировали по тестовым пинам, нигде логика не была нарушена, все сомнительные варианты мы перепроверили под контролем напарника. Экран оставался мертвым...
И тут, как-то невзначай, мой товарищ, как будто из глубины своего сознания, начал доставать воспоминание, он говорит: "Слушай-ка там в доках схема регулировки яркости была нарисована... я где-то тут прикрутил регулировку, может надо ее покрутить?" И он начинает крутить какой-то неприметный металлический штырек и на экране чудесным образом начинают проявляться символы!
Сложно передать мои эмоции когда я сказал ему: "Какой же ты... молодец, что догадался прикрутить эту регулировку яркости! Без нее бы у нас так ничего и не получилось, сегодня, с этим экраном!". Прошло столько лет, а я не могу забыть эту историю.
Всем удачи в Новом Году. Пусть у вас всегда будут в наличии необходимые регулировки, особенно аналоговые.
Хотите сделать flipper zero своими руками? Тема неоднократно поднималась в коментах, горячие головы утверждали что это под силу радиолюбителю. Но применяемая серия микроконтроллеров stm32wb55 имеет корпуса которые обычным паяльником не запаять, плюс схемотехника обвязки и антенны на 2.4ГГц требует некоторых знаний и умений. Можно конечно сделать плату на заказ, однако некая WeAct Stuido предлагает готовые платочки (на stm32wb55 - правда с их ассортиментом придется разобраться) в формате black/bluepill. и гораздо дешевле flipper. Модули с нужным SD,LCD, NFC и СС1101 тоже есть в продаже. Мысль сделать франкенфлиппера (хотя флиппер еще тот франкенштейн по лору) меня посетила уже давно. Для разных задач можно даже не подпаивать все модули. Но смущало что вероятно придется подкручивать gpio (будет несовместимость) плюс необходимость secure keys меня остановила.
Однако нашлись смелые люди. На днях некий Yellow Purple опубликовал два хороших видео где показана сборка diy flipper zero из подручных материалов. Именно flipper а не далекого аналога на esp32. Знания языка для их понимания не требуется - все показано визуально. правда потребуются иные знания и навыки.
https://www.youtube.com/watch?v=dbdhTg0jV_E
https://www.youtube.com/watch?v=x_dpWzmNMbo
как оказалось, исходники (с допилами?) выложены на GitHub, хотя еще надо посмотреть чего там понаделано https://github.com/GthiN89/FuckingCheapFlipperZero-DIY-Flipper-zero-The-real-on
Нужные бинарники с картинками и схемами тоже есть https://github.com/Magnowz/Flipper-Diy
Что делать если вас попросили посмотреть на чей-нибудь AI тул, который генерит верилог? Самое главное - не дать возможность ИИ-стартаперу показать вам слайды и убежать. Потому что он тогда сделает отчет своему инвестору "наш тул получил заслуженную оценку и апплодисмены переходящие в овации от экспертов такой-то компании, поэтому давайте нам еще зиллион долларов инвестиций для следущего раунда".
Нет, на предложение посмотреть на слайды нужно сразу сказать "просто не буду", как и на предложение посмотреть его демо, где он гениально генерит мультиплексоры из учебника, а также пристраивает к однотактному процессору то, что он называет AXI IP, хотя там простой конечный автомат, который игнорирует конвейерную и out-of-order природу AXI, ну это как показывать трехколесный детский велосипедик как демо для автомобиля Формулы-1. В этот месте стартапер начинает говорить быстро и листать код, чтобы тот, кто прервет его возгласом "это не AXI, а закамуфлированный APB" - выглядел невежливым.
Стартаперу нужно разумеется сразу дать задачку, причем сформулировать ее так, чтобы у него не было возможности заменить ее на другую. Но даже тут стартаперы творят наглости, присущие всем LLM. Например вместо текста ответа присылают видео(!) на час(!), где на 45-й минуте на экране за секунду проскальзывает "FAILED" на вашу задачку, а все остальное время видео он показывает те самые тривиальные мультиплексоры, которые он нашел в вашей репозитории, хотя вы ему совершенно четко написали, что вас не интересует как этот тул генерит мультиплексоры и простые FSM, а интересует решение конвейерных микроархитектурных задач. После чего он пишет отчет инвестору "мы решили 37 из 42 труднейших задач оттуда-то", хотя я в явной форме предложил решить только задачу номер 38 которую тул не решил.
В последнее время стартаперы нашли противоядие против задачек. Они честно, глядя в глаза, говорят что никакого прототипа у них нет, но оно должно работать, потому что AI уже умеет питон и диагностировать рак, значит должен научиться и верилог (вариант: уже умеет Scala, значит должен и Chisel). А мешает плохому танцору только то, что индустрия сделала весь код проприетарным и им не на чем учиться. Поэтому давайте пойдем посмотрим на слайдики, а если вы что-то спросите, мы ответим, что это есть в нашей roadmap. А потом напишем инвестору что мы нашли партнера и нужно слать следущие деньги.
Но не надо отчаиваться! Помимо стартаперов есть еще разные аспиранты, которые присылают вывод своих тулов на посмотреть. Это что-то невероятное по глупости. Некоторые виды глупости настолько глупы, что просто не пришли бы мне в голову. Написание (бесполезного) теста с помощью свободной рандомизации всех сигналов в AXI; проверка что после ресета данные равны 'x. Присваивание значений к типам (а не переменным). Ожидание что после записи в память это значение будет там вечно, несмотря на перезаписи. Проверка что ID прочитанных данных будут всегда в порядке ID адресов, хотя зачем тогда ID. Итд.
Тут нужно тоном коварного змия предложить устроить публичный разбор этого для обучения молодежи. Если аспирант согласится, то превратить это в выступление пародиста Александра Иванова на Вечере смеха в студии Останкино (если вы из поколения, которое застало язык фортран, то вы знаете о чем я говорю).
Энтузиаст собрал GPS-модуль с экраном в виде мини-карты из Need for Speed Most Wanted на базе ESP32-P4 3.4" и открытого ПО (Video Game Mini Maps, GPS Sender, OSM to GeoJSON Convertor и BIN File Convertor).
Представлен проект онлайн-браузера микрокода 8086. Каждая 21-битная микроинструкция декодируется в читаемые поля. Наведите курсор на любое поле, и вы увидите подсказку с объяснением его назначения. Все цели перехода кликабельны — микрокод 8086 использует удивительное количество косвенных переходов, вызовов и коротких ветвлений.

Предлагаю вашему вниманию запись вебинара "Особенности разработки встроенного ПО по требованиям ФБ". Слайды презентаций.
Вместе с экспертами из "ФанкСэйфети" разбирались с такими сущностями, как ГОСТ Р МЭК 61508, уровнями SIL, стандартом MISRA C, сертификацией по функциональной безопасности и т. д.
В конце была активная дискуссия, во время которой отвечали на интересные вопросы. По её итогу приводим дополнительную информацию и ссылки.
Примечание 1. Говоря про безопасные и сертифицированные компиляторы, стоит отметить, что в 2024 году появился ГОСТ Р 71206-2024: "Разработка безопасного программного обеспечения. Безопасный компилятор языков С/С++. Общие требования". Также см. пост из цикла разбора РБПО: Процесс 12 — Использование безопасной системы сборки программного обеспечения и вебинар на эту тему.
Примечание 2. Инструменты SAST и DAST не обязаны быть сертифицированы. Из методической рекомендация ФСТЭК № 2025-07-011 | Уровень критичности: 3:
Область: Инструментальный анализ
Тип недостатка: Необоснованный выбор инструментов, в том числе инструментов статического анализа исходного кода, для выстраивания и выполнения процессов РБПО.
Описание: В настоящий момент ФСТЭК России не предъявляет требования наличия сертификата соответствия к большинству типов инструментов анализа кода и архитектуры. При этом к инструментам предъявляются следующие требования: ...
См. также выдержку из эфира AM Live "Разработка безопасного программного обеспечения (РБПО)". Анализатор PVS-Studio участвует в инициативе ФСТЭК по испытаниям статических анализаторов кода, но это другая история.
Примечание 3. Был вопрос, связанный с объединением требований ФБ и ИБ в одном стандарте. Некоторые усилия в этом направлении предпринимаются, см. примеры ГОСТов ниже:
ГОСТ Р 59506-2021/IEC TR 63074:2019. Безопасность машин. Вопросы защиты информации в системах управления, связанных с обеспечением функциональной безопасности.
ГОСТ Р 71452-2024/IEC/PAS 63325:2020. Требования к функциональной безопасности и защите системы контроля промышленной автоматизации (IACS) на протяжении жизненного цикла.
Однако необходимо понимать, что у ФБ и ИБ разные цели и разные подходы, поэтому объединение технических требований может создать путаницу, и сейчас меры по объединению некоторых аспектов ФБ и ИБ носят, прежде всего, организационный характер.
Короткий метр «ТЕХПРОЦЕСС» о производстве железа вышел на всех наших каналах
В этом получасовом фильме показываем то, чем гордимся и дорожим. Собственное производство полного цикла, где делаем компьютеры, серверы, ноутбуки, материнские платы и многое другое. Линии поверхностного монтажа, отдел технического контроля, сборочный цех.
А еще рассказываем о всех, ну или почти всех, наших технологических секретах.
Присоединяйтесь к экскурсии по заводу «Инферит» вместе с нашим главным технологом Кириллом Пушкиным — и увидьте весь процесс создания технологий своими глазами.
Вперед, смотреть ролик на YouTube, RUTUBE и VK Видео. И обязательно подпишитесь, чтобы не пропустить новые видео. Будем стараться делать интересно.

Микроэлектроника в центре политической бури
Мы привыкли, что в центре геополитического конфликта — фабрики TSMC на Тайване. И США, и Китай хотели бы видеть их у себя, чтобы обеспечить безопасное производство новейшей электроники. Но первым на острие политического скандала оказался небольшой производитель электроники Nexperia в Нидерландах.
В октябре правительство Голландии и ЕС заявили, что идут на крайние меры и берут под контроль мощности китайского производителя электроники Nexperia. Основания, как это часто бывает, — безопасность: Европа опасается, что чипы компании будут поставляться не европейским потребителям. Вот только что-то пошло не так.
Автомобильная промышленность не требует, чтобы микросхемы были созданы по самым передовым техпроцессам, поэтому такие компании, как Nexperia, могут работать на рынке вместе с 3-нм фабриками TSMC, Samsung и другими — они просто занимают разные ниши. Однако отсутствие вертикальной интеграции делает компании зависимыми от цепочек поставок, которые неизбежно ведут… в Китай. Не та страна, чтобы простить отъём собственности.
Результаты не заставили себя ждать. Китай объявил о запрете поставок Nexperia. И уже в середине октября автопроизводители — партнёры Nexperia (Toyota, Ford, Volkswagen, BMW и General Motors. Чуть позже к ним присоединился и Bosch) — получили предупреждение о возможных перебоях поставок.
В результате на этой неделе планируется встреча представителей ЕС и Китая — придётся договариваться. А нам остаётся диверсифицировать все поставки — никогда не знаешь, какие компоненты завтра будут в дефиците.
Ближайшие события
Народ жалуется на трудности поиска работы. В частности такие жалобы есть в группе русского QA коммьюнити в США. Написал для них следующий пост. Интересно сколько откликнется:
"Господа! В этом коммьюнити есть junior QA, которым могут быть полезны (например для поиска работы) рекомендации в LinkedIn. Я готов написать нижеследующую рекомендацию в обмен на несложную работу: проверить инструкцию и репозиторий для семинара, который я буду проводить в грядущий викенд в Cal Poly SLO (Калифорнийский политехнический государственный университет в Сан-Луис-Обиспо).
Рекомендация в LinkedIn будет звучать так:
"Товарищ такой-то/такая-то demonstrated reliable QA skills and verification creativity when testing a CI/CD workflow setup for an educational project aimed to help the universities to teach VLSI classes. The tested product is a variant of a Tiny Tapeout GitHub template for ASIC synthesis used during the Verilog Meetup at California Polytechnic State University in San Luis Obispo, California. The template includes JSON-based GitHub Actions and Python scripts to run Yosys/OpenROAD-based RTL-to-GDSII flow and cocotb/pytest-based verification for the digital designs coded in SystemVerilog. такой-то/такая-то wrote an informative report describing the observed usability problems and unclear parts in the instructions for the user. This work greatly contributed to the success of the CalPoly seminar and similar planned events in microelectronics workforce development.
Инструкция здесь - https://verilog-meetup.com/2025/10/20/from-fpga-to-asic-using-template/
Если вас это заинтересовало, можете приступать. За вопросами можете обращатся в личку.

Питон - предмет обожания секты питонистов, которые ходят по домам и всем говорят "Как, вы еще не выучили Питон? Он же учится за две недели!"
Допустим, но вот два практически идентичных репозитория (1, 2), которые я только что приготовил как форки от двух других практически идентичных репозиториев. Один для создания чипа на немецкой фабрике IHP (The Leibniz Institute for High Performance Microelectronics), а другой для создания чипа на американской фабрике SkyWater (аналог зеленоградского Микрона для военных).
И вот в одном репозитории на питоне нужно писать:
clock = Clock(dut.clk, 10, units="us")
assert not ((dut.uio_out.value >> 4) & 1);а в другом:
clock = Clock(dut.clk, 10, unit="us")
assert not dut.uio_out.value [4];Если во втором написать не "unit", а "units", оно пожалуется:
DeprecationWarning: The 'units' argument has been renamed to 'unit'.
DeprecationWarning: The 'units' argument has been renamed to 'unit'.И типы данных поменялись:
unsupported operand type(s) for >>: 'LogicArray' and 'int'А все почему? У питониcтов все время меняются версии, и в их коммьюнити не принято поддерживать обратную совместимость:
"Просто используй другую версию!", "Просто поставь виртуальные среды!", "Как, ты еще не используешь Докер? С ним это решается элементарно!" - "Ты просто не pythonian!"
Так можно две недели колупаться, после того как за две недели выучить питон.
Компания «Микрон» представила отечественную игровую консоль MikBoy на базе российского микроконтроллера MIK32 «Амур» (К1948ВК015/018) на архитектуре RISC‑V (MIK32 Wiki, GitHub). Корпус и кнопки консоли выполнен с помощью технологий 3D‑печати.
Игровая консоль MikBoy предназначена для запуска простых ретроигр, а производитель называет её «универсальной образовательной платформой, созданной для будущих инженеров, программистов и всех любителей технологий».
В компании считают, что преподаватели, студенты и все энтузиасты‑разработчики смогут совместить приятное с полезным, осваивая новые знания в игровой форме. Ценители ретроигр увидят новое прочтение винтажных форм и оценят возможности отечественного «железа».
В «Микрон» предлагают оформить предзаказ на консоль. Производитель не уточнил стоимость устройства. Также в «Микрон» не раскрыли характеристики консоли. Неизвестно, что там будет за дисплей, нет списка поддерживаемых игр, не озвучена дата начала продаж.

Товарищи студенты из проживающих в США! Кто хочет отправиться на летнюю практику и/или программу для выпускников вузов в техасском отделении Самсунга? Вы можете сходить на сайт и подать заявку напрямую (ссылка 1, ссылка 2). Альтернативно, я могу сделать для вас внутреннюю рекомендацию, так как я член команды разработки GPU в телефонах. Но так как я стараюсь рекомендовать компании только кандидатов, в качестве которых (по своим критериям) я уверен, я предлагаю всем желающим сделать одно из двух вещей:
Решить задачку под названием SystemVerilog Microarchitecture Challenge for AI No.2. Adding the Flow Control. , далее получить от меня разбор вашего решения, после чего решить еще три маленькие задачки в зуме передо мною, и у вас будет рекомендация.
Если вы живете в Области Сан-Францисского Залива или в Сакраменто, то сделать какой-нибудь проект на FPGA платах в рамках разработки open-source примеров для non-profit клуба Verilog Meetup (не аффилиированного с Самсунгом, это просто малочисленная тусовка, куда заходят люди из Теслы, Intel, Apple итд). Наш клуб будет на выставке самоделкиных Maker Faire в Valejo 26-28 сентября. Вы можете подойти ко мне на стенде и мы обсудим ваш проект.
После того, как вы сделаете или (1) или (2), я занесу ваше резюме во внутреннюю базу данных, вам придет письмо с предложением подать заявку, после чего, если ваше резюме выберут, вам нужно будет пройти весь официальный процесс рекрутинга.
Повышает ли моя рекомендация ваши шансы? Этого я не знаю. Как говорил Остап Бендер, полную гарантию вам может дать только страховой полис.
Пишите мне на yuri@panchul.com если вас интересует такое предложение.
Спасибо,
Юрий Панчул

Работа с Bluetooth Low Energy (BLE):основные протоколы и практические советы.
Почему BLE до сих пор “ТОП”?
Потому что даёт годами работать от батарейки -“таблетки”, держит связь в шумной среде и уже давно вышел за рамки «умных браслетов». Ниже - короткая, но практичная шпаргалка: что в BLE за что отвечает, где производительность «прячется», и на чём чаще всего спотыкаются.
BLE-стек делится на две большие части:
- GAP - «как знакомимся и подключаемся»: роли Central/Peripheral, сканирование, реклама (advertising) и параметры соединения.
- GATT/ATT - «как обмениваемся данными после подключения»: сервисы, характеристики, дескрипторы и операции чтения/записи/уведомлений. (PunchThrough, cardinalpeak.com)
Основное - по делу:
1) Реклама и роли
Legacy vs Extended Advertising: в Bluetooth 5 появилась расширенная реклама(Extended) и Periodic Advertising - удобно для «маячинга» и многоприёмников без подключения. (Novel Bits)Роли: Peripheral «светится» и ждёт подключения; Central сканирует и подключается. Это — GAP-уровень. (Punch Through)
2) Скорость, дальность и каналыPHY 1M - базовый; 2M PHY - больше скорость; Coded PHY (S=2/S=8) - для дальности и шумных сред; итоговый выбор - компромисс «скорость/дальность/надёжность». (RIOT Summit)
Для широковещания и энергосбережения в BLE 5.4 усилили «витаминку» для ESL/маячков: PAwR (Periodic Advertising with Responses), EAD (Encrypted AdvertisingData) и пр. - полезно для систем с множеством датчиков и электронных ценников. (Bluetooth Technology Website, silabs.com)
3) Пропускная способность: где «лежит» throughputATT MTU и Data Length Extension (DLE) увеличивают полезную нагрузку пакета (вплоть до ~251 байта данных на пакет) — ключ для высокой реальной скорости. (Punch Through, devzone.nordicsemi.com)
Настраивайте интервал соединения, slave latency и supervision timeout под задачу: меньше интервал — ниже задержка и выше пропускная способность, но больше расход батареи. Для потоков «почти-реального времени» ориентируйтесь на уведомления (см. ниже) и 2M PHY (если качество радио позволяет). Практические потолки зависят от хоста/ОС — тестируйте на целевых телефонах/ПК. (devzone.nordicsemi.com)
4) GATT-модель и событияNotify vs Indicate: оба «толкают» данные от сервера к клиенту; Indicate требует подтверждения на уровне протокола (надёжно, но медленнее), Notify — без подтверждения (быстрее, меньше оверхеда). Всегда добавляйте CCCD для (де)активации уведомлений. (Сообщество NXP, Thesis Pte Ltd, Reddit)Дизайн GATT: группируйте характеристики логически, минимизируйте количество сервисов и «глубокие» иерархии — это ускоряет discovery и упрощает кросс-платформенное поведение. (cardinalpeak.com)
5) Безопасность и приватностьLE Secure Connections (ECDH) — базовый стандарт для шифрования.Privacy: используйте RPA/Filter Accept List, а в BLE 5.4 — EAD для шифрованной рекламы (актуально для «маячков» с приватными данными). (Bluetooth Technology Website)
6) Мобильные ОС: подводные камниAndroid 12/13+: нужны runtime-разрешения BLUETOOTH_SCAN/CONNECT/ADVERTISE(диалог Nearby devices). Без них сканирование/подключение просто не начнётся.(Android Developers) iOS: в фоне реклама и сканирование ограничены — обычные рекламные PDU из бэкграунда не шлются; для сканирования в фоне задавайте конкретные UUID и включайте соответствующие background-моды. (Stack Overflow, Apple Developer)
7) Стек и инструментыДля «железа»: Zephyr Bluetooth Host (широко применим на MCU), NimBLE (легковесный стек от Apache Mynewt), BlueZ (Linux). Выбор стека влияет на доступность фич (DLE, Coded PHY, Periodic Adv). (docs.zephyrproject.org, Argenox)
8) Новшества, на которые стоит поглядыватьBLE 5.4 (PAwR, EAD) — для массовых устройств-«полок» и защищённой рекламы. (Bluetooth Technology Website)
Core 6.0: уточнения по таймингу кадра/интервалам в изохронных потоках (актуально для LE Audio/ISO). Если делаете аудио через BLE — изучите. (Bluetooth Technology Website)
Прошиваем CH32V003 с помощью платы Arduino
Задался вопросом, а можно ли сделать программатор из подручных средств для CH32V003 на экстренный случай? Или это еще может пригодится тем, у кого его еще нет.
Оказывается можно и способов не один, но я расскажу обо одном. Другие пока еще не пробовал. Решил написать эту заметку, т.к. в рунете ничего не нашел, пусть будет.
В проекте ch32fun есть программа minichlink, так вот она умеет прошивать WCH микроконтроллеры с помощью разных программаторов, например, b003boot, ardulink, esp32s2chfun. Нас интересует программатор ardulink.
Код программатора Ardulink можно взять из arduino-ch32v003-swio. На гитхабе есть обертка его для PlatformIO, кому как удобнее. Он написан под atmega328p, поэтому спокойно запускается на Arduino Nano. Подсоединяем провод от D8 (PB0) ножки Ардуино к SWIO (например, восьмая ножка у CH32V003J4M6), питание к питанию, земля к земле. Всего 3 провода. (Ножку D9 (PB1) так и не понял к чему подключать, но про нее есть в Readme.)
Дальше выполняем команды:
minichlink.exe -c COM3 -i этой командой можно проверить определяется ли микроконтроллер, где COM3 номер порта платы Ардуино, которую используем как программатор.
minichlink.exe -c COM3 -w .\firmware.bin flash -b а этой командой можно залить файл прошивки, где firmware.bin сам файл.
Пока у меня не получилось подключить такой программатор напрямую к PlatformIO, только получилось работать из командой строки, но при желании это сделать можно.
Разбираюсь с бюджетными преобразователями USB CAN. В качестве параметра для классификации удобно использовать тип применяемого протокола, по которому данные передаются на ПК.
slcan - текстовый протокол который применяется еще и с интерфейсом RS2232, с оборудованием фирм LAWICEL и VScom, переросшим в связку USB-UART-CAN, с виртуальным последовательным портом, а затем - в USB CAN на единственном микроконтроллере, а затем и вообще TCP. C которым можно работать из обычной терминальной программы, без особого софта.
Существует множество реализаций и расширений этого протокола, на разных микроконтроллерах, в том числе STM32, включая поддержку CAN-FD (на STM32G431, STM32G01) в основном в виде проектов на GitHub.
Проект canable (VID:PID AD50:60C4 либо 0x0403:0x6015) (и еще ранний вариант под названием cantact), прошивается в доступные платки на базе контроллеров STM32F042 и STM32F072 (на Ali похоже уже только на F072 продают). Получил развитие в виде canable v2 (STM32G431, 0x16D0:0x117E).
Вариация USB2CANFDV1 от WeAct studio (STM32G01, 0x0483:0x5740) - зашифрованная прошивка без исходников.
Помимо этого: stm32-slcan (STM32L433, 0x0483:0x5740, протокол урезан), UCCBEmbedded (STM32F042, 0x0483:0x5740), CFDC_embedded-slcan (STM32G431, 0x0483:0x5741), CAN2USB (STM32F105, 0x0483:0x5740), CANsniffer (STM32F042, 0x0483:0x5740).
Проект USBtin (PIC18, 0x04D8:0x000A) представляет собой скорее исторический интерес, в его состав входят макросы для поддержки протокола slcan в легендарной HyperTerminal. Не менее историческая разработка - у Michael Wolf, которая как то связана с программой CanHacker.
Проект ESP32RET использует текстовый протокол LAWICEL в качестве подмножества команд для двоичного протокола GVRET как через USB так и WiFi (TCP). Проект WiCAN реализует поддержку протокола slcan через USB, WiFi, BLE, а так же протокола для программы RealDash. Так же эти прошивки знают известный протокол ELM327 для автодиагностики, это тестовый протокол со множеством реализаций, однако при его помощи "сырой" CAN захватить либо трудно либо нельзя.
gs_usb более известный как candleLight (0x1D50:0x606F) по названию платы (разработка Linux Automation GmbH, так же фигурирует наименование USB2CAN by Geschwister Schneider Technologie-, Entwicklungs- und Vertriebs UG). Это уже двоичный протокол. Который рассчитан в первую очередь на контроллеры STM32F042/STM32F072, поддержка контроллера STM32G01 и CAN-FD на текущий момент только создается.
Однако есть проект bugetcan - прошивка для "most STM32 devices", есть готовые пресеты для STM32F042, STM32G01, STM32G431, STM32G473, STM32H743, STM32H745 и тоже работает с этим протоколом
uCAN_FD - упомянутый ранее CFDC_embedded (uCAN CanFD USB Converter(CFUC)) также предлагают свой собственный протокол, но он, похоже, работает только в софте из этого проекта.
pcan и kvaser по названию соответствующих фирм. Реализованы не только для фирменного оборудования, но и для тех же дешевых платок canable/cantact на STM32F042 (0x0bfd:0x0120 и 0x0483:0x000C), что дает возможность использовать софт рассчитанные именно на эти платы.
usb_8dev для 8 devices USB2CAN, реализован в открытом проекте CANalyze (STM32F042, 0x0483:0x1234), который, похоже, больше не развивается
Разные программы для мониторинга CAN обращаются с протоколами по разному. Например мощная программа BUSMASTER умеет работать с оборудованием VScom (в том числе и через TCP) и PEAK, а значит можно попробовать использовать ее с дешевыми платами перепрошитыми на поддержку такого протокола. SavvyCAN и CANgaroo умеют работать с LAWICEL/slcan, протокол candleLight - через драйвер для Windows. RealDash умеет работать с огромным числом протоколов. Ну а в linux (с относительно свежим ядром) некоторые перечисленные протоколы уже встроены в виде драйверов сетевых (устройств) SocketCAN, что тоже поддержано большим количеством софта.
Вклад авторов
YuriPanchul 2437.6MaFrance351 2040.0aabzel 1858.2smart_alex 1574.4EasyLy 1342.6Indemsys 1296.0monobogdan 1229.6iliasam 1090.6vladkorotnev 750.0dlinyj 741.0