Обновить
256K+

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

289,43
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Привет, GT! Я сделал свой луноход и закрыл гештальт

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели12K

Ошибки в заголовке нет: я ведь пришел на Хабр во времена Гиктаймс, не мысля себя ничем большим, кроме как техногиком. Впрочем, и это я себе комплимент сделал, простим меня за нескромность. И пусть GT уже давно нет, но я‑то есть. Что до лунохода, то речь о моей личной версии легендарной игрушки «Модель лунохода программируемая самоходная „Электроника“, он же в девичестве Big Trak, на который у меня ушло, чтоб не соврать, около десяти лет. Эй, подождите, сколько‑сколько?»

Вбить программу

Новости

Российский Альянс RISC-V: четыре двигателя экосистемы открытой архитектуры

Уровень сложностиПростой
Время на прочтение25 мин
Охват и читатели8.7K

Представьте, что вы строите продукт на процессоре, а ключевые правила игры задает один владелец архитектуры. Хотите выпустить свой совместимый чип, добавить нужные расширения или просто не хотите зависеть от поставки конкретного изделия? Но почти везде упираетесь в лицензирование, отсутствие открытого доступа к IP-ядрам, документации и сталкиваетесь с ситуацией когда условия доступа к технологиям могут меняться быстрее, чем ваш цикл разработки. В стабильные времена это воспринимается как "стоимость входа", но в менее дружелюбные - воспринимается как риск, который внезапно становится техническим.

И пусть это звучит как рекламный слоган, но RISC-V предлагает другой базовый принцип: открытый стандарт команд, который можно реализовывать без разрешения на саму основу. Не "бесплатный процессор", а открытая спецификация, вокруг которой можно строить свои ядра и SoC, добавлять расширения и при этом оставаться в рамках общего стандарта. Это дает больше пространства для маневра именно там, где обычно больнее всего: в продуктах, которые выпускаются много лет, в требованиях к безопасности и в зависимости от чужих лицензий.

Но открытость не спасает от хаоса. Если каждый будет делать "почти совместимый" вариант, рынок быстро превратится в зоопарк, где интеграция того или иного решения снова становится подвигом. Российский Альянс RISC-V как раз про то, чтобы этого не случилось: он собирает участников и переводит идею открытой ISA в работающую экосистему, где софт, платы, безопасность, обучение и регуляторные ожидания не живут отдельно. Ставки тут очень практичные: кто умеет договориться о правилах и проверять их на практике, тот быстрее доводит решения до рынка и поддерживает их с наименьшими затратами. 

Именно о том какую роль играет Альянс в становлении целостной экосистемы RISC-V в России и будет наш очередной материал.

Читать далее

Передача и прием данных по лазерному лучу (SDR декодирование BPSK в реальном времени)

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели15K

В этом тексте я попробовал осуществить передачу данных по лазерному лучу буквально на основе подручных материалов.

В тексте представлены основные идеи и решения для передачи и приёма битового потока c помощью BPSK модуляции.

Читать далее

Как на самом деле устроен кэш в controller-runtime, и почему ваш оператор не кладёт apiserver

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели9.9K

Kubernetes давно стал повсеместной платформой, а написать к нему собственный оператор сегодня — задача нескольких часов. Стандартный путь — kubebuilder на основе controller-runtime: scaffold проекта, типы, реконсайлер. В типовых сценариях этого вполне достаточно. Но как только нагрузка растёт или поведение оператора начинает расходиться с ожиданиями, всплывает целый класс edge-кейсов, причина которых — непонимание того, как controller-runtime устроен внутри. Если вы пишете контроллеры для Kubernetes, этот материал поможет собрать целостную mental model и заранее избежать дорогих сюрпризов в проде.

В этой статье разберём внутреннее устройство controller-runtime и на его примере увидим, какие архитектурные решения лежат в основе самого Kubernetes. Начнём с того, как контроллеры читают объекты из Kubernetes API.

Есть распространённое заблуждение, что r.Get() в Reconcile ходит прямо в kube-apiserver, List() каждый раз смотрит «живую» картину мира, а после Update() можно сразу перечитать объект и увидеть свежее состояние. На практике всё наоборот: controller-runtime живёт на локальной копии данных через LIST+WATCH. Благодаря этому чтение в реконсайле обходится почти бесплатно и не нагружает control plane даже при сотнях вызовов в секунду — но ценой этой модели становится то, что оператор может внезапно съедать гигабайты памяти, делать скрытые O(n)-сканы и регулярно упираться в stale reads.

Статья рассчитана на тех, кто уже писал операторы на Go с использованием controller-runtime, но хочет собрать целостную mental model, а не жить с набором частных наблюдений. Фокус будет на практических последствиях для production-кластеров: память, трафик, консистентность чтения и поведение реконсайла.

Читать далее

Я сконструировал собственный аппарат для электроэпиляции

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели11K

Автор рассказывает, как самостоятельно создал аппарат для электроэпиляции, с какими сложностями столкнулся и как решал проблемы разработки.

Читать далее

Как за 300 рублей и 6 часов получить прошивку уровня синьора?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели32K

Полгода прошло с первой статьи https://habr.com/ru/articles/969230/ , вариометр летает и сигнализирует о наборе высоты и о потере высоты, пилоты довольны. Код сыроват конечно. EMA фильтр стоит, линейная архитектура стоит, записи высот в полете нет и экспорта нет. Как-то работает. Но можно качественнее сделать. А вот когда лень переписывать с нуля, знакомая херня? Но решился.

Развернул Hermes Agent, закинул на аккаунт DeepSeek4 40 юаней, это 430 рублей, и начал диалог в терминал. Работал в диалоге с консолькой, ну просто магия. Без промптов. "Сделай FSM вместо ифов, добавь зуммер в стиле Браунигер, компенсацию акселерометра по трём осям с учётом гравитации, а не по модулю, трек полёта на флешпамять кольцевым буфером с CRC, WiFi экспорт через вебморду."

Прошиваем по-русски

Реализация модульной архитектуры прошивки методом ручной динамической линковки на примере STM32

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели14K

Рассмотрен подход к созданию управляемого "бэкдора", позволяющего подгружать функции без остановки и перезагрузки. С помощью манипуляций с линкер-скриптом и средств языка C создаются "точки расширения" в прошивке, позволяющие в будущем внедрять новые функциональные модули без пересборки и перезаписи всей программы. Такой подход может быть полезен при разработке отказоустойчивых систем для оптимизации жизненного цикла встроенного ПО, так как позволяет заложить гибкость при непредвиденных модификациях.

Читать далее

Как я пришёл к идее создания системы приложений и разработал поисковик и мессенджер

Время на прочтение23 мин
Охват и читатели12K

Я Михаил — создатель и главный разработчик системы вэб приложений. Второй участник проекта — Владимир — разработчик мобильных версий и ответственный за SEO оптимизацию.

Читать далее

Делаем Bluetooth-адаптер для USB-клавиатуры

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели20K

Так бывает, что в твоей клавиатуре всё нравится, кроме провода, который не добавляет эстетики и удобства. Поэтому у меня возникло желание сделать адаптер для превращения своей проводной клавиатуры в беспроводную.

Я уже предпринимал такую попытку в одной из своих статей. Описанный там адаптер представлял больше учебный интерес, чем имел практическое применение, так как прошивка представляла собой полноценный Linux, кастомизированный скриптами, и использовала слишком мощное (Raspberry Pi Zero 2 W) для такой простой задачи железо.

К той статье были написаны справедливые замечания, а сейчас я хочу их исправить.

Читать далее

Структуры данных на практике. Глава 14: Обработка строк и эффективность использования кэша

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8.4K

«В Computer Science есть только две сложные вещи: инвалидация кэша и придумывание названий», — Фил Карлтон

Разрыв в производительности

Наш парсер логов обрабатывал 800 тысяч строк в секунду. Нам требовалось 3 миллиона строк в секунду. От нужного нам показателя мы отставали в 3,75 раза.

Задача инструмента заключалась в парсинге строк логов в реальном времени, извлечении временных меток, уровней логов и сообщений из миллионов строк в секунду. Обработка миллиона строк логов в текущей реализации требовала 1,25 секунды — слишком долго для анализа в реальном времени.

Профилировщик показывал 85 миллионов промахов кэша. Для обработки строк это казалось слишком большим показателем.

В реализации использовались стандартные строковые функции C — простые, читаемые, но, очевидно, слишком медленные.

Я переписал этот код, добавив обработку строк с учётом кэша. Результаты были такими:

В 4,5 раза быстрее и в 7 раз меньше промахов кэша.

В этой главе мы поговорим о том, как эффективно использовать кэш при обработке строк.

Читать далее

Расширяем OpenPLC с CAN bus

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.2K

Эта статья является продолжением серии для демо-проекта на базе OpenPLC. В предыдущей части были рассмотрены программирование Raspberry Pi Pico W в режиме Modbus RTU/TCP Slave, управление реле через Ladder-диаграмму. Теперь пришло время добавить в схему CAN-шину.
Что добавляется в этой части: узел Pico W получает модуль MCP2515 и подключается к CAN-шине. Для этого в OpenPLC Editor написан пользовательский функциональный блок, который работает поверх ардуино-библиотеки и предоставляет доступ к CAN-шине из обычной Ladder-программы через глобальные переменные-маркеры %MW.

Читать далее

Структуры данных на практике. Глава 13: Структуры данных без блокировок

Время на прочтение9 мин
Охват и читатели9.4K

«Блокировки — это goto конкурентного программирования», — Морис Херлихи

Проблема 60%

Наша система логгинга тратила 60% своего времени на ожидание снятия блокировок. Не на выполнение полезной работы, только на одно ожидание.

Восемь ядер, пытавшихся записывать сообщения логов, имели общий кольцевой буфер. Реализация была простой: буфер защищался мьютексом. При высокой нагрузке, когда все ядра записывали логи одновременно, профилировщик демонстрировал ужасный паттерн: 60% тактов CPU тратилось на операции с мьютексом.

Пропускная способность: 850 тысяч сообщений в секунду. В восьмиядерной системе она должна быть гораздо выше.

«Можно ли улучшить ситуацию, отказавшись от блокировок?», — спросил меня мой менеджер во время ревью производительности.

Этот вопрос привёл к полной смене архитектуры...

Читать далее

Потоковая запись ADC семплов на STM32

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели13K

В этом тексте я показал как настроить потоковую запись ADC семплов на микроконтроллере STM32.

ADC модуль это основа любого электронного измерения. Основа любого DMM. Всё что за корпусом микроконтроллера - это аналоговый мир. ADC это портал который позволяет аналоговым сигналам просачиваться в мир цифры.

Читать далее

Ближайшие события

Сравнительный анализ RISC-V микропроцессоров picorv32 и scr1 при использовании в FPGA

Уровень сложностиСредний
Время на прочтение37 мин
Охват и читатели11K

Разработчики FPGA часто сталкиваются с необходимостью внедрения в свой проект софт процессора. Когда-то давно мы могли использовать проприетарные Altera NIOS или Xilinx MicroBlase. Но время идет. В последние годы наблюдается устойчивый тренд перехода производителей ПЛИС в сторону поддержки архитектуры RISC-V.

RISC-V это открытая, расширяемая и бесплатная архитектура набора команд (ISA), которая не требует лицензионных отчислений. Оба FPGA вендора Altera и Xilinx уже довольно давно предлагают и активно разрабатывают поддержку RISC-V в своих новых продуктах, теперь это уже софт процессоры NIOS V и MicroBlase V.

Однако, зачем использовать всё ещё проприетарные ядра, если можно использовать Open Source?

В этой статье я сравниваю два Open Source RISC-V микропроцессора:
1) picorv32 от компании YoSys (https://github.com/YosysHQ/picorv32) и
2) scr1 от Syntacore (https://github.com/syntacore/scr1)

Что буду сравнивать? Производительность софт ядер и занимаемые ресурсы в FPGA.
Как правильно сравнить? Использовать единую тестовую программу написанную на языке C, например Dhrystone, и скомпилированную в бинарный файл, или HEX файл и запускаемую в двух архитектурно одинаковых SOC, но с разными ядрами RISC-V.

Читать далее

Глухарь ESPшный — мемуары охотника

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели27K

> Названием «глухарь» птица обязана известной особенности токующего в брачный период самца утрачивать чуткость и бдительность, чем часто пользуются охотники

Защита программного кода — извечная битва меча и щита. Одни люди стараются создать устойчивые ко взлому программные и аппаратные продукты, другие пытаются эти решения сломать. Но что происходит, когда команда, специализирующаяся на взломе, выпускает на рынок свой продукт? Можно ли в этих обстоятельствах разработать устройство, защиту которого невозможно обойти?

Сегодня мы посмотрим внутрь флеш-картриджа для Nintendo Switch под названием MIG Switch и раскроем тайну его происхождения! Ну и в качестве побочного квеста победим защиту одного из самых современных микроконтроллеров на рынке.

Интересно? Продолжаем!

Шестибитный процессор с робкими картинками

Уровень сложностиСложный
Время на прочтение76 мин
Охват и читатели13K

Итак, в первой части я смело пообещал вторую статью «из одних картинок», но… мой маленький часовой кукушонок настолько похужал и возмудел за прошедшее время, что пришла пора знакомиться с ним, можно сказать, заново. Оптимизация не пощадила практически ничего, и, хотя я там же в камментах бо́льшую часть перемен отразил — всё равно надо начать с того, что же в сумме у нас получилось.

Нырнуть в кроличью нору

Тихий перфоратор для соседа: как спроектировать тактовый генератор с распределенным спектром

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели16K

Представьте, что вы начали слушать новый альбом любимой группы, а за стеной активизировался сосед с перфоратором. Примерно так же «чувствуют себя» компоненты на плате смартфона, контроллера или роутера, которые соседствуют с высокочастотным тактовым генератором. Чем выше скорость передачи данных — тем сильнее шум соседского перфоратора: электромагнитные помехи. Обычно помогает экранирование или фильтрация определенных частот, но у этих способов есть свои недостатки и ограничения. 

Есть более элегантное решение — тактовый генератор с распределенным спектром (ТГРС). Мощность генератора остается прежней, а вот шум удается заметно снизить. Меня зовут Павел Кириченко, я автор курса «Схемотехника для начинающих» и ведущий инженер по разработке SoC в YADRO. В статье разберемся, как спроектировать ТГРС для последовательного интерфейса и рассмотрим два подхода к его архитектуре: с переменным коэффициентом деления и c фазовым интерполятором.

Читать далее

Разработка RC-машинки с BLDC. Подход с нуля

Время на прочтение12 мин
Охват и читатели18K

Добрый день, уважаемый читатель. Как и в других моих статьях, я решил что-то собрать полностью с нуля, а именно – машинку на радиоуправлении.

Будет описан мой пройденный путь: от печати готового проекта до разработки и печати новой платформы; от разработки первой версии печатной платы для использования коллекторного DC мотора до реализации управления бесколлекторным BLDC мотором с датчиками холла; от локального управления до реализации полудуплексного обмена данными на расстояние в сотни метров с передачей телеметрии.

Вновь потратил на разработку пару лет, но никуда не спешил. Это лишь мое хобби.

«Long story short…»

О преподавательских работах в Азербайджане, с фотографиями

Время на прочтение2 мин
Охват и читатели9.2K

Получил письмо от декана азербайджанского университета ADA University в Баку с просьбой распостранить информацию, что они нанимают большое количество преподавателей. Декан кстати из России, уроженец Дагестана. В университете у них висят портреты как западных деятелей, так и российских - Чехова, Менделеева итд. Многие из преподавателей - азербайджанцы, которые ездили учиться в США и вернулись поднимать родину. Но есть и много иностранцев. Из студентов процентов 70% владеют русским, но 30% не владеют, плюс есть толика иностранных студентов, поэтому официальный язык всего английский. Но во время моего семинара два года назад мы переходили на русский по необходимости, как и разумеется студенты говорят на азербайджанском друг с другом и владеющим азербайджанским преподавателям.

Читать далее

Часы на ВЛИ ИВ-18

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели12K

Почему выбрал VFD и конкретно ИВ-18? Во‑первых, с детства нравились ВЛИ, особенно на всяческих аудио‑/видеомагнитофонах («Маяк-232-стерео», «Электроника ВМ-12» и подобные). Во‑вторых, у меня как раз появилась пара таких «трубок» и, коль скоро с ними «вживую» дела иметь ещё не приходилось, то интересно было их «запустить». В‑третьих, к тому моменту была уже освоена «технология» работы с газоразрядными индикаторами (они же — nixie, ИН-12 и подобные) и выглядело для меня всё как «ну, не должно быть сильно сложнее».

Читать далее
1
23 ...