Pull to refresh
-17
0

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

Send message

Создание системы управления электродвигателями в наноспутнике

Level of difficultyMedium
Reading time5 min
Views2.7K

Целью работы является создание системы управления электродвигателями в наноспутнике. Установка положения спутника в пространстве осуществляется с помощью электродвигателей, снабженных маховиками. В докладе рассмотрен один из возможных алгоритмов управления электродвигателем.

Данная статья является продолжением первой статьи, в которой было рассмотрено создание печатной платы для управления электродвигателем и описаны основные моменты алгоритма управления PMSM Control, в этой статье больше внимания уделено самому алгоритму и его программной реализации.

Читать далее
Total votes 8: ↑6 and ↓2+8
Comments7

Автоматическое Обновление Версии Прошивки

Level of difficultyEasy
Reading time6 min
Views4.2K

В программировании микроконтроллеров новые сборки появляются каждый день.

Какие-то сборки уходят в релиз, а какие-то в циркулируют на разных электронных платах внутри предприятия.

Как отличать прошивки между собой? Как понять, какая прошивка новее, а какая старее?

Проблема в том, что вручную обновлять номер версии прошивки очень утомительно.

В тексте представлен механизм автоматического увеличения версии прошивки

Подробности...
Total votes 14: ↑7 and ↓7+3
Comments51

Устройство GPIO-драйверов в Linux

Level of difficultyMedium
Reading time26 min
Views6.4K

Рассмотрим, как устроены GPIO-драйверы в Linux, и почему это сделано именно так. Поймем, почему для простого мигания светодиодом в этой операционной системе надо пройти через N слоев абстракции.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments18

PCI Express в ПЛИС V-й серии Intel: основы интерфейса и особенности аппаратных ядер

Reading time16 min
Views17K

Введение


Знакомый многим интерфейс PCI Express или PCIe был доступен разработчикам систем на ПЛИС уже тогда, когда он только начинал распространяться в цифровой технике. В это время существовало решение, в котором программное ядро подключалось ко внешней микросхеме физического уровня [5]. Это позволяло создавать одноканальную линию PCIe со скоростью 2,5 гигатранзакций в секунду. В дальнейшем, благодаря развитию технологий, физический уровень интерфейса перекочевал в аппаратные блоки PCIe внутри самих ПЛИС; количество возможных каналов увеличилось до 8, а в ряде новых микросхем — и до 16; вслед за современными стандартами выросли возможные скорости передачи данных.

В то же время, в русскоязычных источниках по-прежнему затруднительно найти вспомогательные материалы по работе с аппаратными ядрами современных ПЛИС, не так и много информации доступно по самому интерфейсу PCIe. Руководство к аппаратным ядрам PCI Express подразумевает, что разработчик уже ознакомился со стандартом и понимает основы передачи данных между устройством и персональным компьютером (ПК). Однако обилие информации в самом стандарте PCIe не дает сразу же разобраться в том, какие шаги необходимо предпринять, чтобы успешно передать данные от устройства в память ПК или обратно. Чтобы получить более полную картину, немалую часть сведений приходится собирать по крупицам из разных источников. Для разработчиков систем на ПЛИС фирмы Intel сложность также заключается в том, что большинство доступных материалов и статей описывают работу с аппаратными ядрами ПЛИС фирмы Xilinx.

В данной статье автор постарается рассказать о том, что необходимо знать разработчику систем на ПЛИС для работы с интерфейсом PCI Express; рассмотрит особенности работы с аппаратными ядрами PCI Express ПЛИС V-й серии фирмы Intel в варианте Avalon-ST.
К основной части
Total votes 33: ↑33 and ↓0+33
Comments20

Структура драйвера Linux для одноплатного компьютера

Level of difficultyEasy
Reading time7 min
Views13K

Здраствуйте меня зовут Дмитрий. Недавно я написал статью как собрать прошивку для одноплатного компьютера Orange PI i96 с нуля. Если вы не читали то очень советую. И там я упоминал что для того чтобы собрать прошивку на новом ядре Linux, мне пришлось переписать драйверы с учетом архитектуры Device Tree, которую использует современное ядро. В этой статье я опишу как я это сделал.

Читать далее
Total votes 34: ↑33 and ↓1+35
Comments5

Buildroot — часть 1. Общие сведения, сборка минимальной системы, настройка через меню

Reading time7 min
Views69K

Введение


В данной серии статей я хочу рассмотреть систему сборки дистрибутива buildroot и поделиться опытом её кастомизации. Здесь будет практический опыт создания небольшой ОС с графическим интерфейсом и минимальным функционалом.


Прежде всего, не следует путать систему сборки и дистрибутив. Buildroot может собрать систему из набора пакетов, которые ему предложили. Buildroot построен на make-файлах и поэтому имеет огромные возможности по кастомизации. Заменить пакет на другую версию, добавить свой пакет, поменять правила сборки пакета, кастомизировать файловую систему после установки всех пакетов? Всё это умеет buildroot.


В России buildroot используется, но на мой взгляд мало русскоязычной информации для новичков.


Цель работы — собрать дистрибутив с live-загрузкой, интерфейсом icewm и браузером. Целевая платформа — virtualbox.


Зачем собирать свой дистрибутив? Зачастую нужен ограниченный функционал при ограниченных ресурсах. Ещё чаще в автоматизации нужно создавать прошивки. Приспосабливать дистрибутив общего назначения, вычищая лишние пакеты и превращать его в прошивку путь более трудоёмкий, чем собрать новый дистриб. Использование Gentoo тоже имеет свои ограничения.


Buildroot система очень мощная, но она ничего не сделает за вас. Она может лишь дать возможности и автоматизировать процесс сборки.


Альтернативные системы сборки (yocto, open build system и прочие) не рассматриваются и не сравниваются.

Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments14

Zynq 7000. Собираем Linux и RootFS при помощи Buildroot

Reading time10 min
Views14K

Продолжаем изучение SoC Zynq 7000 и разбираемся с тем, как организовать подготовку, сборку Linux для отладочной платы QMTech. В прошлой статье я рассмотрел процедуру быстрой сборки (без кастомизации) основных компонентов встраиваемой системы Linux и шаг за шагом прошли путь до приглашения к вводу в работающей ОС. Согласитесь, что если вы новичок - то работа была выполнена колоссальная! К счастью, всю эту работу можно автоматизировать! И в этой статье я хотел бы уделить внимание этому вопросу и рассказать как это сделать с помощью Buildroot. Эту статью можно считать логическим продолжением общего повествования о начале работы с Linux на Zynq.

Что такое Buildroot, как им пользовать и чем он может быть полезен для нас - я постараюсь раскрыть в этой статье, без углубления в дебри, но в достаточной степени, чтобы вы могли повторить за мной всю последовательность действий и получить желаемый результат.

Всем интересующимся - добро пожаловать под кат!

Читать далее
Total votes 11: ↑10 and ↓1+14
Comments12

Zynq. Передача данных между процессорным модулем и программируемой логикой

Reading time19 min
Views18K
Как и обещал в предыдущей статье (Что такое Zynq? Краткий обзор), поговорим о передаче данных между процессорным модулем и программируемой логикой. В предыдущей статье упоминалось четыре способа передачи данных, в статье будут рассмотрены два способа, которые нашли большее применение. Подробности под катом. Осторожно, много картинок!
Читать дальше →
Total votes 15: ↑14 and ↓1+21
Comments13

Как я пишу на C по состоянию на конец 2023 года

Level of difficultyMedium
Reading time9 min
Views28K
Этот год выдался переломным для моих навыков по программированию на C. Можно сказать, что я пережил слом парадигмы, что побудило меня пересмотреть привычки и весь стиль программирования. Это была крупнейшая метаморфоза моего личного профессионального стиля за долгие годы, так что я решил написать этот пост в качестве «мгновенного снимка» моих нынешних суждений и профессионального существования. Эти перемены во многом пошли на пользу моей продуктивности и организованности, поэтому, при всей субъективности того, что я скажу, в посте наверняка будут описаны и вполне объективные вещи. Я не утверждаю, что на С нужно писать именно так, как рассказано ниже, а я сам, выступая контрибьютором некоторого проекта, придерживаюсь того стиля, который там заведен. Но описанные ниже приёмы, как оказалось, очень пригодились мне при работе.
Читать дальше →
Total votes 38: ↑26 and ↓12+24
Comments91

Красота не только в коде — как оформлять репозиторий

Level of difficultyEasy
Reading time7 min
Views28K

Сегодня мы затронем сторону, отличную от написания кода. Мы займемся оформлением и написанием документации, как правильно делать коммиты и как оформлять код.

Все, что вы увидите в данной статье, будет касаться прочитанных мною материалов и полученного опыта.

В мире разработки программного обеспечения правильное оформление документации играет ключевую роль в обеспечении ясности и понятности проекта. Особенно важным этапом в этом процессе является создание и поддержание README файлов в Git репозиториях. README файлы - это первое, что увидит разработчик, приступая к работе с проектом, и хорошо оформленная документация может значительно упростить процесс взаимодействия с кодом.

В данной статье мы рассмотрим ключевые аспекты оформления документации в Git репозитории, обсудим лучшие методики и практики для создания качественной документации. Независимо от того, являетесь ли вы опытным разработчиком или новичком в области Git, эта статья поможет вам создать четкую, структурированную и информативную документацию для вашего проекта. Погружайтесь в мир оформления документации, улучшайте ваши проекты и делитесь своими идеями с сообществом разработчиков Хабр!

Узнать, как оформлять репозитории
Total votes 21: ↑14 and ↓7+13
Comments42

Фильтр Калмана — Введение

Reading time5 min
Views261K
Фильтр Калмана — это, наверное, самый популярный алгоритм фильтрации, используемый во многих областях науки и техники. Благодаря своей простоте и эффективности его можно встретить в GPS-приемниках, обработчиках показаний датчиков, при реализации систем управления и т.д.

Про фильтр Калмана в интернете есть очень много статей и книг (в основном на английском), но у этих статей довольно большой порог вхождения, остается много туманных мест, хотя на самом деле это очень ясный и прозрачный алгоритм. Я попробую рассказать о нем простым языком, с постепенным нарастанием сложности.
Читать дальше →
Total votes 157: ↑151 and ↓6+145
Comments50

IEEE 1588 Precision Time Protocol (PTP)

Reading time6 min
Views97K
Много статей написано про всем известный Network Time Protocol (NTP), в некоторых из них упоминается про Precision Time Protocol, который якобы позволяет добиться точности синхронизации времени порядка наносекунд (например, тут и тут). Давайте разберемся, что этот протокол собой представляет и как достигается такая точность. А также посмотрим результаты моей работы с данным протоколом.
Подробности
Total votes 38: ↑37 and ↓1+36
Comments11

«Хороший коммит» и «ваш коммит»: как написать идеальный комментарий в Git

Reading time8 min
Views17K

Привет, Хабр!

Мы в beeline cloud не только создаем современные цифровые продукты, но и обучаем разработке в облаке студентов нашего курса Base Cloud DevOps. Однако выстроить эффективный процесс невозможно без знания основных инструментов. Один из них — система контроля версий Git. Перевели для вас статью, которая поможет извлечь из работы с этой утилитой еще больше пользы.

Когда-то я и не задумывался о существовании каких-то правил для составления комментариев к коммитам, но потом любознательность взяла верх. Мне казалось, что простых сообщений наподобие «добавлена функция 2», «исправлена ошибка на панели навигации» или просто «foo» вполне достаточно. Однако моя уверенность в том, что комментарии к коммитам, как правило, никто не читает, оказалась ошибкой. Хорошо составленные commit messages очень важны, они помогают нам самим в будущем извлечь максимальную пользу из своих стараний и продуманности.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments34

Подробности реализации протокола синхронизации времени PTPv2

Reading time13 min
Views9.9K
Введение

Концепция построения «Цифровой подстанции» в электроэнергетике требует синхронизации с точностью 1 мкс. Для проведения финансовых транзакций также требуется точность в мкс. В этих приложениях точности времени NTP уже недостаточно.

Протокол синхронизации PTPv2, описанный стандартом IEEE 1588v2, позволяет добиться точности синхронизации в несколько десятков наносекунд. PTPv2 позволяет отправлять пакеты синхронизации через L2 и L3-сети.

Основными областями, где применяется PTPv2, являются:

  • энергетика;
  • контрольно-измерительное оборудование;
  • оборонно-промышленный комплекс;
  • телеком;
  • финансовый сектор.

В данном посте разбирается, как работает протокол синхронизации PTPv2.

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

Зачем необходим?

На данный момент в СТО 34.01-21-004-2019 ПАО «Россети» и в СТО 56947007-29.240.10.302-2020 ПАО «ФСК ЕЭС» содержатся требования к организации шины процесса с обеспечением синхронизации времени по PTPv2.

Связано это с тем, что к шине процесса подключаются терминалы релейной защиты и устройства измерения, которые через шину процесса, при помощи так называемых SV-потоков (multicast-потоки), передают мгновенные значения тока и напряжения.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments6

Zynq 7000. Собираем Linux для платы QMtech

Reading time21 min
Views26K

В этой статье я решил сделать небольшое отступление от общей линии повествования и зарулю на дорогу Linux. За то непродолжительное время, что я работаю с Zynq 7000, в тематических чатах я видел много вопросов насчет того, как запустить Linux на отладке. Я в общем-то, недолго думая, сел проштудировал документацию, примеры и завёл его своими руками под ту плату, что у меня есть в распоряжении. После этого я решил обобщить свои знания по этому вопросу и описать процедуру сборки, подготовки загрузочного образа Linux, который включает в себя U-boot, Device Tree Source, RootFS, и само ядро Linux. В дополнение к этому, я решил немного усложнить задачу и выяснил, как можно поморгать светодиодом подключенным к PL-части устройства из пространства пользователя Linux.

Обо всём этом я написал в этой статье. Всем интересующимся - добро пожаловать под кат.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments17

Графическое программирование конечных автоматов для Arduino. Часть 1

Level of difficultyMedium
Reading time8 min
Views9.6K

Как только сложность программы выходит за пределы "Hello Word!", у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них - удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.

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

Все это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с легкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS - операционная система реального времени. Если один автомат замер в ожидании отсчета времени, то остальные автоматы проекта будут продолжать работать.

Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции.

Читать далее
Total votes 13: ↑12 and ↓1+14
Comments13

Что такое Zynq? Краткий обзор

Reading time16 min
Views45K
В далеком 2011 году компания Xilinx представила свои первые микросхемы SoC (System On Chip) — Zynq-7000. SoC Zynq сочетает в себе программируемую логику, процессорный модуль и некоторую периферию. Статья не является максимально полным описанием SoC Zynq, а лишь отражает те или иные характеристики, с которыми пришлось столкнуться при разработке устройств на базе SoC Zynq.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments18

Книга «Красивый C++: 30 главных правил чистого, безопасного и быстрого кода»

Reading time16 min
Views11K
image Привет, Хаброжители!

Написание качественного кода на C++ не должно быть трудной задачей. Если разработчик будет следовать рекомендациям, приведенным в C++ Core Guidelines, то он будет писать исключительно надежные, эффективные и прекрасно работающие программы на C++. Но руководство настолько переполнено советами, что порой трудно понять, с чего начать. Начните с «Красивого C++»!

Опытные программисты Гай Дэвидсон и Кейт Грегори выбрали 30 основных рекомендаций, которые посчитали особенно ценными, и дают подробные практические советы, которые помогут улучшить ваш стиль разработки на C++.

Для удобства книга структурирована в точном соответствии с официальным веб-сайтом C++ Core Guidelines.
Читать дальше →
Total votes 10: ↑7 and ↓3+8
Comments2

ESP32 отладка с помощью JLINK

Reading time7 min
Views12K

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

Почему, зачем, для кого написана эта статья?

Для кого? Данная статья написана для тех, кто хочет поглубже познакомиться с микроконтроллерами семейства ESP32, а для более глубокого знакомства вам определенно не хватит отладки через терминал.

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments11

Умный дом на минималках

Reading time10 min
Views19K

В последнее время я всё чаще задумывался на тему реализации простых сценариев умного дома. Хотелось сделать просто, без голосового управления, минимальными вложениями для начала. Мои мечты почти разбились о суровую реальность протоколов взаимодействия умных устройств. И, о чудо, я сумел сформулировать запрос для себя правильно, Google помог мне найти «умную розетку с открытым HTTP API».

Что получилось из связки: умная розетка, китайский планшет на Android 11, роутер - можно прочитать под катом.

Читать далее
Total votes 11: ↑9 and ↓2+12
Comments29
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity