Pull to refresh
88
0
Вадим Дерябкин @Vadimatorikda

Инженер-программист

Send message

Если BlackBerry не идет к пользователям, то пользователи идут к BlackBerry: проекты с запчастями и/или идеями «ежевички»

Reading time 4 min
Views 9.1K
image

Многие читатели Хабра успели полюбить телефоны BlackBerry — как относительно старые телефоны, так и смартфоны последних лет, разработанные уже после продажи бизнеса компании другому бренду. Автор этих строк года полтора использовал Blackberry Passport, и если бы не отсутствие поддержки современного ПО, то, вероятно, продолжал бы с ним работать.

К сожалению, сейчас это преимущественно «звонилка», поскольку поддержки софта нет, кроме разного рода сторонних продуктов и фанатских поделок. Тем не менее, телефоны BlackBerry не умерли, на их базе разрабатывают другие устройства. Иногда это смартфоны, иногда — внешние аксессуары к ПК и ноутбукам. Давайте посмотрим, что это такое.
Читать дальше →
Total votes 43: ↑42 and ↓1 +41
Comments 14

Фантомный double в прошивках для ядер Cortex-M*

Level of difficulty Medium
Reading time 8 min
Views 12K

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее
Total votes 86: ↑84 and ↓2 +82
Comments 25

Как посчитать 2+2, используя электромагнитные реле

Reading time 5 min
Views 58K
В прошлый раз я кратко описал то, как создавался первый модуль моего (будущего) компьютера на электромагнитных реле – арифметико-логическое устройство. Сейчас я хочу немного рассказать о принципах работы этого АЛУ, а точнее, как устроено выполнение логических и арифметических операций.


Читать дальше →
Total votes 49: ↑48 and ↓1 +47
Comments 32

Нужна ли на проекте документация: три признака, что да, ещё три — когда нет

Level of difficulty Easy
Reading time 3 min
Views 4K

Подготовка документации — дело затратное. Прежде чем приступать к ней, нужно подумать, действительно ли она нужна, или это делается, потому что «так принято». 

В статье я подробно остановился на ситуациях, когда написать её необходимо. Если в одной из них вы узнаете свой проект, то документация сильно поможет в его реализации.

Читать далее
Total votes 29: ↑28 and ↓1 +27
Comments 13

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

Reading time 12 min
Views 177K

Мало просто сменить свою сферу работы на IT, желательно еще и стать хорошим разработчиком. Бывший тимлид и консультант Александр Усков рассказывает, как понять, что перед вами плохой разработчик и что с ним вообще можно делать

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

Читать далее
Total votes 301: ↑197 and ↓104 +93
Comments 402

Распространение консольных приложений macOS до конечных пользователей

Reading time 10 min
Views 8.2K

Начиная с macOS 10.15 Catalina разработчикам требуется заверять свои приложения и утилиты командной строки. Если с приложениями, распространяемыми через App Store все прозрачно, то распространение консольных утилит может вызвать сложности. В данной статье я покажу, как можно доставлять такие утилиты до конечных пользователей (будем проделывать все необходимые операции в терминале, а также автоматизируем эти действия двумя вариантами - через bash-скрипт и с помощью SPM executable).

Читать далее
Total votes 17: ↑16 and ↓1 +15
Comments 9

Применение биполярных транзисторов с микроконтроллерами

Level of difficulty Medium
Reading time 10 min
Views 44K

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

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

Аналоговое и цифровое питание. Мифы и реальность

Reading time 8 min
Views 33K

Иногда разводишь ты такой плату микроконтроллера или изучаешь документацию к чипу и натыкаешься на такую картину: два питания — аналоговое и цифровое. Две земли тоже не редкость. Я встречал людей, которые даже после пары лет работы в индустрии не всегда знали точно, зачем и когда нужно разделять питание и землю и как это корректно делать. Мы попробуем сегодня пробраться вниз по кроличьей норе. В том числе станут понятны практики подключения аудио оборудования проводами, которые покупаются за золотые слитки.

Узнать как разделять питание и властвовать
Total votes 47: ↑43 and ↓4 +39
Comments 49

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

Reading time 12 min
Views 3.7K


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



К сожалению, в системах Cortex M такой путь напрямую невозможен. Программа привязана к абсолютным адресам и не может исполняться в произвольном месте. С чем это связано и как мы сделали её перемещаемой, подправив компилятор LLVM, рассказано в данной статье.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 13

Как выполнить аппаратную реализацию энкодера h264, не написав ни строчки кода на VHDL/Verilog?

Reading time 7 min
Views 6.1K

Вступление

Сжатие видео с камеры является важной задачей как при трансляции данных через сеть Интернет, так и при передаче данных через радиоканал. Это позволяет в разы сократить объем передаваемой информации при небольшой потере детализации в исходном видео. Сейчас самым популярным алгоритмом для сжатия видео является кодек h264. Хотя уже существует следующая реализация кодека – h265, но он имеет большую вычислительную сложность алгоритма и пока не нашел столь широкого применения, и его реализацию можно оставить на потом :)

Модельно-ориентированное проектирование - это что?

При разработке алгоритма для ПЛИС можно выделить два основных подхода: написать алгоритм сразу на языке описание аппаратуры VHDL/Verilog/SystemC или использовать более высокоуровневые средства проектирования. Во втором случае вначале строится эталонная модель алгоритма в MATLAB/Simulink, тестируется, верифицируется и постепенно подготавливается к автоматической генерации HDL кода из алгоритма. Конечно, мы выбрали второй вариант, т. е. наш план – на основе MATLAB кода сделать эталонную модель алгоритма Simulink, а после – адаптировать ее к автоматической генерации кода и получить HDL для ПЛИС.

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

ЭТТ, или когда в резюме можно написать, что профессионально моргаю светодиодом

Reading time 4 min
Views 7.2K

ЭлектроТермоТренировка (ЭТТ) один из самых действенных производственных методов технологической тренировки и отбраковки изделий электроники и микроэлектроники. На картинке приведена классическая зависимость интенсивности отказов любого устройства во времени.

Что бы не допустить что бы первый всплеск большого числа отказов в начальный период времени произошел у конечного покупателя (потребителя) производители стараются "не выносить мусор из избы" и "убить" потенциально слабые или бракованные изделия непосредственно в цикле производства. Для разного вида техники могут применяться разные виды тренировки - обкатка, старение, притирка и так далее. Для изделий микроэлектроники (микросхем) наиболее действенным, но в тоже время и очень дорогим является ЭлектроТермоТренировка.

Как это работает?
Total votes 36: ↑36 and ↓0 +36
Comments 14

Встроенный контроллер одного ноутбука и его наследство

Reading time 15 min
Views 17K
В этом материале я хочу немного рассказать о том, что происходит во встроенном контроллере (Embedded Controller, EC) моего ноутбука. Речь идёт о мультиконтроллере IT8586E, основанном на Intel 8051. Он встроен в ноутбук Lenovo Ideapad 310-15IKB. Но, прежде чем переходить к деталям, полагаю, нелишним будет поговорить о том, что это вообще такое — встроенные контроллеры.


Читать дальше →
Total votes 59: ↑56 and ↓3 +53
Comments 8

Удвоение частоты дискретизации оцифровкой в несколько проходов для правильно-периодических сигналов, возможно ли такое?

Reading time 4 min
Views 4.1K

В процессе переделки игрушки-осциллографа DSO138, как уже описывалось в предыдущей статье, возникла идея в DSO303 попробовать фокус с удвоением частоты дискретизации. В самом деле для STM32F303 теоретически максимально достижимая скорость дискретизации с точки зрения входа АЦП, а это определяется минимальным временем открытия УВХ, которое в нашем случае 1,5 такта х (1 / 72 МГц), или примерно 20,8 наносекунд, что дает 48 MSPS (миллионов отсчетов в секунду). Однако при параллельной работе 4-х АЦП на 6 МГц получается достичь только 24 MSPS из-за ограниченного быстродействия АЦП.

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

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

Реализация счетчика наработки на микроконтроллере 1986BE92QI

Reading time 8 min
Views 6.4K

Очень часто появляется необходимость отсчитывать время, отработанное некоторым устройством. Для ведения счетчика наработки необходимо периодически с определенным интервалом времени, например каждую минуту, обновлять значение, хранящееся в ячейке энергонезависимой памяти EEPROM. К сожалению, ресурс циклов записи и стирания этих ячеек памяти обычно мал и составляет около 10.000 циклов (по оценке производителя). Значит, если стирать и перезаписывать значение в одну и туже ячейку памяти с интервалом в 1 минуту, то ресурс ячейки будет израсходован примерно за неделю. Для увеличения этого времени можно использовать не одну ячейку, а все ячейки некоторой, свободной страницы памяти, например последней. Это даст нам 1024 * 10.000 запас циклов записи и стирания, что эквивалентно, примерно 19 годам при ежеминутной перезаписи значений счетчика.

Читать далее
Total votes 27: ↑25 and ↓2 +23
Comments 33

Введение в CoreMIDI

Level of difficulty Medium
Reading time 17 min
Views 1.7K

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

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

Что такое функциональное программирование?

Reading time 7 min
Views 72K

Эта статья является переводом материала «What is functional programming?».

В этой статье Владимир Хориков попытается ответить на вопрос: что такое функциональное программирование?

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

Математические функции не являются методами в программном смысле. Хотя мы иногда используем слова «метод» и «функция» как синонимы, с точки зрения функционального программирования это разные понятия. Математическую функцию лучше всего рассматривать как канал (pipe), преобразующий любое значение, которое мы передаем, в другое значение

Читать далее
Total votes 32: ↑27 and ↓5 +22
Comments 108

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Reading time 40 min
Views 83K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →
Total votes 162: ↑161 and ↓1 +160
Comments 61

Как сделать ОС для микроконтроллера

Reading time 33 min
Views 24K

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

Короче говоря, надеюсь это будет полезно, или хотя бы интересно, для людей, ищущих ответы на вопросы на формах и статьях на Pikabu Хабре, а не в патентах, документации и прочих унылых источниках, где нет вставок с мемами.

Читать далее
Total votes 45: ↑41 and ↓4 +37
Comments 45

Zip – как не нужно создавать формат файлов

Reading time 13 min
Views 40K

Zip появился 32 года назад. Можно подумать, что настолько зрелый формат должен быть отлично задокументирован. К сожалению, нет. Что же конкретно в нем не так, и каким образом его можно было бы оптимизировать? Подробно рассмотрим эти вопросы, опираясь на исходную документацию.
Total votes 89: ↑83 and ↓6 +77
Comments 80

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

Reading time 15 min
Views 149K

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


Лекции по курсу «Управление Техническими Системами», читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки», факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика привествуется.


Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Comments 111

Information

Rating
3,524-th
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Embedded Software Engineer
Lead
From 250,000 ₽
C++
STM32
Linux
Circuitry
Python
Assembler
Programming microcontrollers
Embedded system
Software development
Object-oriented design