
Когда много лет руководишь командами, легко забыть, каково это - просто сесть и закодить что-то самому.
Эта статья о том, как я сделал фэнтези-консоль под DOS, и снова влюбился в программирование.
Типизированный язык программирования
Когда много лет руководишь командами, легко забыть, каково это - просто сесть и закодить что-то самому.
Эта статья о том, как я сделал фэнтези-консоль под DOS, и снова влюбился в программирование.
Представлен резонансный регулятор, метод его анализа в непрерывной области и реализации в виде цифрового фильтра методом согласования нулей и полюсов. Показано стремление в установившемся режиме по заданной частоте амплитуды и фазы к управляющему сигналу. Отмечены особенности фильтра в виде бесконечной добротности, для дискретной системы ограничиваемой лишь разрядностью вычислителя.
Добрый день! Меня зовут Иван Ярцев, я — архитектор автоматизированных систем управления технологическим процессом (АСУ ТП) в ИТ-компании «Северсталь», занимающейся разработкой компонентов для открытой АСУТП.
В этой статье рассмотрим архитектуру программного программируемого логического контроллера (ПЛК), а также самостоятельную сборку среды исполнения из исходников и запуск её из готовых сборок. Самостоятельную сборку опишем на примере российского одноплатного компьютера Repka-pi, имеющего архитектуру aarch64.
Когда-то в отделе разработки встраиваемого ПО в YADRO мне задали вопрос: «А как с этим взаимодействовать?». Речь шла в первую очередь о I2C для QEMU, а не GPIO. И я некоторое время был одержим идеей «прозрачного» взаимодействия с устройствами внутри QEMU — использовать те же библиотеки и инструменты, как и для реальных устройств, что может быть прекраснее? Не какой-то там скрипт для посылки команды по QMP, а знакомый и целостный gpioset/gpioget из библиотеки libgpiod или поставляемые с ядром инструменты из tools/gpio.
Получилось ли это у меня? Да, но какой ценой…
Случайно наткнулся на видео про лифт убийцу на Arduino. В этом видео автор показывает, как некая компания выполнила заказ по разработке и установке лифта для инвалидов. То , что там было сделано, это пример преступной некомпетентности разработчиков.
Приводятся инструкции, которые помогут сделать первые шаги в экспериментах с контроллером в режиме драйвера шагового двигателя SMSD–4.2CAN под маркой НПО «Электропривод». Это настройка контроллера в режиме драйвера и запуск шагового двигателя с помощью программы CANopen Builder Limited v1.0, запуск двигателя из консоли, программ, написанных на языках С++ и Java, в которых потребуется библиотека CHAI для преобразователя интерфейсов USB–CAN ГКМН.468351.017-03 КБ «Марафон».
Первые две части представляют собой расшифровку лекций прочитанных Белобородовым А.В. и Харьюзовым П.Р. в 2024–2025 годах.
Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:
— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.
Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него.
Со всеми его недостатками, инструмент есть в языке и достоин изучения.
В первой статье мы разобрались с базовыми терминами: что такое Embedded Linux, чем он отличается от обычного дистрибутива, из чего состоит, как происходит его загрузка и с помощью каких инструментов всё это можно собрать.
Надеюсь, что те, кого эта тема зацепила, уже обзавелись платой с SoC на борту — без неё часть шагов будет упущена, а удовольствие от результата будет неполным.
Пришло время перейти от теории к практике!
Экспериментируем с компилятором для новой не Фон-Неймановской архитектуры, обещающей повышение энергоэффективности в 100 раз.
Всем привет!
Я обратил внимание, что туториал описанный в интернете, как корректно добавить проект на компьютер от самого производителя Xilinx скудноват. Хотел бы кратко пояснить интересующимся, как быстро и легко это сделать.
Допустим у вас стоит задача, импортировать проект Vitis с одного компьютере на другой, либо вам коллега дал проект, попросил проверить. Что же нужно сделать?
Про настройку отладку ваших stm микроконтроллеров с помощью программатора-отладчика STLINK-V3MINIE через встроенную функцию VCP.
В статье описана настройка инструментов на ОС Windows и ОС Linux, также приведен пример кода для вывода данных себе в терминал на ПК.
Добавляем щепотку векторного программирования в задачки проекта Эйлер. Заодно разбираемся, как эффективно реализовать деление на константу.
Недавно работал в команде, занимавшейся разработкой встроенного ПО. Это ПО в значительной степени основывалось на конечных автоматах, которые десятками были разбросаны по множеству функций. И хотя такая архитектура весьма распространена в разработке встраиваемых систем, в особенности систем без ОС, я задался вопросом: неужели нет способа выразить поток управления более чисто?
Конечные автоматы в нашем коде работают прекрасно, но их понимание и обслуживание зачастую вызывало головную боль. В их работе отсутствовал линейный поток, плюс они требовали мысленного жонглирования флагами, состояниями и переходами, происходящими в функциях опроса.
Меня не покидала мысль: «А не будет ли проще написать логику в виде последовательной программы, ожидающей события и возобновляющей выполнение с места остановки?»
Естественно, в проекте не допускалось использование RTOS, посему традиционный подход применения потоков или систем блокирования для управления конкурентностью не рассматривался. Но я знал, что должна быть некая золотая середина.
В этой статье мы посмотрим, как можно реализовать полную compile‑time валидацию SQL‑запросов на основе схемы базы данных, встраиваемой прямо в код. Без магии, без рантайма, без сторонних тулов. Только стандартный C++ и ваша структура БД. Валидация таблиц, столбцов, типов аргументов и их количества — всё на compile‑time.
Представьте, если бы компилятор сам указывал «такой таблицы нет», «несуществующий столбец», «несовместимые типы» — до запуска программы. Такой подход полностью устраняет «сюрпризы» во время исполнения и исключает класс ошибок, связанных с генерацией SQL во время работы программы. Ваша программа даже не соберётся.
Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.
Я продолжаю свой цикл статей на хабре про детали реализации питона. Сегодня поговорим про субинтерпертаторы, их устройство, прошлое и, надеюсь, светлое будущее.
Под катом будет про: новые питоновские API для ускорение и паралеллизации ваших програм, про управление памятью, про дублирование данных. Ну и много C кода!
Чтобы разобраться в вопросе и рассказать вам, я сделал несколько важных шагов: прочитал почти весь код данной фичи, начал коммить в субинтерпретаторы и взял интервью у автора данного проекта. Интервью доступно с русскими и английскими субтитрами. А еще я добавил кучу контекста прямо в видео. Ставьте на паузу и читайте код.
Если вам такое интересно или целиком незнакомо – добро пожаловать!
Приветствую!
Когда мне сначала просто захотелось, а потом потребовалось и для работы изучить C++, я сильно удивился, что информации касаемо пары C/C++ информации вроде много, но она уж слишком сильно не структурирована и не систематизирована. Одно лишь объяснение указателей мне потребовалось очень много времени искать, потом я понял что такого нет. В интернете есть много объяснений и информации, но это все либо рерайт чужих статей либо просто бессвязный бред где порой кажется что сам человек не проверяет информацию либо просто сам не знает. Да и честно говоря очень мало понятных и рабочих кусков кода с объяснением решения, которое можно было бы протестировать на работоспособность.
Поэтому я решил здесь в данном блоге (Habr идеальное место для этого) собрать в кучу как свои мысли так и свой опыт. А также опыт других людей которые также использовали данный инструмент в своей работе или просто как хобби.
Также стоит отметить, что на мой взгляд для изучения C++ надо начать именно с C, но применять его врятли получится потому что как бы C не был хорош, все же на фоне C++, для современных задач он не полноценен (но тут я сразу уточню, что технология превосходная и я до сих пор удивляюсь как кто-то смог создать подобный язык, с настолько простым и удобным функционалом, который используется и сейчас, но в современной разработке он не функционален, хотя дальше я опишу сферу применения данного языка программирования).
Сегодня у меня в работе самый популярный продукт линейки часов Xiaomi - Mi Band 9.
В данных моделях есть специальный режим мониторинга температуры, который, в случае перегрева выключает часы, сегодня мы посмотрим как это работает и я покажу как изменить поведение системы даже не меняя прошивку, создадим циферблат для управления функционалом на языке LUA
Надо запустить NVRAM на микроконтроллере, где нет возможности дописывать интервалы памяти.
В этом тексте я показал как организовать NVRAM на основе широко распространенного программного компонента LittleFS.
5 июня 2025 года был принят PEP-0734. Судя по информации на официальном сайте, он является продолжением PEP-0554. Этот PEP предлагает добавить новый модуль, interpreters, для поддержки проверки, создания и запуска кода в нескольких интерпретаторах в текущем процессе. А если идти дальше, то он является частью PEP-0684, которые предлагает один GIL на интерпретатор.
Несколько полноценных интерпретаторов работающих рядом. Какие плюсы?
— Один процесс;
— Один тред, но руками можно создавать еще;
— По GILу на интерпретатор, все еще можно получить плюшки настоящей многозадачности по сети;
— Работает с asyncio.
В этой статье вы узнаете как работает эта фича под капотом и в реальном питоне. Приятного чтения!
Всем привет!
Я хочу поделиться с вами, какоднажды мне пришлось оживлять вторую флешку на микроконтроллере (далее «мк»), ну кому не нравится, то назовем это «программируемая система на кристалле». Наверное кто только зашел сюда и хочет более подробно разобраться и все понять, то вам сюда, так как я планирую все подробно рассказать от А до Я.
В данной статье будут подняты такие вопросы:
1. Инициализация QSPI (кто не знает, специальная периферия, позволяющая работать с флешкой на прямую).
2. Инициализация flash. Написание драйвера .
Проделав все пункты, которые будут затронуты в данной статье, вам станет более понятно как и что работает.