Как стать автором
Поиск
Написать публикацию
Обновить
69.13

Системное программирование *

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Дорабатываем прошивку USB 3.0, используя анализатор SignalTap, встроенный в среду разработки Quartus

Время на прочтение9 мин
Количество просмотров4.4K
В прошлой статье мы сделали черновые прошивки для контроллера FX3 и ПЛИС, чтобы начать работу с шиной USB 3.0. Статья так разрослась, что проверку работоспособности системы мы отложили на потом. Сегодня мы проведём эту проверку (а как выяснится по ходу работ – ещё и оптимизацию «прошивки» для вывода работы на максимальную скорость).

Чтобы повысить полезность статьи, проверку мы будем производить при помощи логического анализатора SignalTap, встроенного в среду разработку Quartus Prime. Он позволит нам снимать временные диаграммы, не подключая никаких щупов к системе и не покупая никакого дополнительного оборудования.


Читать дальше →

Начинаем опыты с интерфейсом USB 3.0 через контроллер семейства FX3 фирмы Cypress

Время на прочтение14 мин
Количество просмотров14K
В целом, основной цикл статей про работу с комплексом Redd можно считать завершённым. Мы познакомились с методиками доступа к основным компонентам комплекса, научились писать и отлаживать на нём программы для центрального процессора, при этом локально используя хоть Linux, хоть Windows. Мы научились разрабатывать «прошивки» для ПЛИС, а также начерно освоили типовой цикл их разработки (написание кода моделирование, запуск в железе). Вроде, всё.

Но тут мне пришлось освоить работу с шиной USB 3.0 через контроллер семейства FX3 фирмы Cypress. Пока свежи воспоминания, я решил задокументировать детали процесса, так как сделав всё по фирменным описаниям, можно либо не получить ничего, либо получить не совсем оптимальную систему. И снова вышел целый блок статей. В первой из них, мы рассмотрим, где взять «прошивку» для самого контроллера, как её собрать и залить в него. Также сделаем базовую «прошивку» для ПЛИС.


Читать дальше →

Вычисления без инструкций на x86

Время на прочтение10 мин
Количество просмотров11K

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

Читать дальше

Конфигурируем FT4232H c помощью утилиты ftdi_eeprom

Время на прочтение3 мин
Количество просмотров5.7K


FT4232H – это интегральная микросхема преобразователя USB – UART, поддерживающая режим High Speed на стороне USB и имеющая четыре порта на стороне UART.


Подключив к этой микросхеме EEPROM-память можно задать специфические режимы работы или изменить данные производителя.


Разберемся на примере и сконфигурируем FT4232H непосредственно в системе под управлением GNU/Linux. Делать это будем с помощью утилиты ftdi_eeprom.

Читать дальше →

Перевод вводной статьи от разработчиков D-Bus

Время на прочтение13 мин
Количество просмотров14K

Это вводная статья о технологии межпроцессного взаимодействия D-Bus, написанная его разработчиками. Дан краткий обзор ключевых моментов технологии. Рекомендуется читать перед изучением спецификации (русский перевод).

Читать далее

Андрей Терехов: от Фортрана до Питона

Время на прочтение18 мин
Количество просмотров9.5K


Этой осенью Андрей Терехов — завкафедрой системного программирования Матмеха СПбГУ, профессор, доктор физмат наук — рассказывал нашим коллегам об истории популярных языков программирования и их проникновении в СССР. Вместе с Андреем Николаевичем мы подготовили на основе его лекции материал о том, как разные языки пересекали железный занавес, как их транслировали на разные архитектуры, как некоторые из них входили в моду. Общие тенденции и личные впечатления — для всех, кто хочет составить общее представление об истории вопроса.
Читать дальше →

BPF для самых маленьких, часть вторая: разнообразие типов программ BPF

Время на прочтение26 мин
Количество просмотров16K

Продолжаем серию статей про BPF — универсальную виртуальную машину ядра Linux — и в этом выпуске расскажем о том, какие типы программ BPF существуют, и как они используются в реальном мире капиталистического чистогана. Кроме этого, в конце статьи приведено некоторое количество ссылок, в частности, на две с половиной существующие книжки про BPF.


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


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


image

Читать дальше →

Rust 1.48.0: упрощение создания ссылок и псевдонимы поиска

Время на прочтение4 мин
Количество просмотров3.7K

Команда Rust рада сообщить о выпуске новой версии, 1.48.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.48.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Что вошло в стабильную версию 1.48.0


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

Читать дальше →

Реализация epoll, часть 4

Время на прочтение5 мин
Количество просмотров2.7K
Это — последний материал из серии четырёх статей (часть 1, часть 2, часть 3), посвящённой реализации epoll. Тут речь пойдёт о том, как epoll передаёт события из пространства ядра в пользовательское пространство, и о том, как реализованы режимы срабатывания по фронту и по уровню.



Эта статья написана позже остальных. Когда я начинал работу над первым материалом, самой свежей стабильной версией ядра Linux была 3.16.1. А во время написания данной статьи это уже версия 4.1. Именно на коде этой версии ядра и основана данная статья. Код, правда, изменился не особенно сильно, поэтому читатели предыдущих статей могут не беспокоиться о том, что что-то в реализации epoll очень сильно изменилось.
Читать дальше →

Реализация epoll, часть 3

Время на прочтение6 мин
Количество просмотров4.6K
В предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll, и о том, как epoll получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.


Читать дальше →

Реализация epoll, часть 2

Время на прочтение7 мин
Количество просмотров5K
Публикуя перевод первой статьи из цикла материалов о реализации epoll, мы провели опрос, посвящённый целесообразности перевода продолжения цикла. Более 90% участников опроса высказались за перевод остальных статей. Поэтому сегодня мы публикуем перевод второго материала из этого цикла.


Читать дальше →

О кэшах в микроконтроллерах ARM

Время на прочтение10 мин
Количество просмотров18K
image Привет!

В предыдущей статье мы для ускорения графики на микроконтроллере в Embox применяли процессорный кэш. При этом мы использовали режим «write-through». Тогда мы писали о некоторых преимуществах и недостатках связанных с «write-through» режимом, но это был лишь беглый обзор. В этой статье я, как и обещал, хочу подробней рассмотреть типы кэшей в ARM микроконтроллерах, а также сравнить их. Конечно, все это будет рассмотрено с точки зрения программиста, и вдаваться в детали работы контроллера памяти в данной статье мы не планируем.
Читать дальше →

Практические опыты с USB-анализатором на базе Redd

Время на прочтение18 мин
Количество просмотров3.3K
Три статьи назад мы сделали голову для шинного анализатора USB, после чего – обсуждали вопросы моделирования и гоняли эту голову на моделях. Правда, всё это было не зря. В прошлой статье я показательно нашёл пару сбоев логики, а в реальности их было чуть больше. Поэтому, начни я всё проверять сразу в железе — сидел бы и сокрушался: «А чего оно так себя ведёт?» Теперь же я уверен, что в поведенческой модели вся логика делает именно то, что было задумано. Что дальше? Те, кто делает серьёзные большие проекты, дальше переходят к моделированию синтезированной модели, а в конце — модели, привязанной к реальной топологии упаковки в ПЛИС (так называемое Gate-Level моделирование). Там уже учитываются задержки на всех трассировочных ресурсах при именно этом результате компиляции. Но проект нашей сложности этого не требует. Нам было достаточно убедиться, что вся логика реализована верно. И теперь мы можем перейти к сборке реального анализатора и проверке его работы на практике.


Читать дальше →

Ближайшие события

Программист в автомобильной индустрии. Через тернии к звездам

Время на прочтение19 мин
Количество просмотров19K

image


Вступление


Фото сделано мной при посещении шоу-рума BMW Мюнхена.


Небольшая статья о там, как живется и чем дышится в большом и неповоротливом Automotive мире. Мире разработки программного обеспечения, какие технологии используются, какие задачи приходится решать, все исключительно на личном опыте. Да, тут я истины не открою, автомобильное ПО как правило использует устаревшие технологии и достаточно длинные циклы разработки, хотя конечно бывают исключения — Tesla, например. Хотя это лишь мои предположения по тому, что я могу прочесть об этой компании в интернете. Текст содержит небольшие вставки биографии автора.


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

Читать дальше →

Что нового в Windows 10 October 2020 Update

Время на прочтение6 мин
Количество просмотров9K


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

Выполняя это обязательство, мы рады поделиться функциями и улучшениями, которые появятся в обновлении Windows 10 October 2020 Update, о многих из которых просили вы сами, чтобы работать в Windows было еще удобнее. Среди новых функций — любимая пользователями комбинация клавиш Alt + Tab, которая теперь позволяет получать доступ к вкладкам Microsoft Edge, оптимизированный дизайн меню «Пуск» и многое другое. Если вы хотите узнать, как получить обновление, прочитайте эту статью (в англоязычном блоге).


Читать дальше →

Паттерны в Terraform для борьбы с хаосом и ручной рутиной. Максим Кострикин (Ixtens)

Время на прочтение21 мин
Количество просмотров10K


Казалось бы, разработчики Terraform предлагают достаточно удобные best practices для работы с AWS-инфраструктурой. Только есть нюанс. Со временем количество окружений увеличивается, в каждом появляются особенности. Появляется почти копия стека приложений в соседнем регионе. И Terraform-код нужно аккуратно скопировать и отредактировать согласно новым требованиям или сделать снежинку.


Мой доклад про паттерны в Terraform для борьбы с хаосом и ручной рутиной на крупных и долгих проектах.

Реализация epoll, часть 1

Время на прочтение6 мин
Количество просмотров16K
Сегодня мы публикуем перевод первой статьи из серии материалов, посвящённых реализации epoll в ядре Linux 3.16.1*. Автор исходит из предположения о том, что читатели знакомы с API и с использованием epoll. Он уделяет основное внимание реализации подсистемы epoll в ядре Linux, а не особенностям её применения. Если вы не знаете о том, как пользоваться epoll — автор рекомендует сначала почитать документацию. Это значительно облегчит понимание деталей реализации этого механизма.



* — Linux 3.16.1 достаточно старое ядро, но информация работы с epoll актуальна и сегодня (прим. переводчика).
Читать дальше →

Проводим моделирование системы для проверки работоспособности головы USB-анализатора

Время на прочтение7 мин
Количество просмотров1.4K
В прошлых статьях мы прошли достаточно большой путь к созданию шинного анализатора USB. Мы разработали логический анализатор, набив руку на самой технологии, дальше – разработали голову USB-анализатора. Затем – выяснили, что код получился сложным, так что его следует отмоделировать. Но вот беда, доступная модель микросхемы ULPI разработана на языке SystemC. Мы научились работать с этим языком. Наконец-то, мы владеем всеми необходимыми навыками и готовы провести проверку нашего ядра. Приступаем!



Читать дальше →

AWS Meetup Terraform & Terragrunt. Антон Бабенко (2020)

Время на прочтение27 мин
Количество просмотров9.5K


Terraform — это популярный инструмент компании Hashicorp, для управления вашей облачной инфраструктурой в парадигме Infrastructure as a Code.


Terragrunt — это wrapper для Terraform, которая предоставляет дополнительные инструменты для хранения ваших конфигураций Terraform, работы с несколькими модулями Terraform и управления удаленным состоянием.

Читать дальше →

Rust 1.47.0: const generics для массивов, LLVM 11, Control Flow Guard и сокращение трассировок

Время на прочтение5 мин
Количество просмотров4.6K

Команда Rust рада сообщить о выпуске новой версии, 1.47.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.47.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Что вошло в стабильную версию 1.47.0


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

Читать дальше →

Вклад авторов