Pull to refresh
15
0
Андрей Усов @AndU

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

Send message

Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч.1)

Level of difficulty Hard
Reading time 127 min
Views 4.8K

Основная прелесть использования ПЛИС, на мой взгляд, состоит в том, что разработка аппаратуры превращается в программирование со всеми его свойствами: написание и отладка кода как текста на специализированных языках описания аппаратуры (HDL); код распространяется в виде параметризованных модулей (IP-блоков), что позволяет его легко переиспользовать в других проектах; распределенная разработка обширным коллективом разработчиков с системой контроля версий, такой же, как у программистов (Git); и, как и в программировании, ничтожно низкая стоимость ошибки.

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

В этой статье я хочу поделиться своим небольшим опытом «программирования» микросхем ПЛИС и тем, как я постепенно погружался в тему ПЛИСоводства. Изначально я собирался написать небольшую заметку про открытый тулчейн для синтеза Yosys. Потом — про язык SpinalHDL и синтезируемое микропроцессорное ядро VexRiscv, на нём написанное. Потом — про замену микроконтроллеров микросхемами ПЛИС на примере моей отладочной платы «Карно». Но в процессе я погрузился в историю появления Hardware Description Languages (HDL), и когда я начал писать, Остапа, как это часто бывает, понесло... В общем, получилось то, что получилось.

А еще эту статью можно рассматривать как глубокое погружение в то, что происходит вот на этом новогоднем видео.

Погрузиться сполна
Total votes 46: ↑45 and ↓1 +44
Comments 30

Как я зарабатывал $10,000 в месяц на серверах ARK: Survival Evolved

Level of difficulty Easy
Reading time 16 min
Views 84K

Я — ведущий гейм дизайнер с опытом разработки крупных, хардкорных проектов в жанрах от MMORPG и CRPG до мобильной MOBA. Почти три года мы с лучшим другом продюсировали, дизайнили, разрабатывали и занимались живым оперированием своих серверов по игре ARK: Survival Evolved. За это время мы неплохо заработали (в среднем проект приносил $6000-12000 gross ежемесячно). Конечно же, мы столкнулись с тонной сложностей и челленджей, и выучили много уроков. В этой статье я хочу не только рассказать о нашем приключении, но и поделиться выученными уроками. Оперирование кастомных серверов огромных франшиз типа Roblox, Fortnite или Minecraft и других игр похожа на разработку игр в классическом понимании, но имеет под собой свою специфику. Этот опыт будет полезен не только моддерам, но и разработчикам и продюсерам игр. 

ARK: Survival Evolved — ММО экшен от 1 и 3-го лица с крафтом, строительством и динозаврами. На динозаврах в игре можно охотиться, можно приручать, ездить на них, разводить и воевать с другими племенами в игре, и это основная фишка, привлекающая игроков. Но настоящая основная особенность игры в том, что карты — собственно, ковчеги, объединены в кластеры, внутри которых игроки могут беспрепятственно путешествовать между карт, превращая мир игры в настоящее ММО — в отличие от большинства остальных подобных игр. Это гениальная игра, о которой невозможно рассказать в двух словах, и она доводит своих игроков до настоящей аддикции, и те проводят в ней тысячи и десятки тысяч часов.

Читать далее
Total votes 124: ↑118 and ↓6 +112
Comments 44

Моддеры потратили 15 лет на исправление Knights of the Old Republic 2

Reading time 7 min
Views 24K
image

Star Wars Knights of the Old Republic 2: The Sith Lords (KOTOR2), выпущенная 6 декабря 2004 года, стала первой игрой новорождённой Obsidian Entertainment. В то время новая студия состояла всего из семи разработчиков-ветеранов, ушедших из закрытой Black Isle Studios и окопавшихся на чердаке CEO компании Фергуса Уркхарта. Но издатель LucasArts, желающий снять сливки с успеха первой KOTOR, выпущенной в предыдущем году, дал этой потрёпанной новой команде на создание сиквела всего 14-16 месяцев.

Неудивительно, что у готового продукта возникали проблемы.

Самой заметной из таких проблем, выявленных на момент выпуска игры, стало завершение побочного квеста с фабрикой HK-50. Если конкретнее, то в готовой игре это завершение квеста отсутствовало.

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

И благодаря этому возникла коллективная моддерская одержимость, длившаяся 15 лет…
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 5

Друиды 21-го века или «химичим напиток силы» в домашних условиях

Level of difficulty Medium
Reading time 31 min
Views 11K

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

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

Как я сделал игру на ChatGPT

Level of difficulty Easy
Reading time 12 min
Views 22K

Рассказываю как сделал текстовый квест на ChatGPT и с какими проблемами столкнулся в промптинге. Что и как не получалось и как потом получилось.

Внутри полный текст промпта.

Читать далее
Total votes 62: ↑59 and ↓3 +56
Comments 53

MacOS Monterey на Linux — быстро и просто?

Level of difficulty Easy
Reading time 3 min
Views 42K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →
Total votes 83: ↑79 and ↓4 +75
Comments 67

«Это их работа, они за нее деньги получают»

Reading time 11 min
Views 12K
image

«Я единственный маркетинг менеджер в компании. Меня наняли, чтобы я поддерживала сайт и страницу в фейсбук. Для меня, неопытного специалиста, эта работа была идеальной. Я быстро вошла в ритм, разобралась с техническими нюансами, работа шла. У меня было время, чтобы продолжать учебу и развитие. Все новые фишки, которые я узнавала, я пыталась применить в работе. Я полностью переделала макеты писем, изменила дизайн страницы в фейсбук, начала делать регулярные интересные посты. За полгода количество подписчиков увеличилось вдвое (притом, что страница велась до меня 3 года).

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

И вот я, крайне довольна собой, инициирую встречу с руководством и делаю им презентацию по итогам моей работы… показываю цифры… показываю динамику…. Уже в течении презентации я обратила внимание, что директор часто отвлекается и часто смотрит в телефон. На предпоследнем слайде директор меня перебивает и говорит, что наша встреча уже сильно затянулась и ему нужно уезжать. И сухо заканчивает (параллельно надевая куртку): „Спасибо Аня, интересный отчет“.
Я многого и не ожидала от этой встречи, но чтобы так…. Я проработала еще 3 месяца и перешла в другую компанию на позицию старшего SMM-специалиста. Когда я увольнялась, я увидела ноль эмоций на лице директора. Я хоть и не директор, но мне кажется, что такое вальяжное отношение к сотрудникам, которые приносят пользу, нельзя допускать даже директору»



«Смысл стараться?»


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

Сетевой интерфейс для программируемого реле с поддержкой Telegram Bot и HomeKit

Reading time 5 min
Views 15K

Как я реализовал удаленное управление и мониторинг, для программируемого реле ПР200, используя разные сервисы (Telegram Bot, HomeKit) протоколы (Modbus RTU, Modbus TCP, mqtt) и ESP32.

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

Разработчики встраиваемых систем не умеют программировать

Reading time 9 min
Views 57K

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

Редко когда речь заходит об обратной проблеме, имеющей место в куда более узких кругах разработчиков встраиваемых систем, включая системы повышенной отказоустойчивости. Есть основания полагать, что ранний опыт использования MCS51/AVR/PIC оказывается настолько психически травмирующим, что многие страдальцы затем продолжают считать байты на протяжении всей карьеры, даже когда объективных причин для этого не осталось. Это, конечно, не относится к случаям, где жёсткие ценовые ограничения задают потолок ресурсов вычислительной платформы (микроконтроллера). Но это справедливо в случаях, где цена вычислительной платформы в серии незначительна по сравнению со стоимостью изделия в целом и стоимостью разработки и верификации его нетривиального ПО, как это бывает на транспорте и сложной промышленной автоматизации. Именно о последней категории систем этот пост.

Читать далее
Total votes 130: ↑111 and ↓19 +92
Comments 239

Лучшие экспериментальные протоколы для исследования реального мира

Reading time 10 min
Views 4.1K

Золотым стандартом исследований в области машинного обучения служит «последовательная» модель эксперимента: у вас есть базовый уровень, ваш эксперимент и фиксированный, заранее определённый набор тестов. Вы оцениваете свой базовый уровень на наборе тестов, получаете базовое значение. Затем вы выполняете свой эксперимент на наборе тестов и получаете другое значение. Затем вы сравниваете эти два результата. Допустим, вы публикуете все эти артефакты и предположительно любой может воспроизвести данные результаты. Это пример хорошей науки. Но я люблю невоспроизводимые исследования.

И вот почему
Total votes 13: ↑12 and ↓1 +11
Comments 0

Однажды Microsoft забанила всю мою страну за читерство

Reading time 15 min
Views 27K

Об игре


Club Bing — это набор игр, в которые можно было играть в 2007-2012 годах. Все игры были связаны со словами, в них нужно было играть онлайн, чтобы зарабатывать очки, которые можно было тратить в онлайн-магазине для покупки призов. Одна из игр называлась Chicktionary. Цель игры: использовать 7 букв, чтобы составить как можно больше слов.


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

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

  • 123 Main St. Apt #1, Anywhere, YZ, USA
  • 123 Main St. Apt #2, Anywhere, YZ, USA
  • 123 Main St. Apt #3, Anywhere, YZ, USA

Очевидно, наилучшим соотношением стоимости к очкам обладал контроллер XBox, поэтому можно было оставить компьютер набирать очки на нескольких аккаунтах, а затем тратить все очки на покупку контроллеров. На одном форуме был пост с фотографией парня, получившего почтой примерно 100 контроллеров за один день. Он сразу же выложил их на Ebay и продал.
Читать дальше →
Total votes 109: ↑103 and ↓6 +97
Comments 23

Пишем загрузчик на Ассемблере и C. Часть 1

Reading time 22 min
Views 38K


Эта статья представляет собой ознакомительный материал о написании загрузчика на С и Ассемблере. Сразу скажу, что здесь я не буду вдаваться в сравнение производительности итогового кода, созданного на этих языках. В этой работе я просто вкратце изложу процесс создания загрузочного флоппи-образа путем написания собственного кода с последующим его внедрением в загрузочный сектор устройства. Все содержание будет разделено на цикл из трех статей, так как сразу сложно изложить всю нужную информацию и о компьютерах, и об устройствах загрузки, и о написании самого кода. В первой части я поясню наиболее общие аспекты компьютерной науки и суть процесса загрузки, а также обобщу значение и важность каждого этапа, чтобы упростить их понимание и запоминание.
Читать дальше →
Total votes 49: ↑42 and ↓7 +35
Comments 73

Пишем драйвер фреймбуфера для Raspberry Pi с LCD

Reading time 17 min
Views 11K

Прочитав монументальную серию статей о подключении LCD экрана к роутеру мне захотелось сделать то же самое. Однако многообразие используемого стека (openwrt, stm32, usb) в сочетании с отсутствием полных исходников кода но может плохо искал несколько затруднило задачу. Я решил начать с малого — написать свою реализацию framebuffer для raspberry и вывести графическую среду raspberry на LCD. Что из этого получилось, описываю далее.

Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 5

О русском языке в программировании

Reading time 11 min
Views 25K

Начну с мелочи. Удобно ли сейчас организована типичная смена раскладки клавиатуры? В смысле переключения на русский/латинский? На мой взгляд, в смартфонах и то удобнее. Не надо нажимать одновременно все эти «Shift» и «Alt». На моем первом домашнем компьютере «Электроника-901» (он же ai-PC16) было даже две специальных «пустых» клавиши примерно там, где сейчас клавиши-«окна». Одна переключала на русскую раскладку постоянно, а другая - временно (на время нажатия). Это гораздо удобнее. Впрочем, самый удобный вариант переключения в свое время я сделал сам из массивной педали от швейной машинки «Тула», просто соединив ее двумя проводами с контактами DTR и DSR разъема RS-232. В этом случае если программно установить бит DTR в «1», то наличие сигнала DSR означает, что педаль нажата, иначе – отпущена. Переключать раскладку без рук оказалось очень эргономично. Увы, по мере распространения новых интерфейсов, RS-232 постепенно сошел на нет и сейчас в ноутбуке педаль просто некуда подключить.

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

Справедливости ради: на некоторых клавиатурах есть отдельная клавиша переключения (на ней обычно нарисован глобус). Сложность в том, что на многих других компьютерах ее нет. В древнем текстовом редакторе «SideKick» я даже когда-то использовал обе клавиши «Shift», поскольку они есть всегда: правая переключала постоянно (и поэтому как «Shift» вообще не работала), а левая – временно, первые две секунды как «Shift», а уже затем как переключатель. Смысл в том, что тогда можно печатать, например, по-русски, затем, удерживая мизинцем клавишу, одно слово по-английски, затем отпустить и опять продолжать по-русски.

Читать далее
Total votes 79: ↑41 and ↓38 +3
Comments 445

Вспомнить всё. Разбираемся в полупроводниковой памяти

Reading time 17 min
Views 24K

Когда я писал в начале года статью “Кто есть кто в мировой микроэлектронике”, меня удивило, что в десятке самых больших полупроводниковых компаний пять занимаются производством памяти, в том числе две – только производством памяти. Общий объем мирового рынка полупроводниковой памяти оценивается в 110 миллиардов долларов и является постоянной головной болью участников и инвесторов, потому что, несмотря на долгосрочный рост вместе со всей индустрией микроэлектроники, локально рынок памяти очень сильно лихорадит – 130 миллиардов в 2017 году, 163 в 2018, 110 в 2019 и 110 же ожидается по итогам 2020 года.

Объем рынка памяти близок к трети всей микроэлектроники, а в десятке самых больших компаний памятью занимается половина. Так чем же полупроводниковая память такая особенная? Давайте разбираться.

Поехали!
Total votes 59: ↑59 and ↓0 +59
Comments 31

Когда за повышением зарплаты каждый месяц ходит робот

Reading time 11 min
Views 39K


Обычно повышение зарплаты выглядит следующим образом. Способ №1, гуманитарный: сотрудник через год работы задумывается, что что-то пошло не так, и пора просить повышения. Дожидается своего локального максимума усилий, и на этой волне идёт к руководителю просить больше денег. С точки зрения теории игр это выглядит как «ну, я попросил, вдруг прокатит». Никаких доводов повышать оклад у руководителя нет.

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

Разработчики традиционно пользуются способом №2: сначала проходят где-то несколько собеседований, собирают офферы и приходят с ними к руководителю. «Смотри, вот тут мне предлагают на 20% больше, но мне у нас нравится, повышай на 15%, а то я перейду». Это уже предмет обсуждения. В банальном случае проще повысить и сохранить ценного сотрудника, но это обеспечит проигрыши в связанных играх. То есть создаст прецедент. Поэтому решение принимается (в упрощённой модели) с некоторой долей рандома.

У нас у многих математика в анамнезе. Рассматривая эту игру дальше, можно сделать простой вывод, что такой диалог для сотрудника всегда стрессовый, и он случается в момент после кризисного. То есть сначала человек беспокоится, потом делает потенциально невыгодные действия (проходит собеседования в других местах), потом приходит. Части надо повышать, части не надо. Следующий вопрос: можно ли найти функцию, которая обеспечит справедливую оценку? Будет ли эта функция снимать вот эти стрессовые ситуации?

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

Читать дальше →
Total votes 101: ↑97 and ↓4 +93
Comments 325

Проблемы методологии проектирования микропроцессорных систем

Reading time 28 min
Views 8.7K

Применяемая, в настоящее время, для проектирования СБИС, методология с использованием языков описания аппаратуры, обладает общепризнанными недостатками, а именно:

- Разработка сложных СБИС требует сотни квалифицированных инженеров, несколько лет работы и затрат в миллиарды долларов.

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

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

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

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

Взлом Wi-Fi-сетей, защищённых WPA и WPA2

Reading time 3 min
Views 238K
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как взломать Wi-Fi-сеть, для защиты которой используются протоколы WPA и WPA2.


Статья написана исключительно в ознакомительных целях

Читать дальше →
Total votes 61: ↑44 and ↓17 +27
Comments 53

Энтузиаст добавил в ретроконсоль трассировку лучей

Reading time 2 min
Views 15K

Разработчик и энтузиаст Бен Картер добавил в Super NES аппаратный трассировщик лучей. Напомню что самой консоли уже 30 лет.

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

Создаём модчипы для PlayStation 1

Reading time 6 min
Views 25K

В детстве у меня была PlayStation 1 (PS1). Одна из первых, если не самая первая моя консоль, сильно повлиявшая на моё будущее.

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

Перенесёмся в день сегодняшний: у меня уже нет моей первой PS1. Припоминаю, что некоторые игры перестали загружаться и я купил себе PS2. Поэтому зачем хранить старую консоль? Оказалось, это нужно из-за ностальгии и воспоминаний. Мы скучаем о том, чего больше нет.

Недавно друг подарил мне PS1. И так началось моё приключение: как мне модифицировать эту штуку?
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 7

Information

Rating
5,058-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity