Как стать автором
Обновить
1
0

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

Отправить сообщение

Создаем проект STM32 C++ FreeRTOS в vscode для очень маленьких

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

Жил себе спокойно, писал кодик в Keil и не парился. Писал изначально на СИ, но кода становилось все больше, а я все ленивее, перешел на С++ и ARM Compiler V6,19. Но пришел к тому что простых прерываний в таймере стало не достаточно, даже можно сказать не правильный подход. Задался желанием подключить какую-нибудь ОС. Выбор пал на FreeRTOS. Довольный, скачиваю операционку, подтягиваю файлы к проекту на плюсах, и получаю кучу ошибок. Попытка их устранить не увенчалась успехом. Вспомнил что есть CubeMX и там можно сгенерировать проект с уже подключенным freertoos. Проверил, 5-ым компилятором и языком СИ, проект отлично собирается, но как только переименовываем main.c в .cpp и выбираем компилятор 6,19, получаем кучу ошибок на ядро ОС, на определение inline и т.п. Так я и не смог подружить подружить ОС и C++ в Keil. Пришлось заменить среду разработки, изначально выбор пал на CubeIDE, все отлично дружится и собирается, но в душе оставались сомнения. В итоге финальным выбором стал vscode, далее опишу как создать проект именно в нем.

Здесь на сайте уже есть статьи по сборке проекта, ими и руководствовался, но пошел немного другим путем.

Читать далее
Всего голосов 11: ↑10 и ↓1+15
Комментарии4

TOTP (Time-based one-time Password algorithm)

Время на прочтение7 мин
Количество просмотров48K

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

Чтобы понять, что из себя представляет TOTP и как он используется, необходимо сначала кратко рассмотреть более базовые понятия. Первое из них – двухфакторная аутентификация. Двухфакторная аутентификация (или многофакторная аутентификация) — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. Это означает, что после включения двухфакторной аутентификации пользователь должен пройти еще один шаг для успешного входа в систему. Стандартные шаги для входа в учетную запись – это ввод логина и ввод пароля (рис.1).

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Техникум: Конечный Aвтомат Обработки Сигнала с Кнопки

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

В электронных устройствах часто бывают тактовые кнопки. Например в Bluetooth колонке пять кнопок: увеличение/уменьшения громкости, перехода в режим загрузчика, остановки звука и прочего.

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

Очевидно, что firmware должно как‑то однозначно распознавать тип нажатия на кнопку; короткое долгое.

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

Читать далее
Всего голосов 13: ↑10 и ↓3+9
Комментарии83

7. Точность систем автоматического регулирования (ч.1)

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7.9K

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

1. Введение в теорию автоматического управления.2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13

3. Частотные характеристики звеньев и систем автоматического управления регулирования. 3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ3.2. Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья3.3. Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора3.4. Апериодическое звено 2-го порядка3.5. Колебательное звено3.6. Инерционно-дифференцирующее звено3.7. Форсирующее звено.  3.8. Инерционно-интегрирующее звено (интегрирующее звено с замедлением)3.9. Изодромное звено (изодром)3.10 Минимально-фазовые и не минимально-фазовые звенья3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности

4. Структурные преобразования систем автоматического регулирования.

5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).

6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица. 6.4 Частотный критерий устойчивости Михайлова. 6.5 Критерий Найквиста.

Читать далее
Всего голосов 11: ↑9 и ↓2+11
Комментарии9

Домашние печки и чайники постоянно пингуют заграничные хосты

Время на прочтение3 мин
Количество просмотров32K


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

  • google.com
  • baidu.cn
  • yandex.ru
Читать дальше →
Всего голосов 45: ↑40 и ↓5+52
Комментарии304

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

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров22K

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

Смарт-карты. Часть 4. JavaCard

Время на прочтение8 мин
Количество просмотров14K
Привет, Гиктаймс!

Сегодня я бы хотел поговорить о JavaCard. Данная статья будет посвящена понятию JavaCard и обзору ее архитектуры. Если есть интерес к этой теме, то я бы мог написать отдельную серию статей, в которых будут подробно освящаться все аспекты JavaCard. Сразу скажу, что я не собираюсь учить вас, как написать свое первое приложение в JavaCard, т.к. по этому поводу уже существует слишком много статей в Интернете. Мы поговорим сегодня преимущественно о принципах работы JavaCard.

