Pull to refresh
54
0

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

Send message

Причуды эволюции: необычное «железо», которое не должно было появиться. Часть 1

Level of difficultyMedium
Reading time16 min
Views30K


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

То ли дело раньше — в погоне за кошельками пользователей производители комплектующих были готовы идти на куда больший риск, а иногда в роли авантюристов выступали даже создатели альтернативных чипсетов. Встречались даже материнские платы для двух разных поколений процессоров, например 386 и 486! Или, например с двумя разъемами — для процессора базового и для топового уровней. И это не только возможность выбора между Celeron (socket 370) и Pentium II (slot 1), но и даже между Pentium III (slot 1) и могучим Pentium III Xeon (slot 2).

Да, пожалуй, с материнских плат и стоит начинать эту тему. Но странных гибридов рассмотрим в другой раз, сегодня мы заберемся глубже — я откопал семь примеров таких химер, которых быть просто не должно! Расчехляем машину времени, устраиваемся поудобнее, откидываемся на спинку табуретки, поехали!
Читать дальше →

Как принять сигнал мобильной связи на приёмник цифрового телевидения: теория и практика

Level of difficultyMedium
Reading time20 min
Views32K
image

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

  • ноутбук,
  • DVB-Т-приёмник в виде USB-брелока,
  • свободный флеш-накопитель для записи дистрибутива Linux на него.

Чтобы лучше разобраться в работе GSМ, нужно два мобильных телефона или телефон и GSM-модем.

Если вас заинтересовала эта тема, и вы хотите расширить свои знания, добро пожаловать под кат.
Читать дальше →

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

Level of difficultyMedium
Reading time9 min
Views20K

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться

Оживляем веб-камеру 1999 года

Reading time8 min
Views26K

Покупая девайс, мы, в принципе, понимаем, что вечно он не прослужит: разъёмы износятся и/или сам прибор выйдет из моды. Но лично меня наиболее удручает ещё одна причина избавляться от техники: для неё просто перестают делать драйвера.

Успех USB особенно примечателен. Этот стандарт с нами уже очень долго, и разъём его практически не менялся (в основном, не считая USB-C). Это значит, что очень старые устройства под USB 1 по-прежнему можно применять в системах, продаваемых сегодня. Как минимум, так должно быть, если у старых устройств есть драйверы для тех операционных систем, что актуальны сегодня.

Читать далее

Аналоговый режим работы К155ЛА3

Level of difficultyMedium
Reading time6 min
Views19K

В предыдущих двух частях цикла мы использовали микросхему К155ЛА3 в привычном всем цифровом режиме работы. В этой части публикации мы рассмотрим схемотехнические решения на элементах ТТЛ в аналоговом режиме.

Любопытно, что в аналоговом режиме можно включить практически любой из инвертирующих элементов ТТЛ. Примеры подобного использования микросхемы К155ЛА3 есть даже в пособиях для начинающих, правда, мало кто из начинающих догадывается, что режим работы элементов 2И-НЕ в этих схемах аналоговый.
Будет интересно

Использование простейших микросхем в конструкции ранних ЕС ЭВМ

Level of difficultyMedium
Reading time10 min
Views11K

Серия статей Дмитрия Руднева (эта и др.) натолкнула меня на мысль написать заметку о построении простых схем (триггеров, дешифраторов и т. п.) в реальных отечественных вычислительных машинах начала 1970-х годов — в первую очередь, ЕС-1020 (1971 год), по которой имеется довольно подробная литература.

Практически вся логическая часть процессора этой машины, как и создаваемой одновременно с ней более мощной ЕС-1030, была построена всего на девяти типах микросхем 155-й серии, в те годы (первая половина 1970-х) носивших обозначения К1ЛБ551, К1ЛБ552, К1ЛБ553, К1ЛБ554, К1ЛБ556, К1ЛБ557, К1ЛР551, К1ЛР553 и К1ЛП551. В 1975-м году была принята новая система обозначений, используемая с некоторыми расширениями и доработками до сих пор; перечисленным старым обозначениям соответствуют К155ЛА1, ЛА2, ЛА3, ЛА4, ЛА6, ЛА7, ЛР1, ЛР3 и ЛД1. В дальнейшем я буду использовать только привычные новые обозначения, для краткости опуская обозначение серии.

Читать далее

Семафоры в Linux медленно сходят со сцены

Reading time6 min
Views27K

С годами подходы к обработке конкурентности в ядре Linux сильно изменились. К 2023 году в арсенале разработчиков ядра появились, в частности, автозавершения, хорошо оптимизированные мьютексы, а также россыпь неблокирующих алгоритмов. Но были времена, когда управление конкурентностью сводилось к использованию обычных семафоров. Дискуссия о внесении небольшого изменения в API семафоров лишний раз свидетельствует, как сильно они изменились за долгую историю ядра.

Читать далее

Ностальгические игры: Космические рейнджеры

Level of difficultyEasy
Reading time7 min
Views17K

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

Больше всего мне нравились «Игромания» и «ЛКИ», очень редко брал «Страну Игр». До сих пор прошу родителей не выкидывать накопленную мною коллекцию, хочу оставить на память, уж больно большой кусок моего детства они занимали! Особенную ценность они имели, когда меня лишали компьютера за оценки, и всё что оставалось — это «играть в компьютер», читая их! Эх, знали бы вы, какое было разочарование, дождавшись субботы, прийти на рынок и увидеть, что этот торговец не приехал... а такое иногда происходило.

В один из таких субботних дней я купил журнал Лучшие Компьютерные Игры, в котором была большая статья-руководство по замечательной игре «Космические рейнджеры». Её я зачитал буквально до дыр, причем самой игры у меня не было. Думаю, вы представляете, насколько сильно мне хотелось приобрести её! К сожалению, я уже не помню, как скоро я получил заветную коробочку, вряд ли это было в ближайший год, но ожидание того стоило!

Так произошло знакомство с еще одной прекрасной игрой, которая не теряет своего шарма даже в наши дни.

Читать далее

Триггер — электронная ячейка памяти

Level of difficultyMedium
Reading time9 min
Views15K


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

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

Удивительные клеточные автоматы: направленные и пользовательские окрестности

Level of difficultyEasy
Reading time7 min
Views3.5K


?, Хабр!

На прошлых неделях мы познакомились с различными вариациями альтернативных окрестностей – начиная с учёта расположения нотацией Хенселя, через альтернативные шаблоны расположения, и заканчивая взвешенными окрестностями. Сегодня добавим в тему окрестностей стандартного поля небольшой финальный штрих – пользовательские расположения.
Что здесь происходит (для новых читателей серии)
В этой серии мы разбираем клеточные автоматы – дискретную модель, основой которой является сетка из ячеек-клеток, которые изменяют (или не изменяют) своё состояние в зависимости от количества соседей.
Учёт соседей определяется правилами, которые устанавливаются нами. Вариаций правил существует бесчисленное множество, и они были систематизированы в определённые конфигурации.
Самая популярная конфигурация – «B/S», или «life-like», по названию крайне широко известного клеточного автомата «Game of Life», где B/S обозначает, что в нашем правиле мы описываем всего два параметра – количество соседей необходимых для рождения новой клетки в пустой ячейке, и количество соседей для выживания существующей клетки.
В каждой статье серии мы углубляемся в данную конфигурацию, добавляя новые параметры, либо дополняя существующие. Иногда заглядываем и в прочие конфигурации.
Для понимания сегодняшней статьи достаточно знать, что:
  • поиск соседей изначально выполняется в радиусе 1 (8 окружающих клеток – ), но мы можем установить другой, добавив к правилу Rx, где x – нужный нам радиус;
  • мы можем изменять шаблон окрестности поиска соседей. Изначально подразумевается окрестность Мура – R в каждую сторону (и диагональ) от рассматриваемой клетки, – но указывая Nxx мы будем определять иной шаблон, что, конечно, изменит вид правила. Сегодня мы продолжаем расширение этой части правила. Знакомство с предыдущими расширениями не является необходимым, но вы, конечно, можете предварительно ознакомиться с ними и прочими дополнениями, для большей последовательности чтения. Ссылки в конце материала и в профиле.
Читать дальше →

Создаем свой собственный язык программирования с использованием LLVM. Часть 5: Поддержка классов и перегрузки функций

Reading time84 min
Views4.6K

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

Читать далее

Создаем eval через байт-код JVM

Level of difficultyMedium
Reading time8 min
Views2.3K

В интерпретируемых языках программирования (или в языках, которые включают возможность компиляции в runtime) есть возможность вычисления значения выражения, полученного из внешнего источника (например, для построения графика функции, введенной пользователем) с подстановкой актуальных значений переменных. Но JVM изначально ориентирована на компиляцию перед выполнением и механизма, аналогичного eval, в JVM нет (кроме, конечно, возможности использования Nashorn и eval в JavaScript-коде). В этой статье мы рассмотрим пример динамической генерации байт-кода из математического выражения.

Читать далее

Steer-by-wire: как разработать безопасный руль по проводам и нужно ли это делать?

Reading time9 min
Views8.6K

Не так давно мы опубликовали статью на Хабре про рули, где затронули тему steer-by-wire. Народ в комментариях высказал сомнения в надёжности такого решения. А ведь на самом деле, что делать, если у какого-нибудь ECU внезапно пропадёт питание, перетрётся проводок или подвиснет софт? Как производители борются с такими рисками? И зачем нам отказываться от надёжной механической связи? Попробуем же в этом разобраться!

Читать далее

В России всего 2000 проектировщиков чипов. Что с этим делать?

Reading time8 min
Views45K

Согласно статье Ивана Покровского «Возможности и проблемы отечественной микроэлектроники», в России всего две тысячи разработчиков микросхем. Для сравнения: в каждой крупной международной электронной компании есть несколько команд, работающих над чипом или над IP, в каждой по паре сотен разработчиков (хотя бывает и меньше ста, и больше тысячи).

Две тысячи человек — это мало для любого сценария развитии России:

1. Как для сценария, в котором санкции будут сняты и российские компании будут безпроблемно работать с TSMC и западными партнерами для разработки маркетируемых на мировом рынке чипов.

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

В других стран бывшего СССР ситуация еще хуже.

Что же делать? Для ответа на этот вопрос мы привлекли Машу Горчичко — выпускницу МИФИ, которая защитила диссертацию в Университете Вандербильда в Теннесси. Маша работала инженером в Роскосмосе, а сейчас работает в Кремниевой Долине, разработчиком в компании Applied Materials — одного из лидеров в оборудовании для производства микросхем.

Представим Машу, которая будет пояснять и иллюстрировать наши тезисы на видео. От себя прибавлю, что МИФИ — крутой вуз, в нем внутри есть ядерный реактор, а на входе стоит автоматчик:

Читать далее

Разработка BIOS на языках высокого уровня

Level of difficultyHard
Reading time11 min
Views29K
Ничего лишнего: материнская плата, видеокарта и ROM-BIOS

Меня давно волнует вопрос, как подступиться к разработке на голом железе, на чистом си. Хотелось понять, каким же образом идёт запуск BIOS, u-boot, grub и прочих первичных загрузчиков. Ведь необходимо перейти от ассемблера к тёплому ламповому си и соблюсти условие, собрать всё это в линукс любимым компилятором gcc.

Хотя я и имею достаточный опыт BareMetal-разработки, тем не менее, всё это были чужие проекты со своим кодом. А мне хотелось понять, как начать свой проект с чистого листа, когда есть только чистая железка и идея. Толковых статей как подступится к этой задаче достаточно мало, при этом совершенно непонятно, с какого же края к ней подходить.

Здесь я хочу свести основные моменты разработки BIOS в одном месте и разобраться обо всех проблемах, которые я получил во время своих опытах в разработке (первая и вторая части).
Читать дальше →

Синхронные двигатели с постоянными магнитами на роторе: управление (синус и/или трапеция)

Reading time11 min
Views53K

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

От теории к практике, наглядно, понятно и занимательно.

Читать далее

Мониторинг аномальной активности в операционной системе «Нейтрино»

Reading time8 min
Views2.6K

Активности в операционной системе могут быть самыми разнообразными. Это может быть и запуск нового процесса или потока, и обращение к файловой системе, и выделение памяти, и многое другое. Могут возникнуть ситуации, когда (вследствие действий злоумышленника и\или программной\аппаратной ошибки) эта активность становится аномальной, то есть поведение системы начинает отличаться от ожидаемого. Запуск неизвестного процесса на этапе эксплуатации изделия, потребление процессом необычно большого количества памяти, установка сетевых соединений, которых быть не должно в системе - всё это примеры аномальной активности, возможно требующие внимания со стороны пользователя или разработчика.

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

Читать далее

Создаем байт-код для JVM без компилятора

Level of difficultyMedium
Reading time9 min
Views5.3K

Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM. В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования.

Читать далее

Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1

Reading time68 min
Views13K

С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.

Читать далее

Слушаем ZX Spectrum музыку с MIDI-плеера

Level of difficultyMedium
Reading time9 min
Views6.6K

Как-то раз долгие годы назад у меня умер Спектрум. Уже и не вспомню, что с ним случилось, но возиться с ремонтом желания не было, ибо на замену давно хотелось новенький ZX Evolution.

Все более-менее полезные и выглядящие целыми детали были сняты, в том числе и музыкальный сопроцессор YM2149F. И как раз в нужный момент попалась статья @Z80A о сборке плеера на базе Arduino, который я незамедлительно начал собирать.

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

Однако, недавно мне попалась интересная штуковина — Casio FD-1. Это MIDI-плеер, играющий файлы с дискет в обычный MIDI-порт со штекером типа DIN-5.

Попробуем её приспособить для прослушивания музыки со спектрума!

LD DE, _ARTICLE : LD HL, _BRAIN : LDIR

Information

Rating
Does not participate
Date of birth
Registered
Activity