Pull to refresh
11
-6
Стулов Тихон Сергеевич @Kudesnick33

Разработчик встраиваемых систем

Send message

Динамический полиморфизм с использованием std::variant и std::visit

Reading time 13 min
Views 34K

Динамический полиморфизм (или полиморфизм времени выполнения) обычно связан с v-таблицами и виртуальными функциями. Однако в этой статье я покажу вам современную технику C++, которая использует std::variant и std::visit. Этот метод C++17 может предложить вам не только лучшую производительность и семантику значений, но и интересные паттерны проектирования.

Читать далее
Total votes 16: ↑14 and ↓2 +12
Comments 4

CG Charger BQ: как TP4056, только на стероидах (BQ25895)

Level of difficulty Medium
Reading time 16 min
Views 13K


Сегодня на нашем операционном столе очередное гениальное изобретение компании ClimateGuard — девайс под не менее гениальным названием CG Charger BQ. Расшифровке того, что же всё-таки скрывается под этими загадочными буквами BQ (что означают буквы CG постоянные читатели моего блога уже знают) и посвящена эта статья.

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

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья…
Читать дальше →
Total votes 57: ↑56 and ↓1 +55
Comments 40

Как я поднял свой сервер без возможности выставить для него статический IP адрес

Level of difficulty Easy
Reading time 3 min
Views 35K

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

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

Читать далее
Total votes 71: ↑34 and ↓37 -3
Comments 100

Графические оболочки FFmpeg

Level of difficulty Easy
Reading time 6 min
Views 27K


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

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

FFmpeg — изначально консольная утилита. Но её популярность крайне высока. Поэтому появляются всё новые варианты графических оболочек для FFmpeg, чтобы доступ к инструменту получили абсолютно все пользователи.
Читать дальше →
Total votes 107: ↑107 and ↓0 +107
Comments 76

База по SPI NOR FLASH

Level of difficulty Easy
Reading time 2 min
Views 4.2K

Еще недавно была моя публикация о программе IMSProg — программаторе для CH341a в Linux, а различные идеи продолжают приходить в голову. Происходит это во многом благодаря вашим комментариям к статье.

Микросхемы энергонезависимой памяти с последовательным интерфейсом SPI NOR FLASH все чаще применяются в различных микропроцессорных и микроконтроллерных устройствах от материнских плат до приставок для приема цифрового телевидения. Не могу сказать, что эта тенденция мне нравится — выход из строя устройств по причине разрушения информации BIOS в связи с применением этого типа микросхем многократно увеличился, но остановить процесс (прогресс?) невозможно.

Существует несколько десятков фирм, изготавливающих SPI NOR FLASH. У каждой из фирм несколько десятков моделей микросхем. При подключении такой микросхемы к программатору, чаще всего, сначала происходит подача на микросхему команды 9Fh, в ответ на которую микросхема отдает программатору несколько байт информации JEDEC ID — уникального числа, первый байт которого является кодом производителя, второй — модификацией микросхемы, а третий — кодом емкости (объема) микросхемы. Сравнивая эти три байта с таблицей софт программатора определяет модель микросхемы и выставляет соответствующие параметры для чтения, записи или стирания микросхемы.

Многие из производителей софта для программаторов безнадежно отстают от расширяющегося ассортимента и новые микросхемы не определяются программатором. Поэтому возникла идея объединения информации о SPI NOR FLASH в одном месте. В результате получилась очень большая таблица:

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

Основы аналоговой электроники: усилитель Лина

Level of difficulty Medium
Reading time 8 min
Views 20K

Привет, Хабр! Сегодня мы познакомимся с топологией Лина, на основе которой построено множество аналоговых микросхем и транзисторных усилителей звуковой частоты. И, разумеется, соберём действующий усилитель на семи транзисторах.
Заодно узнаем, как устроен токоограничивающий диод
Total votes 59: ↑56 and ↓3 +53
Comments 8

Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64

Level of difficulty Hard
Reading time 63 min
Views 12K

Привет всем.

В данной статье мы немного проанализируем код Windows XP, a также соберем калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми я столкнулся в процессе сборки и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд приложения calc.exe.

Всем приятного прочтения!

Читать далее
Total votes 98: ↑98 and ↓0 +98
Comments 48

Теория типов

Level of difficulty Medium
Reading time 43 min
Views 28K

Мы так привыкли к типам, что редко задаёмся вопросом, что же они такое на самом деле? А главное - почему возникла необходимость в их использовании? Этот поверхностный обзор сделан для того, чтобы продемонстрировать, как типы и другие связанные абстракции являются следствием из обобщения условий различных задач.

Что можно узнать из этой статьи?
Total votes 75: ↑75 and ↓0 +75
Comments 70

Разработка расширяемого алгоритма строкового калькулятора

Level of difficulty Medium
Reading time 10 min
Views 2.5K

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

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 11

USB на регистрах: составные устройства

Reading time 13 min
Views 8.1K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device


Вот мы познакомились со всеми базовыми типами конечных точек, пришло время разработать какое-нибудь полезное устройство. Для примера пусть это будет программатор-отладчик STM-ок, работающий через стандартный UART bootloader.

Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 8

Малоизвестные возможности языка C

Reading time 4 min
Views 24K

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.

Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть свои темные уголки).

Читать далее
Total votes 87: ↑83 and ↓4 +79
Comments 22

Треугольник качества проекта = треугольник вины менеджера

Level of difficulty Easy
Reading time 5 min
Views 6.3K

Кто я: меня зовут Науменко Алексей и я руководитель ИТ-проектов с более чем 5-летним стажем и с профессиональным образованием в области ИТ-менеджмента.

Цель статьи: Я описываю свой опыт в реализации ИТ-проектов для повышения своей сознательности и профессионализма, а также для обмена опытом с представителями профессионального сообщества, для личного роста в профессиональной сфере.

Ядро моего представления о проблемах и решениях ИТ-проектов сводится к социальной инженерии. Кадры решают все, и ключи повышения эффективности ИТ-проекта кроются не в технологиях, а в личностях, отношениях между ними и сообществах.

Как читать материал: я нацелен тезисно показать границы проблем проектного управления и возможные варианты снятия проблем. Всевозможные допущения и исключения из правил не описаны здесь, чтобы сконцентрироваться на главном правиле, не отвлекаясь на исключения из него.

Читать далее
Total votes 8: ↑5 and ↓3 +2
Comments 9

Код-ревью: cookbook от Google

Level of difficulty Easy
Reading time 16 min
Views 12K

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

От автора перевода: в Google вместо PR (Pull Request) принято использовать аббревиатуру CL (ChangeList — список изменений). Остальные термины, на мой взгляд, понятны и без пояснений. Чтобы разбавить кучу текста, в качестве разделителей разделов использованы генерации на тему "код-ревью от разных мультипликаторов" от нейросети Kandinsky.

Читать далее
Total votes 8: ↑7 and ↓1 +6
Comments 5

Данные: какие про вас собирают, а какие от вас закрывают?

Reading time 3 min
Views 20K

Государство активно взяло курс на формирование реестра граждан и наполнение его разнородными данными. Про это высказываются самые разные чиновники после главного шага - введения системы "электронных повесток". К этому готовились. Напомню, что именно было сделано в последние два года для сбора максимального объема данных внутри госсистем.

Читать далее
Total votes 65: ↑58 and ↓7 +51
Comments 59

Использование простейших микросхем в конструкции ранних ЕС ЭВМ

Level of difficulty Medium
Reading time 10 min
Views 8.9K

Серия статей Дмитрия Руднева (эта и др.) натолкнула меня на мысль написать заметку о построении простых схем (триггеров, дешифраторов и т. п.) в реальных отечественных вычислительных машинах начала 1970-х годов — в первую очередь, ЕС-1020 (1971 год), по которой имеется довольно подробная литература.

Практически вся логическая часть процессора этой машины, как и создаваемой одновременно с ней более мощной ЕС-1030, была построена всего на девяти типах микросхем 155-й серии, в те годы (первая половина 1970-х) носивших обозначения К1ЛБ551, К1ЛБ552, К1ЛБ553, К1ЛБ554, К1ЛБ556, К1ЛБ557, К1ЛР551, К1ЛР553 и К1ЛП551. В 1975-м году была принята новая система обозначений, используемая с некоторыми расширениями и доработками до сих пор; перечисленным старым обозначениям соответствуют К155ЛА1, ЛА2, ЛА3, ЛА4, ЛА6, ЛА7, ЛР1, ЛР3 и ЛД1. В дальнейшем я буду использовать только привычные новые обозначения, для краткости опуская обозначение серии.

Читать далее
Total votes 41: ↑41 and ↓0 +41
Comments 69

Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api

Level of difficulty Medium
Reading time 14 min
Views 6.5K

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

Будем пытаться писать быстрый драйвер флешки и при этом попробуем сэкономить её ресурс при перезаписях.

Читать далее
Total votes 24: ↑23 and ↓1 +22
Comments 32

C++0x (С++11). Лямбда-выражения

Reading time 13 min
Views 303K
Буквально на днях случайно наткнулся на Хабре на статью о лямбда-выражениях из нового (будущего) стандарта C++. Статья хорошая и даёт понять преимущества лямбда-выражений, однако, мне показалось, что статья недостаточно полная, поэтому я решил попробовать более детально изложить материал.

Читать дальше
Total votes 75: ↑71 and ↓4 +67
Comments 83

Мой «Евротур» по сектам: путешествие в один конец?

Level of difficulty Easy
Reading time 28 min
Views 100K

В моей жизни был период, когда я достаточно глубоко изучал тему манипуляций: читал книги, слушал лекции, участвовал в психологической экспертизе экстремистских материалов. Но это всё казалось слишком теоритезированным и оторванным от реальной жизни. Поэтому, будучи уверенным в своей «психологической неуязвимости», я решил на практике проверить свою «живучесть» и понять – а как же людей вовлекают в секты и прочие маргинальные организации и можно ли этому противостоять?

И течение трех лет я целенаправленно ходил во все места, где меня могли обмануть или сломать, ввести в заблуждение, разрушить мою личность и вовлечь в незаконную деятельность. Я внимательно слушал, записывал и даже иногда срывал занятия. Это мой «Евротур» и моя исповедь диверсанта. А в конце вас ждет бонусная история от февраля 2022 года, которая связана с манипуляцией и давлением, но уже не со стороны сект ;)

Очень долго читать
Total votes 394: ↑381 and ↓13 +368
Comments 324

Дорожная карта навыков разработчика на C++

Level of difficulty Medium
Reading time 16 min
Views 56K

Джеймс Гослинг как-то сказал, что Java — это C++, из которого убрали все пистолеты, ножи и дубинки, однако практика показывает, что «ножи и дубинки» становятся классным инструментом в руках опытных разработчиков. В общем, немалая часть проклятий в адрес C++ объясняется элементарным «вы просто не умеете его готовить». Мы в «Лаборатории Касперского» умеем готовить «плюсы» и поэтому любим их. C++ — низкоуровневый язык, который позволяет работать с железом и писать быстрый код и при этом содержит массу возможностей. В экосистеме «плюсов» куча проработанных паттернов, best practices и готовых библиотек под разные задачи. Язык динамично развивается — но сохраняет обратную совместимость. 

В этом посте мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в С++-разработке.

Отправляемся
Total votes 46: ↑38 and ↓8 +30
Comments 93

Как защититься от переполнения стека (на Cortex M)?

Reading time 8 min
Views 27K
Если вы программируете на «большом» компьютере, то у вас такой вопрос, скорее всего, вообще не возникает. Стека много, чтобы его переполнить, нужно постараться. В худшем случае вы нажмёте ОК на окошке вроде этого и пойдете разбираться, в чем дело.

image

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

В этой статье я расскажу о собственных изысканиях на эту тему. Поскольку я программирую в основном под STM32 и под Миландр 1986 — на них я и фокусировался.
Читать дальше →
Total votes 61: ↑60 and ↓1 +59
Comments 66

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity