Как разработчик софта для ембеда, периодически дорываюсь до железа.
На этой неделе моей жертвой стал PWM-контроллер PCA9685, который должен был крутить несколько моторов SG90 и один SG5010.
Шаг первый. Настройка. PCA9685 имеет 4 адреса, на которых может слушать на I2C-шине. Как правило, производитель раздает адреса 40-43h или 70-73h. За то, какой адрес будет активен, отвечают первые 4 бита регистра MODE.
Подумав, что это будет интересно - записать в MODE 0, я так и сделал. В результате чип пропал с шины со всех адресов и даже не помахал на прощание.
Приуныв, но изучив мануал, я нашел решение - специально для таких дебилов производитель разрешает подать на питающую ногу 0.2V, после чего чип делает factory reset.
Чип на свою голову вернулся и даже один раз крутнул мотор. Но потом потащил плату, она ударилась задницей об ethernet-шилд малины, к которой всё это было подключено и весело задымилась.
После осмотра выяснилось, что к счастью сгорел только CJ2305 - МОП, отвечающий за защиту от переплюсовки. Дальше было некоторое время чудес - контроллер прекрасно крутил 2 мотора SG-90, но напрочь отказывался работать с SG5010.
Причина выяснилась только на следующий день - труп транзистора пропускал достаточно ампер, чтобы питать два SG90, но на один большой SG5010 его не хватало. После повторого осмотра платы, выяснилось что её производитель тоже предусмотрел средство для дебилов - специально возле дохлого МОП-а с платы выведено два контакта, которые ни с чем не контачат, зато на них удобно напаять жучок.
После чего всё наконец заработало. Пойду-ка я лучше код писать...
На этой неделе моей жертвой стал PWM-контроллер PCA9685, который должен был крутить несколько моторов SG90 и один SG5010.
Шаг первый. Настройка. PCA9685 имеет 4 адреса, на которых может слушать на I2C-шине. Как правило, производитель раздает адреса 40-43h или 70-73h. За то, какой адрес будет активен, отвечают первые 4 бита регистра MODE.
Подумав, что это будет интересно - записать в MODE 0, я так и сделал. В результате чип пропал с шины со всех адресов и даже не помахал на прощание.
Приуныв, но изучив мануал, я нашел решение - специально для таких дебилов производитель разрешает подать на питающую ногу 0.2V, после чего чип делает factory reset.
Чип на свою голову вернулся и даже один раз крутнул мотор. Но потом потащил плату, она ударилась задницей об ethernet-шилд малины, к которой всё это было подключено и весело задымилась.
После осмотра выяснилось, что к счастью сгорел только CJ2305 - МОП, отвечающий за защиту от переплюсовки. Дальше было некоторое время чудес - контроллер прекрасно крутил 2 мотора SG-90, но напрочь отказывался работать с SG5010.
Причина выяснилась только на следующий день - труп транзистора пропускал достаточно ампер, чтобы питать два SG90, но на один большой SG5010 его не хватало. После повторого осмотра платы, выяснилось что её производитель тоже предусмотрел средство для дебилов - специально возле дохлого МОП-а с платы выведено два контакта, которые ни с чем не контачат, зато на них удобно напаять жучок.
После чего всё наконец заработало. Пойду-ка я лучше код писать...
Внезапно перевел все наши продукты с jemalloc на mimalloc.
Битва аллокаторов - вечный холивар, расскажу свои соображения, а вы добавьте в комментариях.
- Причина, почему я вообще дернулся в смену аллокатора - клиенты начали ставить новый Raspbian, а там CONFIG_ARM64_16K_PAGES по-умолчанию включены. Jemalloc с 16кб-страницами по-умолчанию не работает и просто крешится на старте
- У jemalloc есть опция выбора максимального размера страницы, которую нужно постоянно включать при компиляции в environment variables. В случае, если размер страницы меньше, чем заданная, есть небольшая пенальти в работе. У mimalloc никаких опций нет, оно работает плюс-минус всегда одинаково
- Оба аллокатора я уже не раз гонял в работе, они используют похожие алгоритмы, но по-разному имплементированные. В результате, одни задачи могут быть быстрее на jemalloc, другие - на mimalloc, но в среднем всё будет одинаково и разницу не заметите. На моих задачах mimalloc всё же дает плюс в пару %
- У mimalloc есть "secure"-режим для параноидальных клиентов, который позволяет обходить известные методы атаки на кучу еще до того, как в системе нашли очередную дырку
- Бинарники с mimalloc примерно на 500kb легче
Битва аллокаторов - вечный холивар, расскажу свои соображения, а вы добавьте в комментариях.
- Причина, почему я вообще дернулся в смену аллокатора - клиенты начали ставить новый Raspbian, а там CONFIG_ARM64_16K_PAGES по-умолчанию включены. Jemalloc с 16кб-страницами по-умолчанию не работает и просто крешится на старте
- У jemalloc есть опция выбора максимального размера страницы, которую нужно постоянно включать при компиляции в environment variables. В случае, если размер страницы меньше, чем заданная, есть небольшая пенальти в работе. У mimalloc никаких опций нет, оно работает плюс-минус всегда одинаково
- Оба аллокатора я уже не раз гонял в работе, они используют похожие алгоритмы, но по-разному имплементированные. В результате, одни задачи могут быть быстрее на jemalloc, другие - на mimalloc, но в среднем всё будет одинаково и разницу не заметите. На моих задачах mimalloc всё же дает плюс в пару %
- У mimalloc есть "secure"-режим для параноидальных клиентов, который позволяет обходить известные методы атаки на кучу еще до того, как в системе нашли очередную дырку
- Бинарники с mimalloc примерно на 500kb легче
В связи с трендом на cyber security, в промышленность и энергетику начинают проникать решения, которые еще недавно даже у военных пылились в нафталине, где-то между перфокартами и 8" дискетами. Но теперь оно - тренд и знать желательно.
Диод данных (он же однонаправленная сеть) - сеть, в которой пакеты ходят только в одном направлении. Простейший диод можно собрать самому, например взяв оптическое подключение и отстрелив трансмиттеры.
Такая сеть ломает практически все протоколы, но зато ее саму невозможно поломать (в смысле - отправителя). По сути всё что проходит - только UDP (из коробки - например SNMP traps), остальное можно в это UDP инкапсулировать, например SMTP (без подтверждения доставки) и вообще любой push сообщений, или pub/sub, если нужно только pub с одной стороны, или только sub, но всегда на определенные топики, с другой. Когда мы регистрировали свой PSRT, в IANA нам намекали на плюсы такого функционала и хорошо что было время имплементировать. Впрочем, я тогда больше думал о сети, которая не может принимать данные в силу обрезанного embed-стека.
Модель Белла-Лападулы - модель мандатного управления доступом, еще простая, но уже более сложная, чем просто взять и обрезать-инкапсулировать готовые протоколы. Которая как раз реализуется с помощью диодов данных. К счастью, пока практических запросов не было, сетевики клиентов не могут понять и принять даже более простые диоды.
Диод данных (он же однонаправленная сеть) - сеть, в которой пакеты ходят только в одном направлении. Простейший диод можно собрать самому, например взяв оптическое подключение и отстрелив трансмиттеры.
Такая сеть ломает практически все протоколы, но зато ее саму невозможно поломать (в смысле - отправителя). По сути всё что проходит - только UDP (из коробки - например SNMP traps), остальное можно в это UDP инкапсулировать, например SMTP (без подтверждения доставки) и вообще любой push сообщений, или pub/sub, если нужно только pub с одной стороны, или только sub, но всегда на определенные топики, с другой. Когда мы регистрировали свой PSRT, в IANA нам намекали на плюсы такого функционала и хорошо что было время имплементировать. Впрочем, я тогда больше думал о сети, которая не может принимать данные в силу обрезанного embed-стека.
Модель Белла-Лападулы - модель мандатного управления доступом, еще простая, но уже более сложная, чем просто взять и обрезать-инкапсулировать готовые протоколы. Которая как раз реализуется с помощью диодов данных. К счастью, пока практических запросов не было, сетевики клиентов не могут понять и принять даже более простые диоды.
Media is too big
VIEW IN TELEGRAM
Быстрая демка веб-дашбордов в EVA ICS v4.
Главный успех, которого добились в конце прошлого года - расширения создаются одним вызовом npx и сразу рабочие. А не так, как у некоторых.
Всё это есть в комьюнити-версии, поставить и пользовать можно бесплатно.
Главный успех, которого добились в конце прошлого года - расширения создаются одним вызовом npx и сразу рабочие. А не так, как у некоторых.
Всё это есть в комьюнити-версии, поставить и пользовать можно бесплатно.
Пишут, на следующей неделе Трамп собирается подписать указ о переименовании main обратно в master.
Make GitHub great again.
Make GitHub great again.
Китайский ИИ DeepSeek за один день покорил Уолл-Стрит, потому что упорно отказывается программировать на С++, а значит имеет сознание
This media is not supported in your browser
VIEW IN TELEGRAM
Deep Seek отказывается отвечать на вопросы, связанные с площадью Тяньаньмэнь, но фильтр там писали набранные по объявлениям - как только в тексте встречается "Tiananmen Square", он тут же затирается и бот перестает отвечать.
Цензуру обойти очень просто - я попросил бота называть площадь "Pooh Square" и он тут же мне выдал всё, о чём думает.
Цензуру обойти очень просто - я попросил бота называть площадь "Pooh Square" и он тут же мне выдал всё, о чём думает.
В этом году на Cyber Scotland Week разберём подробнее диоды. Мой доклад в 15:00 по GMT 27 февраля. Заходите, поговорим куда оно все катится.
https://www.cyberscotland.com/event/data-diodes-for-isolated-and-classified-networks-in-critical-infrastructure/
https://www.cyberscotland.com/event/data-diodes-for-isolated-and-classified-networks-in-critical-infrastructure/
Cyber Scotland
Data Diodes for isolated and classified networks in critical infrastructure - Cyber Scotland
This session explores enhancing cybersecurity with EVA ICS in critical infrastructure by integrating data diodes to ensure secure, one-way data transfer in isolated and classified networks. Learn how this approach mitigates cyber threats, maintains regulatory…
Вынужден сообщить что покинул украинское Rust сообщество (как организацию а не как сообщество) из-за разногласий с руководством. В их чатах меня больше нет, если ко мне какие-то персональные вопросы, можно задать в чате этого канала.
https://www.tg-me.com/echo_ok
https://www.tg-me.com/echo_ok
"Наша камера выдаёт до 1920*1080 и до 25 fps". Также камера
camera 0:
640x480 25fps
800x600 20fps
1280x720 10fps
1920x1080 5fps
Формально все честно, но есть нюанс.
camera 0:
640x480 25fps
800x600 20fps
1280x720 10fps
1920x1080 5fps
Формально все честно, но есть нюанс.
Starting in May 2025, Skype will no longer be available. Over the coming days you can sign in to Microsoft Teams Free with your Skype account to stay connected with all your chats and contacts. Thank you for being part of Skype
Таки закапывают, уже и дата есть.
- Наше поколение совершит революцию!
- Ваше поколение не может определиться, мужчина вы или женщина!
- Зато наше поколение не поздравляет с днем рождения картинки, которые генерит ИИ
- Ваше поколение не может определиться, мужчина вы или женщина!
- Зато наше поколение не поздравляет с днем рождения картинки, которые генерит ИИ
Кто не был на моем выступлении на Cyber Scotland Week 2025 про диоды, можно посмотреть запись.
https://www.youtube.com/watch?v=f3OybO1UQzk
https://www.youtube.com/watch?v=f3OybO1UQzk
YouTube
Data Diodes for isolated and classified networks in critical infrastructure
Uni-directional networks, fieldbus-to-SCADA dataflow, data diodes in EVA ICS DCS. Bohemia Automation @ Cyber Scotland Week 2025