Pull to refresh
45
0.6
Иван Савватеев @SIISII

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

Send message

AMD и Intel собираются конкурировать с архитектурами ARM и RISC-V. Что ожидает индустрию?

Reading time4 min
Views3K

Источник.

Два крупнейших игрока на рынке процессоров с архитектурой х86 и одновременно конкуренты, AMD и Intel, на время решили стать союзниками. Почему? Чтобы успешно конкурировать с производителями чипов на архитектурах ARM и RISC-V. В рамках программы сотрудничества уже создана консультативная группа, в которую вошел, например, Линус Торвальдс. Так что все серьезно, это вам не шутки. Ну а о подробностях поговорим под катом.

Читать дальше →
Total votes 18: ↑17 and ↓1+23
Comments8

Самые быстрые мьютексы

Level of difficultyEasy
Reading time8 min
Views7.1K

Cosmopolitan Libc хорошо известна своим «полиглотным жирным бинарным» хаком, который позволяем исполняемым файлам запускаться на шести операционных системах для AMD64/ARM64. Вас может удивить, что при этом она может быть лучше С‑библиотекой для вашего продакшена. Чтобы продемонстрировать это, давайте сравним библиотеку мьютексов Cosmo с другими платформами.

Мы напишем простой тест, который создает 30 потоков, увеличивающих одно и то же число 100 000 раз. Это поможет проверить, насколько хорошо реализация мьютексов справляется с задачей при интенсивном использовании.

Читать далее
Total votes 25: ↑23 and ↓2+27
Comments7

Эмулятор БК-0010 на FPGA — часть 2

Reading time6 min
Views8.6K

Первая часть

Если вы уже успели поработать с блочным дизайном в Vivado, то могли увидеть, что внешний вид многих стандартных IP изменяется в зависимости от настраиваемых параметров. Например, модуль AXI-GPIO может быть одноканальным или двухканальным в зависимости от параметра «Enable dual channel»:

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

Также в этой части мы:

  • Рассмотрим общие сведения об архитектуре БК-0010
  • Поговорим об интерфейсах, о том, как их создавать и как с ними работать.
  • Создадим несколько вспомогательных IP, внешний вид и характеристики которых меняются в зависимости от параметров.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments5

Эмулятор БК-0010 на FPGA

Reading time8 min
Views18K


Большинство любительских проектов FPGA, опубликованных на Хабре, сделаны на оборудовании фирмы Altera (теперь Intel). Давайте для разнообразия посмотрим, что можно сделать на продукции его основного конкурента – Xilinx. Мы возьмём и сделаем достаточно большой и сложный проект, в процессе реализации которого нам понадобится:

  • Выбрать Development board и необходимые PMOD к ней
  • Определиться с дизайном проекта, выбрать clock domains и правила перехода между ними
  • Освоить основные функции Xilinx Vivado – создание проекта, работу с блочными схемами, компиляцию, симуляцию, отладку
  • Сделать несколько IP с интерфейсом AXI4
  • Поработать с внешними устройствами
  • Сделать с нуля собственный процессор с контроллером шины и обработкой прерываний
  • Написать модуль для верификации
  • Наконец собрать всё вместе и получить реализацию на FPGA легендарного (как минимум для тех, кто тогда жил) компьютера середины 80-х – БК-0010

Планируется цикл статей, в которых всё это будет подробно описано, сегодня первая из них. Проект написан на System Verilog с небольшими вставками Verilog и VHDL в тех местах, где это необходимо. От читателя требуется понимание базовых принципов языков Verilog/VHDL на уровне книжки Харрис&Харрис.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments45

Реализуем эффективный тупль с помощью C++26

Level of difficultyMedium
Reading time7 min
Views9.6K

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

Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]

И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.

В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.

Войти в мир эффективных реализаций туплей
Total votes 33: ↑30 and ↓3+37
Comments69

C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M

Level of difficultyMedium
Reading time43 min
Views14K

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

Статья предполагает, что читатель имеет базовые знания программирования bare-metal систем и языка С++, в том числе и современных стандартов. Это означает, что совсем базовые пояснения выходят за рамки этой статьи.

Читать далее
Total votes 65: ↑64 and ↓1+75
Comments30

Linux From Scratch на Zynq UltraScale+ MPSoC

Level of difficultyHard
Reading time17 min
Views4.6K

В данной статье я постараюсь описать процесс создания кастомного образа Linux на Zynq UltraScale+ MPSoCс. Каждый необходимый компонент будет собран отдельно с использованием соответствующих утилит. Статья разбита на разделы, которые шаг за шагом знакомят вас с процессом сборки и запуска системы на данной платформе.

Читать далее
Total votes 9: ↑9 and ↓0+10
Comments17

Устройство GPIO-драйверов в Linux

Level of difficultyMedium
Reading time26 min
Views7.7K

Рассмотрим, как устроены GPIO-драйверы в Linux, и почему это сделано именно так. Поймем, почему для простого мигания светодиодом в этой операционной системе надо пройти через N слоев абстракции.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments18

Ускорение проектирования РЧ-, СВЧ-устройств (1/5)

Reading time4 min
Views4.3K


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

В этом цикле обучающих статей я познакомлю вас с основными инструментами опции PADS Professional, которая предоставляет независимым инженерам и группам разработчиков мощные возможности проектирования РЧ-, СВЧ- устройств.
Читать дальше →
Total votes 8: ↑6 and ↓2+6
Comments0

Information

Rating
1,762-nd
Location
Солнечногорск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead