Pull to refresh
42
0
Сергей Новиков @Pisikak

Embedded-разработчик

Send message

Реализация режимов шифрования на языке RUST

Level of difficultyEasy
Reading time15 min
Views999

После долгого перерыва мы возвращаемся в мир криптографических алгоритмов. В этот раз мы рассмотрим некоторые широко известные режимы шифрования блочных шифров, такие как ECB, CBC, CFB, OFB, CTR и подготовим небольшую архитектурную задумку, о которой я расскажу под катом.

Если вы еще не видели мои предыдущие статьи по алгоритмам хэширования "Streebog" и "SHA", советую ознакомиться — в этот раз будет сложнее.

Читать далее
Total votes 6: ↑2 and ↓4-2
Comments3

Собственный софт-процессор на ПЛИС с компилятором языка высокого уровня или Песнь о МышЕ

Reading time17 min
Views8.9K
Собственный софт-процессор на ПЛИС с компилятором языка высокого уровня или Песнь о МышЕ — опыт адаптации компилятора языка высокого уровня к стековому процессорному ядру.

Распространенной проблемой для софт-процессоров является отсутствие средств разработки для них, особенно, если их система команд не является подмножеством команд одного их популярных процессорных ядер. Разработчики в этом случае вынуждены будут решать эту проблему. Прямым её решением является создание компилятора языка ассемблера. Однако в современных реалиях не всегда удобно работать на Ассемблере, так как в процессе развития проекта может изменяться система команд в связи, например, с изменившимися требованиями. Поэтому задача легкой реализации компилятора языка высокого уровня (ЯВУ) для софт-процессора является актуальной.

Компилятор языка Python — Uzh представляется легким и удобным инструментарием для разработки программного обеспечения для софт-процессоров. Инструментарий определения примитивов и макросов как функций целевого языка позволяет критичные места реализовывать на ассемблере процессора. В данной работе рассмотрены основные моменты адаптации компилятора для процессоров стековой архитектуры.
Читать дальше →
Total votes 10: ↑9 and ↓1+12
Comments1

Пишем Wake-on-LAN сервис на ESP8266 при помощи ChatGPT

Level of difficultyEasy
Reading time5 min
Views8.6K


Мне нужен простой девайс с веб-страницей, заходя на которую, я смогу будить спящие компьютеры при помощи Wake-on-LAN магического пакета.

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

О том, как я писал прошивку и веб-страницу через ChatGPT, поведаю далее в статье.
Читать дальше →
Total votes 45: ↑43 and ↓2+61
Comments20

Восстанавливаем удалённые сообщения в Telegram

Level of difficultyEasy
Reading time3 min
Views113K

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

Читать далее
Total votes 48: ↑45 and ↓3+55
Comments79

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы

Level of difficultyHard
Reading time25 min
Views2.2K

И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой. 

В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.

Читать далее
Total votes 17: ↑16 and ↓1+24
Comments0

Автономный картографический сервер с питанием от USB

Level of difficultyEasy
Reading time11 min
Views4.7K

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

Здесь на помощь приходит Backcountry Beacon — устройство с открытым исходным кодом, которое не зависит от Wi-Fi. В него предустановлены детализированные топографические карты USGS, которые не требуют обновлений; он оснащён надёжным GPS, точно определяющим ваше местоположение; а ещё он работает как простой файловый сервер, где можно хранить всё, что может понадобиться в походе, — будь то руководства по узлам, справочники растений или аудиокниги.

Читать далее
Total votes 22: ↑21 and ↓1+27
Comments24

Переходим с STM32 на GD32

Level of difficultyMedium
Reading time5 min
Views17K

Микроконтроллеры STM32 и GigaDevice GD32 часто сравнивают из-за схожей архитектуры и совместимости. GD32 является своеобразным «клоном» STM32, использующим такое же ядро ARM Cortex-M. Основное отличие между ними — это цена, так как GD32 обычно дешевле, что делает его привлекательным для проектов с ограниченным бюджетом. Однако несмотря на схожесть, существуют различия в характеристиках и уровне поддержки, которые могут повлиять на выбор между этими двумя семействами микроконтроллеров.
Читать дальше →
Total votes 62: ↑60 and ↓2+77
Comments93

Знакомство с Litex на Tang Nano 9K

Level of difficultyMedium
Reading time14 min
Views1.8K

Автору всегда нравилась идея Litex, фреймворка для простой сборки SoC на FPGA, но постоянно не хватало времени, чтобы попробовать. Пришло время изменить это и задокументировать процесс! Мы будем использовать плату FPGA Sipeed Tang Nano 9K, которая является относительно недорогим оборудованием, тем не менее большая часть этой статьи применима к любому поддерживаемому Litex FPGA.

Читать далее
Total votes 8: ↑7 and ↓1+10
Comments0

SolidModelBrowser — удобный просмотр STL, 3MF, OBJ, особенно для тех, у кого завёлся 3D принтер

Level of difficultyEasy
Reading time3 min
Views6.5K

Началась эта история с того, что несколько лет назад я купил 3D принтер. Конечно, по началу не представлял толком, как эта технология работает, и насколько прочными и полезными будут его пластиковые изваяния. Однако, быстро натренировавшись и отрегулировав эту машинку, я был удивлён и вполне удовлетворён качеством пластиковых изделий, спайкой слоёв и точностью их геометрических размеров. Конечно, в последствии не обошлось без модернизаций аппарата, но сейчас не об этом.

Печатать игрушки с thingiverse мне, конечно, надоело быстро, да и брал я свой дрыгостол с большим прицелом на техничку. Принтер вскоре стал одной из любимых игрушек, а связка Blender+Cura позволяла лепить модели мелких деталей порой за считаные минуты, отправляя их затем на печать. Сломалось колёсико у дивана - не в магазин же бежать, отломилось какое-нибудь крепление или кронштейн - и уже гудит вентилятор хотэнда. Штырьки, подпятники, элементы механизмов, и конечно, куча всяких баночек и коробочек...

Библиотека STL и 3MF росла. И в какой-то момент стало понятно, что я не помню, в каком файле лежит та или иная деталь. Хоть файлы и имели осмысленные названия на английском, но я просто уже забыл, что и как назвал, и ориентироваться в разрастающейся свалке становилось всё труднее. Нужен был какой нибудь удобный просмотрщик. Вот так и зародился несколько лет назад проект Solid Model Browser.

Приложение создано на платформе WPF и работает под Windows. В окне отображается загруженная модель, панель инструментов-кнопочек, и файловая панель слева, меняющая свою прозрачность по мере её востребованности...

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

Как собрать и запитать радиопередатчик из хлама (консервных банок и проволоки) для передачи сигнала SOS

Level of difficultyMedium
Reading time15 min
Views46K
Картинка Cmglee, Freepik image_1, Freepik image_2, Youtube-канал «Thomas Durant»

Меня всегда привлекали способы «собрать что-либо из ничего» и сегодня рассмотрим один из них — «выживальщик со стажем», во мне не даёт покоя :-).

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

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

Одним из наиболее сложных (так как требует определённых технологических приспособлений) и в то же время одним из наиболее перспективных, ввиду своей дальности действия, является радиосвязь. Попробуем прикинуть — как нам это реализовать, не имея под рукой в буквальном смысле почти ничего!
Читать дальше →
Total votes 121: ↑119 and ↓2+159
Comments125

Разыменовываем NULL на RISC-V ядре scr1

Level of difficultyMedium
Reading time10 min
Views4K

Во время работы в ASIC дизайн центре я потратил немало времени на отладку ошибок и падений ядра, просматривая временные диаграммы на шинах AXI от процессора к памяти. Иногда оказывалось, что адрес чтения из памяти оказывался 0x00000000 - классический случай разыменования нулевого указателя в C. На системах с ОС это приводит к известному всем C программистам segfault-у. И в bare metal системах разыменование NULL может приводить к интересным ситуациям. В этой статье рассмотрим, что происходит при разыменовании NULL, используя для пример open source RISC-V ядро scr1 и open source инструмент симуляции RTL Verilator.

Читать далее
Total votes 23: ↑23 and ↓0+31
Comments6

Числа с фиксированной запятой для NES/DENDY

Level of difficultyMedium
Reading time15 min
Views6.2K

Консоль Dendy в первую очередь ассоциируется с относительно простыми играми (Super Mario Bros, Duck Hunt, Battle City и т. д.), которые обычно не требуют сложных расчётов и обходятся целочисленной математикой. Но как только нужно сделать трёхмерную графику или сложную физику, сразу появляется потребность в точных вычислениях и дробных числах.

Самым простым и быстрым способом программного представления дробей являются числа с фиксированной запятой (Fixed‑point числа). О реализации такой арифметики для NES/Dendy мы и поговорим.

Читать далее
Total votes 22: ↑22 and ↓0+35
Comments20

Синтез Цифрового БИХ Фильтра Низких Частот

Level of difficultyEasy
Reading time5 min
Views2.1K

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

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

Далее я покажу некоторые приёмы расчета IIR фильтра по известным коэффициентам.

Читать далее
Total votes 10: ↑8 and ↓2+11
Comments15

Почему WiLo (Wi-Fi + LoRa) вызывает сомнения? Как оно работает и есть ли смысл?

Level of difficultyEasy
Reading time3 min
Views5.5K

Привет, в будни заинтересовала новость о WiLo — экспериментальном протоколе, который должен сочетать в себе плюсы двух протоколов: скорость и доступность установки Wi-Fi и дальность и энергоэффективность LoRa. На словах всё здорово, но по мере чтения меня всё больше одолевали сомнения, особенно меня убивала "технология эмуляции LoRa через OFDM" и "смена частоты". Причём сразу пошёл читать оригинал, но не сильно помогло.

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

Начнём по-порядку, чем отличается LoRa? В тотальный обзор не будем уходить, нам сейчас достаточно двух моментов:

Читать далее
Total votes 9: ↑8 and ↓1+12
Comments10

Zynq 7000. HDMI для платы Zynq Mini для baremetal

Level of difficultyMedium
Reading time10 min
Views5K

Я давно носил идею проверки HDMI на платах Zynq, и вот наконец-то дошли руки до этого интересного топика. В этой статье я покажу, что вывод изображения через HDMI достаточно прост, но ограничусь только рассмотрением вывода изображения из baremetal-приложений, а вопросы про Linux оставлю для следующей статьи. В первую очередь изучим возможность простого вывода изображения в HDMI из генератора тестовых изображений с использованием Test Pattern Generator в PL-логике, а затем коснёмся применения AXI Video DMA.

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

Читать далее
Total votes 54: ↑52 and ↓2+62
Comments16

GPIO STM32, альтернативный вариант

Level of difficultyEasy
Reading time5 min
Views3.2K

Когда в 2011 году я переходил c atmega8 на stm32, меня очень вдохновил проект opencm3. Но вдохновил не на его изучение, а на написание похожего. На сегодня в моём варианте почти библиотеки есть макросы регистров для микроконтроллеров серий stm32f10x и stm32f40x, stm8s003, nrf51, nrf52, rp2040, и cc2640/1310. Реально же протестирована из этого списка только stm32f103. Кроме регистров для 103-й я написал базовые функции для включения/выключения тактирования периферии и управления портами ввода‑вывода. А также написаны примеры для USB профилей HID gamepad, HID keyboard и USB serial port. В этом же посте задокументирую функции портов и тактирования.

документация к c-шникам
Total votes 6: ↑6 and ↓0+9
Comments17

Анонимная сеть в 100 строк кода на Go

Level of difficultyEasy
Reading time7 min
Views26K

Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.

Читать далее
Total votes 32: ↑32 and ↓0+39
Comments10

Голова на подушке, попкорн и песочные часы: какие дефекты можно встретить при рентген-контроле качества печатных узлов

Reading time13 min
Views5.2K

Качество монтажа компонентов на печатной плате требует постоянного контроля. Пропущенный дефект может вылиться в брак итогового устройства — его некорректную работу или полное отсутствие «жизни». На современных производствах давно используют системы оптического контроля — AOI и SPI, но не всегда они применимы. Так, ими не проверить качество пайки внутренних выводов микросхем в BGA-корпусе или монтажа термопадов QFN-, QFP-корпусов. Для них используют рентген-контроль.

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

Читать далее
Total votes 36: ↑36 and ↓0+50
Comments6

Декодирование BPSK Модуляции из Звука (или передача данных по воздуху)

Level of difficultyEasy
Reading time9 min
Views3.7K

В этом тексте я реализовал возможность передачи бинарных данных звуком через BPSK модуляцию. Написал инструкцию как это можно делать.

Вся обработка происходит в post processing режиме на PC над записанным wav файлом.

Изучение ЦОС на примере работы со звуком - это доступная каждому возможность для экспериментов с различными алгоритмами DSP.

Читать далее
Total votes 25: ↑23 and ↓2+26
Comments44

Игры на промышленных девайсах? Легко! Портируем эмуляторы и Wolfenstein 3D на ТСД за 500 рублей на практике

Level of difficultyMedium
Reading time9 min
Views5.3K

Дисклеймер: употребляемые слова ‭вроде «портируем‭», ‭«хакаем‭» и ‭«реверсим‭» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем!

Наверняка многие мои читатели так или иначе слышали новости о том, что известные игры были портированы на самые разные платформы. В какой-то момент к такой же идее пришёл и я, однако мне хотелось портировать игры и эмуляторы на довольно диковинные промышленные девайсы, которые работают на платформе Windows CE. Как я портировал Wolfenstein и эмулятор NES на бравого, но списанного в утиль трудягу склада и зачем? Читайте в сегодняшней подробнейшей статье!

Читать далее
Total votes 43: ↑41 and ↓2+57
Comments18
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead
From 350,000 ₽
STM32
Arduino
AVR C
FPGA