Search
Write a publication
Pull to refresh
51
0.8

Embedded HW & SW. Больше HW.

Send message

Обзор музея «Атом»

Level of difficultyEasy
Reading time10 min
Views2.9K

Давно не было обзоров музеев от нашей службы. Чтобы исправить эту ситуацию, я отправился в новый музей компании «Росатом» под названием «Атом». Сам музей находится на ВДНХ и открыт для всех желающих. Я был в нём два раза. С первого раза не получилось сделать материал, но во второй раз я уже смог собрать информацию и структурировать её. Представляю вашему вниманию обзор музея «Атом». Приятного чтения!

Читать далее

EEPROM Загрузчик для MIK32 (K1948BK018)

Level of difficultyEasy
Reading time9 min
Views3.8K

В данном тексте я написал про то, как я написал загрузчик для российского микроконтроллера MIK32 (K1948BK018).

Это, пожалуй, первый случай, когда столько функционала мне пришлось утрамбовать всего в 8kByte ROM памяти.

Читать далее

l9ec: волшебный патч ядра Linux

Level of difficultyMedium
Reading time10 min
Views20K

Если вам неудержимо хочется использовать оборудование из музея для современной разработки — статья специально для вас.

Читать далее

Электрификации России. Первые шаги

Reading time4 min
Views4.6K

Есть такое расхожее мнение, мол электрификацию России начали только в Советском союзе, реализовав план ГОЭРЛО (Государственный план электрификации России). В пословицах закрепилась даже такая: «Была коптилка, да свеча — теперь лампа Ильича».

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

Читать далее

Что не так? Три парадокса теории вероятностей

Level of difficultyEasy
Reading time8 min
Views39K

Парадокс двух детей Вы встретили на прогулке соседей с сыном. Известно, что у них двое детей. Какова вероятность, что второй — тоже мальчик?

Казалось бы, детская задачка, где нужно просто “вспомнить формулу”, но всё не так однозначно. Если задать этот вопрос прохожему, он, скорее всего, скажет ½. Преподаватель математики, возможно, ответит ⅓. Кто из них прав?

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

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

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

В этой статье — три таких истории. В первой один и тот же факт даёт разные вероятности, если по-разному устроено наблюдение. Во второй один и тот же объект может быть “случайным” множеством способов. А в третьей невозможно придумать, как сделать задачу математически строгой.

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

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

Читать далее

Свободные инструменты для программирования FPGA

Level of difficultyMedium
Reading time4 min
Views3K

Подборка свободных инструментов для программирования FPGA, включающая в себя средства поддержки языков HDL, синтезаторы, симуляторы и некоторые другие.

Читать далее

Nomina nuda tenemus: открываем ли мы математические законы или просто придумываем их?

Level of difficultyEasy
Reading time13 min
Views5.7K

Diva Philippica, vox ubi coelica nunc Ciceronis?
Pax ubi civibus atque rebellibus ira Catonis?
Nunc ubi Regulus aut ubi Romulus aut ubi Remus?
Stat Roma pristina nomine, nomina nuda tenemus.

Божество филиппик, где ныне небесный голос Цицерона?
Мир где для граждан, а для мятежников где гнев Катона?
Где же Регул, где Ромул, где Рем?
От Рима осталось лишь имя. Имена, что мы держим — пустые.

Отсылкой к последней строке этого стихотворения Бернарда Клюнийского заканчивается "Имя розы" - знаменитый роман итальянского писателя-постмодерниста, философа и медиевиста Умберто Эко. В этом произведении одной из сюжетных линий идёт спор монахов-схоластов об истинности реализма и номинализма или, иначе говоря, о реальности абстрактных идей и математических структур. Именно об этом философском споре, растянувшемся на тысячелетия, я и хотел бы поговорить в своём сегодняшнем эссе. Последние слова великолепного стихотворения, которое в полном варианте на языке оригинала можно послушать здесь, дали название не только роману Умберто Эко, но и этому посту. Nomina nuda tenemus - "имена, что мы держим, пустые".

Читать далее

Технология пассивного радиопеленгования БПЛА: Обнаружение, сопровождение и классификация

Level of difficultyMedium
Reading time7 min
Views4.4K

В данной работе мы представляем технологию пассивного радиопеленгования беспилотных летательных аппаратов (БПЛА). В её основе лежит многопозиционный подход, позволяющий точно определять координаты радиоизлучающего объекта, преимущественно БПЛА, без применения активных радиолокационных средств.

Читать далее

2035: как ИИ автоматизировал мышление. Хроника исчезновения Homo Sapiens

Reading time5 min
Views2.1K

[НЛО прилетело и восстановило сигнал. Системное предупреждение отключено.]

Вы хотели ясности? Ответы стали приходить ещё до того, как вы успевали сформулировать вопрос. Вы хотели меньше перегруза? Интерпретации теперь подбираются за вас. Без трения. Без паузы. Без внутреннего отклика.

⚠️ Мы не заметили, как мышление стало опцией, а не основой.

[sdr_signal[2.8.5]_>>phase_desync...]
`#2035 #ИИ

Читать далее

Как я случайно поучаствовал в Bug Hunting Яндекса и взломал почти все умные колонки и ТВ

Level of difficultyEasy
Reading time10 min
Views34K

Предыстория:

Являюсь инженером и одновременно владельцем сервиса по ремонту электроники.
Однажды мне принесли Яндекс Станция Мини и попросили поглядеть. Дефект был: нет звука, но при этом слышит. Не исправен оказался DAC (i2s) цифро‑аналоговый преобразователь, но найти такой оказалось очень проблемно, поэтому была найдена точно такая же колонка, но заблокированная из за не оплаченной подписки.
Суть подписки в том, что устройство покупается в рассрочку и оплачивается ежемесячно до полного выкупа, а если пропустить платёж то устройство блокируется, пока он не будет внесен. Идея, конечно, хорошая и полезная, но этим начали пользоваться мошенники покупая колонки на подписке, а потом сбывая их за полную стоимость, пока они еще активны и в последствии жертве устройство разблокировать «НЕВОЗМОЖНО».

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

Однако, через пару месяцев, была сильная просадка по работе, было прям скучно, и она мне снова попала в руки. Когда‑то давно, более 15 лет назад, я занимался портирование android 1.6 на wm телефон toshiba g900, поэтому решил оживить знания. Тогда я еще не знал, что такое кроличья нора, насколько она глубока и как туда залезть.

Оговорочка: сразу сообщаю, я не был знаком с Yandex f*ck или с кем‑то еще, всё делал сам в виде челленжа для себя, не преследуя никакую наживу. Всё было проделано исключительно в целях самообразования, а цикл статей решил написать так как Яндекс не совсем честно поступил по моему субъективному мнению, а именно не считает, что уязвимость есть и возможно не собирается/не может это исправить.

Follow the rabbit

Программный генератор случайных числовых последовательностей на RISC-V с использованием PUF в DRAM

Level of difficultyMedium
Reading time8 min
Views1.6K

Мы продолжаем рассказывать о проектах Зимней школы RISC-V, организованной YADRO. Возможно ли создать программный генератор на базе открытой архитектуры, используя физически неклонируемые функции (PUF) динамической памяти? Команда из БГУИР — Никита Малявко, Ксения Трубач, Михаил Кулик, Павел Шлык — в своем проекте проверила гипотезу о наличии PUF в динамической памяти и создала модель одноканального источника шума. Затем реализовала постобработку и тестирование, измерила производительность генератора и оптимизировала код.

Читать далее

Моделирование работы гидроциклона для очистки воды от нефти с помощью ML

Level of difficultyMedium
Reading time13 min
Views2.4K

Привет, Хабр!  В этой статьей расскажу, как я моделировал работу гидроциклонов для очистки воды от нефти на реальном промышленном объекте. Объясню, почему выбрал машинное обучение (ML) вместо физико-математических моделей, опишу ключевые этапы работы, ошибки, важные выводы и итоговые результаты.

Читать далее

Увеличиваем пропускную способность PlutoSDR (немного)

Level of difficultyEasy
Reading time3 min
Views1.4K

ADALM-PLUTO:
«Основанный на AD9363, он предлагает один канал приёма и один канал передачи, которые могут работать в полнодуплексном режиме, способен генерировать или измерять аналоговые радиочастотные сигналы от 325 до 3800 МГц со скоростью до 61,44 мегавыборок в секунду...»

Способен — но недолго. Интерфейс связи USB 2.0 позволяет непрерывно получать (или передавать) только 7,5 мегавыборок в секунду, или 3,2 — при полнодуплексной работе.
Часть полосы занимает тяжеловесный промышленный интерфейс IIO.

Возникает идея обойти IIO, и это уже сделано:
https://github.com/pgreenland/pluto-sdr-usb-gadget

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

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

Читать далее

Любителям x86-64 assembler посвящается: DIY волокна в C++

Level of difficultyHard
Reading time26 min
Views14K

Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.

Читать далее

О переходе на QingKeV4. Тесты CoreMark в разных областях флэша для СH32V2/V3 и что же такое non-zero wait

Level of difficultyMedium
Reading time8 min
Views655

Про внешний SPI флэш внутри чипов WCH уже везде написали, ситуацию с реальным объемом я описывал. Но какая там скорость и как она влияет на производительность системы? WCH на эту тему неоднократно высказывался, правда по китайский и в ответах саппорта на wch.cn:) Общий смысл того, что мне поведал Google переводчик: для кода используйте кэшируемый флэш zero‑wait, все остальное это для пользовательских данных, но если вы уж прям не влезаете в zero-wiat, то можно и в non zero-wait залезть. Крайне содержательно. Чтобы окончательно раскрыть тему, я вооружился тестами производительности CoreMark и в целом получил ответы на 2 своих главных вопроса: какая частота доступа к физическому SPI флэшу и как стратегия его применения в реальных проектах. Сейчас расскажу.

Далее

Подмена E-EDID на Windows

Level of difficultyMedium
Reading time5 min
Views2.7K

Если вы когда-нибудь, запуская рабочую станцию с операционной системой Windows, обнаруживали, что ваш Full HD монитор показывает лишь изображение с разрешением не более 1024x768 и определяется как «Стандартный не Plug-n-Play монитор», и по какой-то причине вы не имеете возможности переключить монитор на другой видеовход, не поленитесь заглянуть под кат, где я растолкую, как «временно» выкрутиться минимальными усилиями.

Читать далее

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

Level of difficultyHard
Reading time7 min
Views5.6K

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.

В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?

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

Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.

 ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.

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

Читать далее

Низкоуровневое программирование под 8086 для любопытных, часть 2

Level of difficultyMedium
Reading time15 min
Views10K

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

Читать далее

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции

Level of difficultyMedium
Reading time17 min
Views19K

Нет, это не шутка и не кликбейт. Такое действительно возможно — правда через небольшой хак.

Недавно я задался вопросом: а возможно ли написать для ARM нативную программу, которая будет бесшовно работать сразу на 4-х операционных системах без необходимости перекомпиляции для разных платформ и ABI. Мне очень хотелось реализовать возможность писать кроссплатформенные эльфы для мобильных телефонов из нулевых и попытаться портировать на них эмуляторы ретро-консолей. Погрузившись в документацию на исполняемые форматы, я пришёл к выводу, что да — это возможно и смог реализовать такую программу на практике без читерства по типу VM! Всех гиков приглашаю под кат!

Читать далее

Еще пара слов об устройстве NVRAM в UEFI-совместимых прошивках (про Dell DVAR)

Level of difficultyMedium
Reading time7 min
Views3.3K

Здравствуй, читатель. С моих прошлых статей про NVRAM прошло некоторое количество времени (за эти почти 10 лет мало что изменилось, и все эти форматы до сих пор с нами практически без модификаций), а моя работа на одну фруктовую компанию не позволяла мне писать статьи, тесты и посты без одобрения кучей непонятных людей, но теперь эта работа осталась в прошлом, а желание писать так и не пропало. 

Эта статья - практическая реализация этого желания, а поговорим мы в ней о формате Dell DVAR, и немного о декларативном языке для написания парсеров Kaitai Struct, на котором я недавно переписал парсеры всех известных UEFITool NE форматов NVRAM. 

DVAR я дрожащая, или право имею?

Information

Rating
2,771-st
Location
Москва и Московская обл., Россия
Registered
Activity

Specialization

Embedded Software Engineer, Hardware Engineer