Итак, смарт-карта на основе JavaCard — это карта, на которой приложения исполняются на JavaCard Virtual Machine (ограниченная версия Java Virtual Machine, адаптированная для смарт-карт) в так называемом JavaCard Runtime Environment (который с Java Runtime Environment имеет очень мало общего).

Что касается терминологии, то приложения называются Applets и содержатся в Packages (пакетах). Пакеты распространяются в CAP-files (вместо Jar-files). Пакеты и приложения имеют собственный AID (Application Identifier). Это необходимо для того, чтобы их можно было однозначно идентифицировать в таких командах, как: SELECT, INSTALL, DELETE, и т.д. (SELECT описывается в ISO7816-4, а JavaCard и остальные команды — в Global Platform).

Жизненный цикл Applets несколько отличается от привычного жизненного цикла приложений для компьютеров. Applet — это любой класс, наследующий от базового класса «Applet». При установке приложений вызывается его статический метод install. Этот метод должен создать объект соответствующего класса и вызвать на него метод register. Впоследствии объект будет сохранен в системе и получит собственный AID, который будет использован для дальнейшего общения с приложением. Объект и его поля данных сохраняются в NVM (Non-Volatile Memory). Каждый объект или массив, созданный приложением с помощью оператора «new», также будет находиться в NVM. Это означает, что, в отличие от традиционных компьютерных программ, состояние приложений JavaCard является постоянным и не теряется даже при выключении карты.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии8

Смарт-карты. Часть 3. TLV

Время на прочтение5 мин
Количество просмотров30K
Привет, Гиктаймс!

В прошлой части мы видели как происходит общение между терминалом и картой. Мы посмотрели форматы C-APDU и R-APDU, но мы не обращали внимания на то, какие данные содержат эти APDU. В этой части мы рассмотрим самые распространенные форматы, в которых передается информация между терминалом и картой (и наоборот). Все они относятся к одному семейству — TLV.

TLV означает Tag, Length, Value и используется для того, чтобы структурировать информацию. На очень абстрактном уровне, TLV можно рассматривать как бинарную версию XML. Однако что такое Tag, Length, Value?

  • Tag: он говорит, какой вид информации находится в TLV. Видом может быть, к примеру, простая строка или номер, идентификатор или даже сложная структура. В некоторых вариантах Tag также содержит мета-информацию о TLV.
  • Length: длина, в байтах, элемента Value.
  • Value: данные, содержащиеся в TLV

Каждый вариант TLV имеет свои правила кодирования каждого элемента. Далее мы посмотрим самые распространенные варианты TLV. Хочу сразу отметить, что данная статья будет, в основном, посвящена BER-TLV, поскольку это самый распространенный, гибкий и сложный формат. Остальные варианты TLV будут рассмотрены лишь вкратце.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии5

Смарт-карты. Часть 2. APDU

Время на прочтение5 мин
Количество просмотров53K
Привет, Гиктаймс!

После общей информации, описанной в первой части, сегодня поговорим об APDU в формате, описанном в стандарте ISO7816-4.

APDU (application protocol data unit) — это формат общения карты и терминала. Терминал посылает Command APDU (C-APDU), а карта отвечает с Response APDU (R-APDU).

C-APDU


Формат C-APDU таков:
Header Body
CLA INS P1 P2 [Lc field] [Data field] [Le field]

Каждый элемент заголовка (header) сохранен на одном байте и является обязательным. К заголовку вернемся чуть позже, сейчас поговорим о body команды.

Элементы body следующие:

  • Lc: длина элемента Data в байтах.
  • Data: данные команды.
  • Le: ожидаемая длина данных ответа в байтах, исключая длину Status Word.


Lc и Le, если присутствуют, могут занимать 1 (Short Length) или 3 байта (Extended Length) каждый. При Short Length кодируются значения от 1 до 256. Длина данных на 256 байтов записывается как «00». При Extended Length кодируются значения от 1 до 65536. Первый байт всегда «00» и остальные 2 байта — номер в формате Big Endian. Когда Lc или Le — «00 00 00», то длина данных — 65536 байтов.

В зависимости от присутствия или отсутствия элементы body команды можно разделить на 4 категории:

  • Case 1: Body полностью отсутсвует, то есть команда не содержит в себе никаких данных и не ожидается получение каких либо данных от карты при ответе.
  • Case 2: В body присутствует только Le, то есть команда не содержит в себе никаких данных, но при этом ожидается получение данных от карты.
  • Case 3: В body присутствуют Lc и Data, то есть команда содержит в себе данные, но при этом не ожидается получение данных от карты.
  • Case 4: В body присутствуют все элементы, а значит команда содержит в себе данные и ожидается получение данных от карты.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

Смарт-карты. Часть 1. Принципы работы

Время на прочтение4 мин
Количество просмотров54K
Все мы пользуемся разными видами смарт-карт в повседневной жизни. Наиболее яркими примерами смарт-карт являются: SIM-карты, кредитные карты, электронные документы и т.д.

По сути, смарт-карта — это оптимизированный для криптографии микроконтроллер с повышенным уровнем безопасности. Что это означает? В отличие от стандартного микроконтроллера доступ к памяти смарт-карты строго контролируется процессором. Таким образом, чтение данных с карты их написание на ней регулируются ПО самой карты. Более того, производители чипов предпринимают меры по предотвращению несанкционированного доступа (копирования всей памяти, перепрограммирования) к карте на электронном и физическом уровне.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии5

Техникум: Распознавание Вещественного Числа из Строчки

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

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

Потом часто надо анализировать текстовые логи с SD-карты. Надо выхватывать вещественные числа из CSV файлов для дальнейших расчетов.

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

В этом тексте я представил решение этой задачи.

Читать далее
Всего голосов 21: ↑14 и ↓7+11
Комментарии87

RGB светильник для магнитного левитатора

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

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии5

Протокол обмена ключами Диффи-Хеллмана для «самых маленьких»

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.6K

За последние десять лет масса технологий, имеющих хоть какое-либо отношение к информационным, претерпела массу изменений. Более того, многие сферы жизни, изначально не имеющие к IT никакого отношения, также преобразились до неузнаваемости и приобрели некий IT-шный бэкграунд. Немаловажную роль в этих процессах информатизации сыграла концепция Интернета вещей (IoT). С самого появления этой концепции было понятно, что она серьёзно повлияет на все сферы деятельности человека, экономические и социальные процессы, а спустя несколько лет после её появления технология оказалась на карандаше Национального разведывательного совета США и была занесена в список «подрывных инноваций».

По мере развития технологии IoT, ставшей устойчивой тенденцией на протяжении последних десяти лет, она наполнялась технологическим содержанием и практическими стандартами. При этом до некоторого времени комплексная информационная безопасность этой технологии вообще никого не интересовала. Если внедрялись какие-то меры безопасности, то по крайне остаточному принципу. Учитывая, что изначально никто никаких специальных стандартов для устройств IoT не разрабатывал, в основном использовали то, что было. Понятно, что «взрослые» варианты стандартов подходят для IoT не в полной мере. Требуются технологии, обладающие высокой производительностью в ограниченных средах. Устройства IoT связаны достаточно жёсткими ограничениями по питанию, памяти и вычислительным ресурсам.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+7
Комментарии10

Управление сервоприводами, ЧАСТЬ 1. Сервоприводы — устройство и способы управления

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров28K

Создателям роботов и систем автоматизации не обойтись без таких устройств, как сервоприводы или, как их еще называют, сервомоторы.

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

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

Это первая статья серии статей про сервоприводы. Из нее вы узнаете, как устроены эти устройства, какими они бывают, как ими можно управлять с помощью импульсных генераторов, а также через отечественный микрокомпьютер Repka Pi.

Другие статьи серии про сервоприводы вы найдете здесь:

Хочу начать управлять сервоприводами
Всего голосов 14: ↑14 и ↓0+14
Комментарии8

Индуктивная нагрузка биполярного транзистора

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

В книгах со времен рассвета полупроводниковой импульсной силовой схемотехники отечественного (СССР) и зарубежного производства, авторы зачатую прибегают к рассказу принципов работы того или иного устройства основываясь лишь на базовых схемотехнических постулатах, без явного объяснения происходящих внутри биполярного транзистора уникальных явлений. Так, к примеру, подавляющее количество литературы, в частности посвященной описанию принципа работы, разработки и дальнейшего расчёта импульсных источников питания (далее ИБП), не объясняет природы переходных процессов, происходящих в биполярном транзисторе с индуктивной нагрузкой. Данная статья является попыткой автора систематически собрать воедино многие фрагменты знаний электроники и электротехники, с целью избавления следующего поколения пытливых умов от необходимости самостоятельного анализа кривых напряжения и тока в разных участках схемы. Так же в данной работе на конкретном примере продемонстрирован процесс анализа и введения необходимых уточнений и допущений для поддержания корректности дальнейшего повествования.

 В далее излагаемом материале простейшей схемой ИБП (далее ПИБП) автор называет автогенераторную схему, реализованную на минимальном количестве элементов (см рис.1).

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии50

C++: чем CRTP лучше Шаблонного Метода?

Время на прочтение4 мин
Количество просмотров6.7K

Паттерн Шаблонный Метод (Template Method), описанный в книге по паттернам проектирования за авторством “банды четырех” (GoF), не связан с шаблонами (templates) C++ и является поведенческим шаблоном. Curiously Recurring Template Pattern (CRTP или “странно повторяющийся шаблон”) является усовершенствованием паттерна Шаблонный Метод и представляет собой идиому C++, в которой класс X наследуется от реализации шаблонного класса, используя сам X в качестве шаблонного аргумента. Название этой идиоме было дано Джимом Коплиеном (Jim Coplien), который наблюдал ее в самых первых образцах шаблонного кода C++. Эта методика позволяет достигнуть эффекта, аналогичного использованию виртуальных функций, без накладных расходов (и некоторой гибкости) динамического полиморфизма. CRTP можно использовать вместо Шаблонного Метода при условии, что вам не нужен динамический полиморфизм во время выполнения. Этот паттерн широко используется в библиотеках Windows ATL и WTL.

Читать далее
Всего голосов 8: ↑5 и ↓3+3
Комментарии9

Платежная EMV-карта. Механизмы обеспечения безопасности платежа

Время на прочтение15 мин
Количество просмотров88K


Платежные карты прочно вошли в нашу жизнь. Еще совсем недавно повсеместно использовались только карты с магнитной полосой. Сегодня же никого не удивишь картой с чипом. Всем известно, что чиповая, микропроцессорная или, созвучнее, платежная EMV-карта – современный и надежный способ доступа к расчетному счету. Она безопаснее карты с магнитной полосой и ее практически невозможно подделать. Однако детали реализации «внутренностей» EMV-карты мало известны. Всем кому интересно как работает EMV-карта, почему технология EMV обеспечивает безопасность платежей и насколько стоит всему этому доверять – добро пожаловать под кат.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии116

Неизвестный UART: микросхемы

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров19K

Как было сказано в предыдущей статье, UART не является формализованным стандартом и, следовательно, при его использовании имеет смысл опираться на практику реализаций данного протокола в различных микросхемах. В данной статье будут рассмотрены микросхемы мостов USB‑UART различных производителей как с точки зрения особенностей поддержки протокола, так и с точки зрения временных/электрических характеристик, а также иных, в том числе не‑электронных соображений.

Запаять SSOP-20
Всего голосов 58: ↑57 и ↓1+74
Комментарии57

Индикатор добротности. Тестер катушек индуктивности

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

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

Читать далее
Всего голосов 37: ↑33 и ↓4+39
Комментарии19

Почему работает алгоритм преобразования инфиксной записи в постфиксную

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров7.7K

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

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

Читать далее
Всего голосов 17: ↑14 и ↓3+19
Комментарии15

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность