Статьи

Rust embedded. Stopwatch.

Hello everyone. This is my new article about Rust for embedded systems. I decided to start writing articles in English to attract a large audience (I apologize to the Russian audience). This article is about creating a stopwatch using Rust and the embedded-graphics library. Today I've made for you an example of creating a digital and analog stopwatch. For this example, you need stm32f429i-disco ...
Далее

Rust embedded. Spi и embedded-graphics.

Друзья, привет! Продолжаем тему Rust для embedded. Это уже 4 статья по теме rust embedded, для ознакомления с предыдущими статьями, вот список: Rust embedded. Rust embedded. Сиквел. Rust embedded. Gpio. Сегодня у нас в статье GPIO, SPI, графический экран SSD1306 и крейт "embedded-graphics". Задача примера по нажатию на пользовательскую кнопку на отладочной плате вращать изображение на 180 градусов, изображение выводится на дисплей SSD1306. Для ...
Далее

Rust embedded. Gpio.

Сегодня речь про gpio и rust. Gpio основной интерфейс для старта.  Сегодня мы поморгаем светодиодами на отладочной плате stm32f429i-disco и сделаем это двумя способами. Интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO) — интерфейс для связи между компонентами компьютерной системы, к примеру микропроцессором и различными периферийными устройствами. Контакты GPIO могут выступать как в роли входа, так и в роли выхода — это, как правило, ...
Далее

Rust embedded. Сиквел.

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

Rust embedded.

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

GCC для FPGA

После прочтения статьи Уничтожить монополию Америки в EDA. Иннополис делает первый шаг, мне захотелось погрузиться больше в EDA тематику и изучить, что есть в opensource на данный момент для этого. Начнем с SymbiFlow. SymbiFlow - это инструмент для FPGA с открытым исходным кодом для стремительных инноваций. SymbiFlow предназначен для обеспечения новых инноваций, а также для оптимизации и автоматизации рабочих процессов разработки под FPGA, чтобы ...
Далее

Стратегия и этапы разработки LLVM бекэнд компилятора для целевой архитектуры ShuraCore.

В данной статье рассмотрена стратегия и этапы проектирования бэкенд части компилятора с использованием инфраструктуры LLVM для целевой архитектуры ShuraCore. В статье показаны все этапы прохождения LLVM IR кода в SSA представлении к моменту получения исполняемого файла для целевой архитектуры. This article discusses a strategy and design stages of a backend part of a compiler using LLVM infrastructure for the ShuraCore target architecture. The article ...
Далее

HLS часть 2. BRAM.

Сегодня пример будет про BRAM и HLS, про BRAM было рассказано в предыдущих статьях, сегодня будем расширять знания по этой теме. HLS. Часть 0. HLS часть 1 . AXIS. Vivado HLS (High Level Synthesis) — САПР Xilinx, предназначенная для создания цифровых устройств с применением языков высокого уровня C/C++. Block Memory Generator — используется как элемент оперативного и постоянного хранения информации, данный элемент реализуется на ...
Далее

HLS часть 1 . AXIS.

Vivado HLS (High Level Synthesis) - САПР Xilinx, предназначенная для создания цифровых устройств с применением языков высокого уровня C/C++. Немного про HLS читайте в предыдущей статье. HLS. Часть 0. Протокол AXI-Stream используется, как стандартный интерфейс для соединения IP блоков, которые обмениваются данными. Интерфейс может использоваться для соединения одного главного IP, который генерирует данные, с другим IP, который принимает данные. Протокол также может быть использован ...
Далее

HLS. Часть 0.

HLS (High Level Synthesis) – применяется для создания цифровых устройств с применением языков высокого уровня. Основной целью продуктов HLS является упрощение процесса проектирования FPGA для разработчика, знакомого с программированием на языках высокого уровня, таких как C++, Rust и др. Практическое применение FPGA часто вызывает трудности для дотнетчиков, джавистов и др., которые сталкиваются с целым рядом не типичных задач: появляется необходимость понимать, как и каким ...
Далее

Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 5.

Сегодня пример посветим BRAM, немного про BRAM было рассказано в предыдущей статье, сегодня будем расширять знания по этой теме. Block Memory Generator - используется как элемент оперативного и постоянного хранения информации, данный элемент реализуется на основе блочной памяти FPGA. Запоминающее устройство, генерируемое с помощью настраиваемого модуля Block Memory Generator. Во всех элементах памяти, создаваемых с помощью генератора Block Memory Generator, для каждого порта запоминающего ...
Далее

Zynq-7000 SoC — Xilinx. Z-turn Lite. Bare metal. Часть 4. MicroBlaze.

MicroBlaze — soft-процессорное ядро, разработанное компанией Xilinx для использования в FPGA. MicroBlaze имеет универсальные средства соединения с периферией, обеспечивающее возможность применять его в разнообразных встраиваемых решениях. Для доступа к внутренней памяти FPGA (BRAM), MicroBlaze использует специальную шину LMB (DLMB, ILMB), что снижает нагрузку на другие шины. Подключение soft-процессора возможно средствами специального соединения, подобного FIFO — FSL (Fast Simplex Link). Интерфейс с soft-процессором может помочь ускорить разработку алгоритмов с большим количеством ...
Далее