Pull to refresh
4
0.1

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

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

Level of difficulty Medium
Reading time 1 min
Views 3.7K

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

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

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

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

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

CAN шина

Reading time 3 min
Views 16K

Всем привет! Я начинающий разработчик и увлекся Embedded стороной вопроса. Лучший способ запомнить информацию - написать какой нибудь конспект и поделиться им. Ниже моя краткая выжимка о CAN шине и передаче данных через нее.

Читать далее
Total votes 31: ↑18 and ↓13 +5
Comments 8

Имитация трёхмерных зданий в 2D-игре

Level of difficulty Medium
Reading time 7 min
Views 14K

Создаём объём при помощи света и теней.

Игра двухмерная, разрабатывается на Game Maker Studio 2 и во время работы я столкнулся с множеством задач а-ля «должно быть красиво». Где-то пришлось придумать свой велосипед, где-то повезло наткнуться на описание решения похожих задач.

В свое время меня очень вдохновила статья про рендер в Graveyard Keeper - это очень классный материал для разработчика 2D игр, в сети подобного довольно мало. Поэтому надеюсь, что моя статья тоже послужит для кого-то источником вдохновения.

Внутри есть гифки и картинки!
Total votes 67: ↑67 and ↓0 +67
Comments 16

Как я ограничил свое экранное время и поборол бессонницу

Reading time 10 min
Views 9.5K

15 января 2019 года на часах 2 часа ночи — я не могу уснуть. Мне не приятно сама компания с собой, я только что ушел из стартапа, набрал вес, потерял кучу времени, еле сводил концы с концами и в этот момент совершенно не понимал, как быть дальше. У каждого ночью намного все хуже, чем днем…

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

Читать далее
Total votes 23: ↑20 and ↓3 +17
Comments 7

Как проходить архитектурные секции

Reading time 6 min
Views 12K

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

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

Читать далее
Total votes 12: ↑10 and ↓2 +8
Comments 8

Обзор шины SPI и разработка драйвера ведомого SPI устройства для embedded Linux (Часть первая, обзорная)

Reading time 13 min
Views 163K
В этой статье я хочу провести краткий обзор шины SPI (интерфейса, широко распространённого во встраиваемой технике, используемого для подключения различных устройств) и попытаюсь описать процесс создания драйвера протокольного уровня SPI устройства для Linux. Данный документ не претендует на роль полного руководства, а скорее преследует цель указать нужное направление. Так как статья не вошла в размер одного топика, мне пришлось разбить её на две части.

0. Вместо введения


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

Для кого эта статья?
В первую очередь, для новичков, каковым являюсь и я. На форумах по embedded Linux очень часто можно встретить вопрос: «А как на этой плате работать с SPI?». Именно на него я и попытаюсь дать ответ. В качестве примера, я приведу код написанный для работы с моим тестовым SPI устройством.
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Comments 13

Пошаговый запуск программы в Linux x86, или как добраться до main()?

Reading time 18 min
Views 22K


Статья предназначена для тех, кто хочет понять процесс загрузки программ в Linux. В частности, здесь пойдет речь о динамической загрузке файлов ELF x86. На основе изложенной информации вы сможете лучше понять, как устранять проблемы, возникающие в программе еще до запуска main.
Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Comments 10

Борьба с робозвонками выходит на новый уровень — телекомы США ограничат нежелательную активность

Reading time 3 min
Views 11K

Рассказываем, как развивается борьба с «телефонным спамом» в США, чего уже удалось добиться регуляторам и как они планируют закрепить успехи — далее помогать гражданами отбиваться от усиливающегося шквала нежелательных звонков с рекламными объявлениями и участившимися во время кризиса попытками получения денежных средств обманным путем.

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

Это норма — 4: решение проблем с картами нормалей

Reading time 9 min
Views 32K
image

Часть 1: что такое карты нормалей и как они работают

Часть 2: как запекаются карты нормалей

Часть 3: типы карт нормалей

Это четвёртая часть туториала о картах нормалей, но она независима от остальных частей и её можно читать отдельно.

Здесь я перечисляю проблемы карт нормалей, с которыми я сталкивался за годы работы, и некоторые решения, позволяющие их устранить.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 1

Это норма — 2: как запекаются карты нормалей

Reading time 6 min
Views 24K
Это вторая часть серии туториалов о картах нормалей. Первая часть находится здесь, но для понимания второй части читать её не обязательно.

Общий принцип запекания карты нормалей относительно прост: у нас есть lowpoly-модель с UV-координатами и highpoly-модель; мы переносим информацию о нормалях с highpoly на lowpoly. Благодаря этому lowpoly будет отражать свет так же, как highpoly.

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

Если вы не контролируете нормали вершин lowpoly-модели, то потеряете контроль над картой нормалей.

image
Total votes 22: ↑22 and ↓0 +22
Comments 0

Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

Reading time 30 min
Views 59K

C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем вглубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


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

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit

Reading time 4 min
Views 25K
Уважаемые друзья!

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

Умный дом для заказчика в основном «игрушка» которым можно похвастаться перед друзьями, но эти игры стоят не малых усилий интеграторам!

Речь пойдет о некоторых проблемах и решениях, связанных именно с освещением в доме, как о неотъемлемом блоке «умного дома».

Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.

Решение: Использовать распределенные модули управления с внутренней логикой, по нашему опыту одним из самых зарекомендовавших себя устройств в этом — программируемое реле ПР200 производства компании ОВЕН. Советуем использовать версию 220в, т.к. бытовые выключатели рассчитаны именно на это напряжение и будет меньше проблем с логической «единицей» на дискретном входе.

image

Это устройство имеет 8 каналов (реле) которые можно запрограммировать с использованием внутренней логики (как распределенную систему), дополнительно подключаются еще модули расширения 2шт. по 8 каналов, но тут есть риск остаться без большего количество управляемых светильников при выходе из строя самого ПР200 (8 каналов против 24), если соберетесь экономить, подумайте!

image

Несмотря на то, что программу выглядит просто, к ней мы шли несколько лет не по своей вине, компания Овен относительно недавно (после появления ПР200) добавила возможность управлять сетевой переменной как с наружи, так и изнутри.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Comments 36

Новый алгоритм поиска пути в Factorio

Reading time 6 min
Views 22K

На прошлой неделе мы говорили в своём блоге об изменениях, которые позволят врагам (biters, кусакам) не наталкиваться друг на друга, но это было не единственное обновление, связанное с biter-ами. Совпало так, что в обновления этой недели вошло то, над чем мы работали предыдущие несколько недель — обновление системы поиска пути для врагов.

Поиск пути


Когда юнит хочет куда-то переместиться, ему сначала нужно понять, как туда добраться. В самом простом случае можно двигаться прямиком к цели, но на пути иногда возникают препятствия — скалы, деревья, гнёзда врагов (spawners), юниты игрока. Чтобы проложить дорогу, мы должны сообщить функции поиска пути (pathfinder) текущую и конечную позиции, а pathfinder вернёт нам (возможно, через много тактов) путь, который просто является набором промежуточных точек (waypoints), по которым должен двигаться юнит, чтобы добраться до места назначения.

Для выполнения своей работы pathfinder использует алгоритм под названием A* (произносится «A star»). Простой пример поиска пути при помощи A* показан на видео: biter хочет найти путь в обход скал. Функция поиска пути начинает исследовать карту вокруг biter-а (исследование показано белыми точками). Сначала она пытается пойти напрямик к цели, но как только достигает скал, «разливается» в обе стороны, пытаясь найти позицию из которой снова можно будет двигаться к цели.
Total votes 58: ↑57 and ↓1 +56
Comments 30

C, C++ и DotNet decompile — основы реверса. Решение задач на реверсинг с r0от-мi. Часть 1

Reading time 3 min
Views 19K
image

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

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

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 6

Разработка монолитной Unix подобной OS — Куча (4)

Reading time 7 min
Views 2.9K
В предыдущей статье мы с вами реализовали системный журнал ядра. Теперь пришло время реализовать менеджер динамической памяти.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 2

22 сайта для программиста, которые помогут заговорить на английском

Reading time 3 min
Views 123K
Хабр, привет!

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

Приступим!

Учить лексику


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

ЛеоПереводчик

С этим плагином удобно переписываться с коллегами. Он автоматически переводит непонятные слова и выражения. Незаменимый инструмент, когда нет времени на доскональные переводы и нужен срочный ответ.
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Comments 15

Разработка под Docker. Локальное окружение. Часть 1

Reading time 3 min
Views 68K
Возможно, одна из самых основных причин почему мне нравится докер это то, что он позволяет избавиться от необходимости установки на компьютер различных сервисов. К их числу можно отнести и сам веб-сервер Apache или Nginx, базы данных и прочие компоненты инфраструктуры приложения. Вся инфраструктура прописана в конфигурационном файле docker-compose.yml и запускается одной командой вместе с вашим приложением. Все что нужно разработчику работающему с докером, это по сути сам докер и любимая среда разработки и ВСЕ!
Читать дальше →
Total votes 47: ↑38 and ↓9 +29
Comments 82

8 простых UI приёмов чтобы сделать дизайн-прототип динамичным, не прибегая к анимации

Reading time 6 min
Views 31K


Материал этой статьи является следствием моих дизайн-экспериментов и выводов за последний год-полтора непрерывного дизайн гринда. Я неустанно собирал ui kit’ы, экспериментировал с контентом в плейсхолдерах, стилями, тенями текстами и состояниями, чтобы понять влияет ли это на конверсию. Иначе говоря, смогу ли я увеличить продажи дизайн-продуктов для Figma, если добавлю немного визуальной динамики в статичные дизайн-макеты, чтобы сделать темплейты интереснее и функциональнее.
Читать дальше →
Total votes 43: ↑37 and ↓6 +31
Comments 21

Как разрабатываются и производятся процессоры: изготовление чипа

Reading time 9 min
Views 45K
image

Это третья статья из серии о проектировании ЦП. В первой статье мы рассмотрели архитектуру компьютера и объяснили его работу на высоком уровне. Во второй статье говорилось о проектировании и реализации некоторых компонентов чипа. В третьей части мы узнаем, как архитектурные проекты и электрические схемы становятся физическими чипами.

Как превратить кучу песка в современный процессор? Давайте разберёмся.

Часть 1: Основы архитектуры компьютеров (архитектуры наборов команд, кэширование, конвейеры, hyperthreading)
Часть 2: Процесс проектирования ЦП (электрические схемы, транзисторы, логические элементы, синхронизация)
Часть 3: Компонование и физическое производство чипа (VLSI и изготовление кремния)
Часть 4: Современные тенденции и важные будущие направления в архитектуре компьютеров (море ускорителей, трёхмерное интегрирование, FPGA, Near Memory Computing)

Как говорилось ранее, процессоры и вся другая цифровая логика составлены из транзисторов. Транзистор — это переключатель с электрическим управлением, который может включаться и отключаться подачей или отключением напряжения на затворе. Мы сказали, что существует два вида транзисторов: nMOS-устройства пропускают ток, когда затвор включён, а pMOS-устройства пропускают ток при выключенном затворе. Базовая структура процессора — это транзисторы, созданные из кремния. Кремний — это полупроводник, потому что он занимает промежуточное положение — не проводит ток полностью, но и не является изолятором.

Чтобы превратить кремниевую пластину в практическую электрическую схему добавлением транзисторов, производственные инженеры используют процесс под названием "легирование". Легирование — это процесс добавления в базовый субстрат кремния тщательно выбранных примесей для изменения его проводимости. Цель заключается в том, чтобы изменить поведение электронов так, чтобы мы могли ими управлять. Существует два вида транзисторов, а значит, и два основных вида легирования.
Читать дальше →
Total votes 36: ↑36 and ↓0 +36
Comments 10
1

Information

Rating
3,007-th
Location
Россия
Registered
Activity