Pull to refresh
43
-8
Иван Савватеев @SIISII

Микроконтроллеры, цифровая электроника, ОС…

Летадло, предисловие

Level of difficulty Hard
Reading time 28 min
Views 2.5K
Tutorial

Эта статья, мой конспект, сигнальный флаг, или очередная тренировка изложения своих мыслей? В силу обстоятельства, прикоснулся к unreal, замечательный инструмент в "умелых руках", много од написано сему творению человеческой мысли, так что взаимодействие с ним большая честь для разработчика. Создание игр, визуализация, исследования, много всего интересного заложено в этот проект с многолетней историей развития. Открытость и большое сообщество, существенно понижает порог вхождения, конечно тривиальность писать такое, каждый второй инструмент с такими характеристиками, но это говорит о общей высокой планке нынешних инструментов для реализации любых техно извращённых фантазий. Невероятное стечение обстоятельств, получаю деньги за то что учусь взаимодействовать с этим инструментом.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Comments 2

Британская фобия embarrassment-а и российская движуха портабильных примеров на ПЛИС

Reading time 9 min
Views 2.6K

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

В глубине души британцы завидуют русским, которые "able to cope with difficulties". И вот вам свежий пример: когда выяснилось, что на более чем 300 заявок (UPD: сейчас уже больше 600) на Школу Синтеза Цифровых схем в 15 российских кластерах (UPD: уже 19, из них один белорусский) не хватает FPGA плат, группа волонтеров реализовала возможность легкого портирования учебных примеров на зоопарк из более чем 20 типов плат от Intel FPGA, GoWin и Xilinx, с идеей расшириться до 50 типов, с креативным добавлением недорогих внешних устройств.

Читать далее
Total votes 17: ↑12 and ↓5 +7
Comments 18

Промышленные контроллеры, Linux и только C++. Часть 1

Level of difficulty Medium
Reading time 11 min
Views 7.3K

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

Читать далее
Total votes 13: ↑12 and ↓1 +11
Comments 33

Когда private, но очень хочется public

Level of difficulty Medium
Reading time 8 min
Views 8.5K

В 2016 году меня пригласили помочь с разработкой экшн-очков "ORBI", это такие водонепроницаемые очки с несколькими камерами, которые могут стримить 360видео сразу на смартфон, ну а если с ними поплавать, тоже ничего сломаться не должно. (https://www.indiegogo.com/projects/orbi-prime-the-first-360-video-recording-eyewear#/). Собственно моей задачей было написать алгоритм склейки видео потока с четырех камер в одно большое 360* видео, на тот момент задача не очень сложная, но требующая немного специфичных знаний opencv и окружения. Но статья не об этом, потому что теперь это все оберегаемое IP, а про то как мы легальными и не очень средствами языка С++ писали тестовое окружение для используемых классов и соответственно алгоритмов. Да вы скажете, что там такого - сделал гетеры да тестируй себе на здоровье. А если гетера нет или переменная класса спрятана в private секцию и возможность изменить хедер отсутствует. Или вендор либы забыл положить хедеры, и прислал только скан исходников (китайские друзья они такие), а тестировать это надо? Помножив желание написать тесты на утренний кофф и приплюсовав дикий энтузиазм, можно получить очень много ошибок компиляции интересного опыта. Как говорил один мой знакомый лид: "Нет такого кода, который мы не сможем порефакторить, особенно за утренним кофф".

private not public?
Total votes 7: ↑6 and ↓1 +5
Comments 29

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?

Level of difficulty Medium
Reading time 9 min
Views 7.9K
Retrospective
image

В наше время большинство портативных устройств работает на базе достаточно мощных микроконтроллеров, которые способны запускать даже интерпретируемый код на Lua/Python. Чего уж там говорить — даже современная кофеварка или умный электрочайник может быть в разы мощнее оригинального IBM-PC, не говоря уже о автомобильных бортовых компьютерах, которые зачастую мощнее топовых ПК из начала нулевых. Но давайте вспомним конец 90-х и начало 2000-х, когда разработка собственной электроники была практически недоступна рядовому пользователю, а микроконтроллеры программировались в основном только на ассемблере. Недавно я нашёл некоторую информацию о том, какой процессор вероятно использовался в таких знакомых нам приставках Brick Game, которые мы называли «Тетрисами»! Более того, мне удалось найти полный даташит с описанием всех модулей этого процессора, который гордо можно назвать «система на кристалле». Какой была разработка микроэлектроники в 90-х? Читайте в статье!
Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Comments 29

Погружение в CPU и OS. PT1

Level of difficulty Medium
Reading time 8 min
Views 1.9K
Translation

Давайте начнем с основ того, как работает ваш компьютер на самом базовом уровне.

Устройство компьютера

Центральный процессор (ЦП) компьютера отвечает за все вычисления. Он - главный. Он начинает работу, когда вы включаете компьютер, исполняя одну инструкцию за другой.

Первый массово производимый центральный процессор был Intel 4004, разработанный в конце 60-х годов итальянским физиком и инженером Федерико Фаджином. Он имел 4-битную архитектуру вместо 64-битных систем, которые мы используем сегодня, и он был гораздо менее сложным, чем современные процессоры, но много из его простоты все еще остается.

"Инструкции", которые исполняют ЦП, представляют собой просто двоичные данные: несколько байтов, представляющих выполняемую инструкцию (опкод), за которыми следуют необходимые данные для выполнения инструкции. То, что мы называем машинным кодом, - это просто серия таких двоичных инструкций подряд. Ассемблер - это полезный синтаксис для чтения и записи машинного кода, который легче для человека, чем сырые биты; он всегда компилируется в двоичный код, которым ваш ЦП умеет читать.

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

Unity стреляет себе в ногу

Level of difficulty Easy
Reading time 4 min
Views 14K
Retrospective

Разбор полётов. В чём суть смены модели лицензирования Unity? Чем это грозит? Убьёт ли это инди и, в частности, гиперказуалки? Нужно ли прям сейчас бежать на другой движок?

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

Разбор работы FIFO на микроархитектурном тренажере

Level of difficulty Medium
Reading time 1 min
Views 2.9K

FIFO – ключевая концепция в хардварном дизайне. Понимание работы FIFO необходимо, в частности, для понимания протокола valid/ready, который в свою очередь необходим для организации flow-control как внутри цифровых блоков так и на межблочном уровне.

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

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

Поскольку тренажер является "фронтендом" для HDL симулятора то на самом симуляторе исполняется реальный, синтезируемый SystemVerilog который можно посмотреть и даже поменять его функциональность.

Смотреть видео и читать дальше
Total votes 21: ↑20 and ↓1 +19
Comments 15

Основы цифровой электроники: дешифраторы и демультиплексоры

Level of difficulty Medium
Reading time 8 min
Views 4.5K
Tutorial

Привет, Хабр! Что, если мы имеем цифровой сигнал в одном формате, а нам он нужен в другом?

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

Сегодня мы познакомимся с микросхемами, разработанными как раз на такой случай.
Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 14

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

Level of difficulty Easy
Reading time 4 min
Views 5.7K

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

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

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

Made at Intel. Эпилог

Level of difficulty Easy
Reading time 8 min
Views 21K

Несколько дней назад я закончил последнюю главу саги Made at Intel. Напоследок хочу поделиться с вами несколькими мыслями, посетившими меня по ходу ее написания. Они обращены в прошлое, настоящее и немного в будущее.

Читать далее
Total votes 168: ↑164 and ↓4 +160
Comments 29

Тотальный X-COM: 40-летняя история создания и развития серии

Level of difficulty Easy
Reading time 15 min
Views 3.4K
Retrospective

Игра X-Com: UFO Defense, разработанная Джулианом Голлопом и его братом Ником, является результатом многолетнего непрерывного процесса разработки. Почти 30 лет назад она заложила основу для популярной, хотя и не всегда безупречной франшизы, посвященной борьбе землян с коварными инопланетными захватчиками.

Давайте совершим небольшое путешествие по истории франшизы X-Com, начиная с ранних идей и работ Джулиана Голлопа, датированных еще 1983 годом, поностальгируем по оригинальной серии игр из 1994 и закончим крайней на данный момент Chimera Squad.

Олды, кто со мной?
Total votes 14: ↑13 and ↓1 +12
Comments 18

Актуальный гайд по написанию простого Windows-драйвера

Level of difficulty Medium
Reading time 10 min
Views 21K

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

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

Муки рождения Bioshock Infinite

Level of difficulty Easy
Reading time 10 min
Views 3.4K
Retrospective
image

Я до сих пор не могу поверить, что с релиза Bioshock Infinite прошло аж 10 лет. Это был не просто культурный феномен, захлестнувший миллионы людей по всему миру. Это было очень личное и эмоциональное приключение для каждого игрока, который вместе с Букером и Элизабет ворвался в Колумбию. Игра, безусловно, хороша. Но что если я скажу вам, что история её разработки настолько тяжёлая, хаотичная и запутанная, что после неё удивительно, как вообще Bioshock Infinite смог выйти в свет, да ещё и стать хитом? Звучит безумно, но это чистая правда, и сейчас я вам это докажу.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 3

Ошибка настолько проста, что программисты её не замечают

Level of difficulty Easy
Reading time 2 min
Views 10K
Case

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

Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Comments 78

Made at Intel. Окаянные дни — начало

Level of difficulty Easy
Reading time 8 min
Views 20K

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

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

Один из старейших языков программирования COBOL, похоже, вскоре уйдёт с рынка. И поможет ему в этом IBM

Reading time 3 min
Views 14K

Языку программирования COBOL свыше 60 лет. Несмотря на это, он до сих пор активно используется. Конечно, в подавляющем большинстве сфер его заменили современные языки программирования. Но дело в том, что в ряде стран до сих пор работают аппаратные системы с ПО на базе этого ЯП. Особенно много их в США.

Поэтому COBOL держится на плаву и в последние несколько лет даже набирал популярность. Так, например, в августе 2023 года язык вышел на 15 место по популярности среди ЯП. Год назад он находился на 31 месте. Впечатляющий рост.  Но через время, возможно, он станет уже историей. Всё дело в инициативе IBM, о которой расскажем под катом.

Читать далее
Total votes 37: ↑34 and ↓3 +31
Comments 74

Почему C++ не устаревает

Level of difficulty Easy
Reading time 9 min
Views 19K
Opinion

Привет, Хабр! Меня зовут Георгий Осипов. Я работаю в МГУ и компании Яндекс, а также в команде курса «Разработчик С++» Яндекс Практикума. В этой статье я поделюсь своими мыслями о том, почему немолодой язык С++ до сих пор не теряет актуальности.


Кажется, что первое доказательство — новость 2022 года, когда компания Google анонсировала новый язык Carbon. Он должен стать альтернативой C++. Первая версия Carbon выйдет только через 2-3 года, но уже сейчас понятно — если C++ языку ищут замену, значит, её нет.

Читать дальше →
Total votes 67: ↑50 and ↓17 +33
Comments 321

Проверка компилятора GCC 13 с помощью PVS-Studio

Level of difficulty Medium
Reading time 8 min
Views 3.6K

После некоторых поисков серьёзного вызова для анализатора PVS-Studio выбор пал на открытую коллекцию компиляторов GCC. Да, это уже не первая по счёту проверка этого проекта. Однако поддерживаемые этой коллекцией языки программирования не стоят на месте, и их постоянное развитие влечёт за собой соответствующее постоянное усложнение кода GCC. Таким образом цель — обнаружить ошибки в коде GCC с помощью анализатора PVS-Studio.

Читать далее
Total votes 25: ↑24 and ↓1 +23
Comments 11

Можно ли доверить компилятору оптимизацию вашего кода?

Level of difficulty Hard
Reading time 9 min
Views 5.2K
Review
Translation
image

Существует три уровня понимания того, как работает SIMD (ну, по крайней мере, на данный момент я нахожусь на 3-м уровне):

  1. Компиляторы умны! Они автоматически векторизуют весь код!
  2. Компиляторы тупы, автоматическая векторизация хрупка, ее очень легко нарушить несвязанными изменениями в коде. Всегда лучше вручную написать конкретные инструкции SIMD.
  3. Написать SIMD вручную действительно сложно — для каждой архитектуры процессора придется писать разный код. Кроме того, вы, вероятно, понимаете, что компилятор напишет на ассемблере скалярный код лучше вас. Что заставляет вас думать, что вы превзойдете компилятор в SIMD, где еще больше странных инструкций и запретов? Компиляторы — это инструменты. Они могут надежно векторизовать код, если он написан в форме, поддающейся векторизации.

Недавно я перешел со второго уровня на третий, и я заметил, как модель, используемая компилятором, щелкнула у меня в голове. В этом посте я хочу объяснить общую структуру компиляторов, пригодную для оптимизации статических языков, таких как Rust или C++. После этого я применю эту структуру к автоматической векторизации.
Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Comments 11
1

Information

Rating
Does not participate
Location
Солнечногорск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead