Search
Write a publication
Pull to refresh
51
0.8

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

Send message

Самые Эпичные Баги при Программировании Микроконтроллеров

Level of difficultyEasy
Reading time12 min
Views24K

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

Самый типичный баг - это зависание прошивки.

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

Читать далее

Как уместить поиск по 30 тысячам слов в 64 КБ ОЗУ

Level of difficultyMedium
Reading time17 min
Views9.5K

Как уместить словарь размером 250 КБ в 64 КБ ОЗУ с возможностью выполнения быстрого поиска? Для справки: даже современные методики сжатия наподобие gzip -9 не могут сжать этот файл до размера меньше 85 КБ.

В 1970-х Дуглас Макилрой столкнулся с этой непростой задачей при реализации проверки правописания для Unix в AT&T. Из-за ограничений компьютера PDP-11 весь словарь должен был умещаться всего в 64 КБ ОЗУ. Кажется, подобную задачу решить невозможно.

Вместо того, чтобы использовать стандартные методики сжатия, Дуглас воспользовался преимуществами свойств данных, разработав алгоритм сжатия, отличавшийся от теоретического минимума сжатия всего на 0,03 бита. И по сей день этот рекорд остаётся непревзойдённым.

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

Читать далее

Qucs-S: руководство по видам моделирования, часть 3

Reading time9 min
Views2.9K

Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. О данной программе рассказывают мои предыдущие статьи. Для работы Qucs-S рекомендуется использовать также открытый движок моделирования Ngspice. Актуальным релизом Qucs-S на текущий момент является версия 25.1.0. Статья продолжает подробное рассмотрение видов моделирования в Qucs-S, начатое в первой и второй частях.

Читать далее

Контрабанда данных внутри эмодзи

Level of difficultyEasy
Reading time5 min
Views15K

Меня заинтриговал комментарий GuB-42 на Hacker News:

При помощи последовательностей ZWJ (Zero Width Joiner) теоретически можно закодировать в один эмодзи неограниченный объём данных.

Действительно ли можно закодировать в один эмодзи произвольные данные?

tl;dr: да, однако я нашёл решение и без ZWJ. На самом деле, можно закодировать данные в любой символ Unicode. Например, в этом предложении есть скрытое послание: This sentence has a hidden message󠅟󠅘󠄐󠅝󠅩󠄜󠄐󠅩󠅟󠅥󠄐󠅖󠅟󠅥󠅞󠅔󠄐󠅤󠅘󠅕󠄐󠅘󠅙󠅔󠅔󠅕󠅞󠄐󠅝󠅕󠅣󠅣󠅑󠅗󠅕󠄐󠅙󠅞󠄐󠅤󠅘󠅕󠄐󠅤󠅕󠅨󠅤󠄑. (Попробуйте вставить его в декодер.)

Читать далее

Первые впечатления от 1921вг015, отечественного RISC-V контроллера

Reading time9 min
Views63K

рис.1


Недавно мне в руки противоестественными путями попал интересный представитель RISC-V контроллеров производства НИИЭТ. Упакован он в пластиковый lqfp100 корпус, в котором скрывается ядро на 50 МГц, мегабайт флеш-памяти и 256 кБ оперативки. Разумеется, в наличии и стандартная периферия вроде UART-ов, SPI и USB. А вот из необычного — сигма-дельта АЦП на 16 бит. Ну и всякая неинтересная периферия вроде аппаратных модулей шифрования. Сразу оговорюсь, что тыкаю палочкой я его меньше двух недель, поэтому здесь описаны именно первые впечатления.

Читать дальше →

Ещё одна самодельная GPS антенна

Level of difficultyMedium
Reading time4 min
Views26K

Привет Хабр! Меня зовут Александр, я инженер-электроник. Около пяти лет назад я разрабатывал с нуля GPS приемник. Когда более-менее ожил первый макетный образец, оказалось, что в офисе на окне спутники почти не ловятся - ни телефоны ни контрольный приемник в виде модуля U-blox даже не захватывали хотя бы пару спутников в слежение.

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

Читать далее

Моделирование управления AC двигателя — Field oriented control of PMSM с помощью opensource решений

Level of difficultyHard
Reading time50 min
Views5.1K

В этой статье я хочу поделиться результатом своих исследований в области моделирования систем управления двигателями переменного тока. В качестве объекта управления был выбран синхронный двигатель с постоянными магнитами PMSM (Permanent Magnet Synchronous Machine) как наиболее распространенная машина в современных транспортных средствах. Основное внимание будет уделено построению математической модели системы, объекта управления, и алгоритмов для симуляции. Для реализации модели я выбрал open source решения: Python control, Scilab. Мне было интересно, возможно ли использование свободных средств моделирования для построения более-менее сложных и реальных систем. Далее я поделюсь своими впечатлениями. В первой части статьи приводится теоретический материал, где описываются основные уравнения двигателя и элементы теории управления. Для теоретической части необходимы базовые понимания электротехники, ниже приложу ссылки, где можно обновить знания. Я постарался проработать разные источники литературы, чтобы взять необходимый минимум, с которым самому пришлось столкнуться для понимания сути процессов управления двигателем. Читатель вправе пропустить матчасть и перейти сразу к описанию реализации, и при необходимости вернуться к некоторым теоретическим аспектам в этом материале, или других источниках. Реализация алгоритмов управления построена по классическому принципу с помощью диаграммы потоков.

Читать далее

Работа с RISC-V контроллерами на примере GD32VF103 и CH32V303. Часть 5: DMA

Reading time15 min
Views3.5K

Макетная плата GD32VF103


Часть 1. Введение


Часть 2. Память и UART


Часть 3. Прерывания


Часть 4. Си и таймеры


В предыдущих частях мы научились работать с RISC-V контроллерами в стиле восьмибиток из прошлого тысячелетия. Конечно, периферия у наших посложнее, но все равно управляли мы ей напрямую. Теперь же рассмотрим периферийный модуль, который сам может управлять другими периферийными модулями, пока ядро занято вычислениями. Речь идет о DMA (Direct Memory Access, оно же Прямой Доступ к Памяти, ПДП).

Читать дальше →

Магия полупроводниковых диодов: начало

Level of difficultyMedium
Reading time13 min
Views13K

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

По виду основного материала наиболее известны германиевые и кремниевые диоды, а также диоды из арсенида и нитрида галлия. В этой статье я сперва расскажу об основах — как устроен p-n переход обычных выпрямительных диодов. А затем я перейду к очень интересным туннельным диодам, работа которых основана на квантовых эффектах. На их базе мне удалось сделать надежно работающие генераторы высокочастотных и низкочастотных колебаний, а также повышающий преобразователь напряжения с питанием от батарейки на 1,5 В.

Читать далее

Исследование и восстановление блока SRS Audi A4: особенности работы с закрытым процессором и glitch-технологией

Level of difficultyMedium
Reading time8 min
Views6.8K

В новой статье мы расскажем о необычном случае восстановления блока SRS от Audi A4, который был "сломан" после неудачного обновления прошивки. Вы узнаете:

Как внутренняя ошибка B2000 блокирует работу ЭБУ и почему её невозможно устранить стандартными методами.

Что такое технология voltage glitching и как она позволяет обойти защиту закрытых процессоров.

Какие инструменты и методы используются для восстановления автомобильных блоков управления.

Практические шаги по работе с процессором V850E2 и восстановлению флеш-памяти.

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

Читать далее

Перепрограммируем заводской датчик CO2 Zigbee от компании Tuya

Level of difficultyEasy
Reading time3 min
Views16K

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

Читать далее

Hibernate в Linux: 0.99 проблемы меньше

Level of difficultyEasy
Reading time6 min
Views3.6K

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

Читать далее

Модернизация настольных электромеханических часов

Level of difficultyHard
Reading time33 min
Views8.9K

У меня есть старые электромеханические часы «Янтарь», которым почти 50 лет. По паспорту их продали в 1976 году. Эти часы дороги мне как память, потому что достались от бабушки с дедушкой.

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

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

Погружаемся в схемотехнику, механику и код

Опыт кастомизации LibreSDR

Level of difficultyMedium
Reading time15 min
Views7.9K

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

Узнать больше про настройку LibreSDR

GigaVulnerability: обход механизмов защиты микроконтроллеров GigaDevice GD32

Level of difficultyMedium
Reading time24 min
Views12K

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

К сожалению, не все технологии Readout Protection работают так, как задумывалось. Для обхода защиты могут быть использованы уязвимости отладочных интерфейсов, нетривиальные атаки типа fault-injection и даже инвазивное вмешательство.

Мы в Positive Labs занимаемся исследованиями безопасности различного «железа». Поэтому, когда в наши руки попало устройство на базе микроконтроллера семейства GD32 компании GigaDevice, мы сами не заметили, как начали исследовать применяющиеся в этих микроконтроллерах технологии защиты. Данные микроконтроллеры довольно популярны и используются повсеместно, в том числе в качестве замены микроконтроллеров STM32, т.к. зачастую совместимы с ними по выводам и даже по карте адресного пространства. Исследование оказалось довольно увлекательным, а результаты — впечатляющими!

Вперед

Как стать властелином отладчика: помогут ELF, DWARF и много магии

Level of difficultyMedium
Reading time12 min
Views4.5K

Привет, Хабр! Меня зовут Константин, я работаю в команде файлового доступа в YADRO. Помимо основной работы, я пишу в open source, работаю над несколькими проектами — в том числе над дебаггером BugStalker (BS) на Rust. 

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

Если уже решили писать свой отладчик, дочитайте до конца — там будет аналитика, которая поможет не наступить на Rust-грабли.

Читать далее

Как создавалась 3D-панорама Обороны Тулы (1941 г.): от архивов до immersive-шоу

Level of difficultyEasy
Reading time5 min
Views1.5K

Исторические события оживают, когда технологии встречаются с искусством. Сегодня я хочу рассказать, как мы создавали иммерсивную 3D-панораму обороны Тулы (1941 г.) для Тульского Музея Обороны. Это был масштабный проект, который объединил историков, 3D-художников, программистов и режиссеров.

Читать далее

Как взломать Harley Davidson. Часть 3

Level of difficultyMedium
Reading time15 min
Views9.3K

В прошлой части мы немало узнали о внутреннем устройстве прошивки. Но ни грубая сила видеокарты, ни интеллект моих скриптов на Питоне не помогли: алгоритм генерации 64-битного ключа так и остался тайной, а мотоцикл не взломанным. Что же, в этой части нас наконец-то ждет удача, а на десерт предложу разбор прошивки BCM с двойным разоблачением.

Читать далее

Разработка диагностического кабеля VAG-KKL для работы с программой CASCADE

Reading time4 min
Views8.5K


Приветствую, Хабр! Все началось с того, что у меня на автомобиле (Kia Sportage 2) не работает ABS. Как-то давным-давно я приобрел Wi-Fi сканер, который умеет читать ошибки по CAN. Как оказалось, для диагностики ABS/ESP необходима работа с K-Line. И это еще не все…
Читать дальше →

Ну заяц погоди! Или противоракетная оборона для самых маленьких евреев и не только. Часть 1

Level of difficultyEasy
Reading time17 min
Views6.6K

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

Читать далее

Information

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

Specialization

Embedded Software Engineer, Hardware Engineer