О компании
На рынке ИТ мы работаем вот уже 16 лет. В штат компании входит более 300 сотрудников. Центральный офис компании расположен в Москве, собственное производство и дополнительный офис - в городе Орел.
Мы расширяем команду направления RUBETEK-TELECOM.
# C/C++ SoC Engineer (Embedded Linux, SoC / HLS / PS–PL Integration / Linux Kernel)
Чем предстоит заниматься
Вы будете разрабатывать алгоритмы цифровой связи для современных спутниковых и широкополосных радиосистем.
Мы ищем разработчика, который способен работать на границе программного обеспечения и аппаратуры и понимает SoC как единую систему. Разработка программных компонентов и алгоритмов для SoC-платформ: высокоуровневый синтез вычислительных узлов, взаимодействие PS и PL, Embedded Linux, драйверы ядра и высокопроизводительный обмен данными.
Основные задачи
•разработка и оптимизация алгоритмов на C/C++ для последующего высокоуровневого синтеза;
•разработка вычислительных модулей в Vitis HLS;
•оптимизация HLS-реализаций по производительности, latency и использованию ресурсов FPGA;
•организация высокоскоростного обмена данными между PS и PL;
•разработка программного интерфейса взаимодействия с аппаратными модулями PL;
•разработка и модификация Linux kernel drivers;
•работа с DMA, IRQ, memory-mapped устройствами и символьными устройствами;
•разработка сетевых драйверов Linux;
•разработка высокопроизводительных механизмов передачи данных с минимальным количеством копирований;
•интеграция и отладка аппаратно-программных компонентов SoC;
•профилирование производительности и поиск узких мест;
•совместная отладка системы с разработчиками FPGA / PL;
•участие в разработке архитектуры аппаратно-программной платформы.
Требования к кандидату
C/C++ и HLS
•уверенное владение C/C++;
•опыт промышленной разработки от 3 лет;
•практический опыт разработки алгоритмов для High-Level Synthesis;
•опыт работы с Vitis HLS;
•понимание особенностей синтезируемого C/C++ кода;
•практический опыт применения HLS-оптимизаций: pipeline, unroll, array partitioning, dataflow, оптимизация памяти и интерфейсов, управление latency и throughput;
•понимание влияния структуры C/C++-алгоритма на итоговую FPGA-реализацию.
SoC и PS–PL взаимодействие
•опыт разработки для SoC с FPGA programmable logic;
•понимание архитектуры PS / PL;
•уверенное понимание AXI4, AXI4-Lite и AXI4-Stream;
•опыт работы с DMA;
•понимание memory-mapped и streaming-интерфейсов;
•опыт организации высокопроизводительного обмена данными между процессорной системой и PL.
Embedded Linux
•опыт разработки под Linux;
•опыт сборки и конфигурирования Embedded Linux;
•опыт работы с PetaLinux и/или Yocto;
•опыт настройки и модификации Device Tree;
•понимание архитектуры Linux kernel и драйверной модели;
•опыт разработки или модификации Linux kernel modules;
•опыт работы с DMA, IRQ, character devices, mmap, memory-mapped I/O, ioctl, sysfs / debugfs.
Linux Network Stack
•опыт разработки Linux network drivers;
•понимание net_device и опыт работы со sk_buff;
•понимание Linux networking subsystem;
•опыт работы с POSIX Sockets;
•понимание механизмов высокопроизводительной передачи данных и zero-copy;
•опыт или понимание mmap, XDP, zero-copy DMA и shared memory.
Отладка и профилирование
•опыт кросс-компиляции и кросс-отладки приложений для Embedded Linux;
•опыт работы с GDB и JTAG;
•опыт пошаговой отладки приложений и драйверов;
•опыт отладки SoC-систем через Vitis IDE;
•опыт совместной аппаратно-программной отладки PS и PL;
•умение анализировать проблемы DMA, IRQ, memory mapping и взаимодействия процессора с FPGA;
•опыт использования Vitis Analyzer / Vitis Trace;
•понимание методов измерения latency и throughput;
•опыт профилирования производительности аппаратно-программной системы.
Работа с сетевым трафиком
•навыки анализа сетевого трафика;
•понимание причин потерь пакетов, jitter и ограничений пропускной способности;
•опыт работы с Wireshark, tcpdump и iperf3.
Будет преимуществом
•опыт работы с AMD/Xilinx Zynq / Zynq UltraScale+ MPSoC;
•опыт работы с Vitis / Vivado;
•опыт разработки AXI DMA / AXI Stream-based систем;
•опыт работы со scatter-gather DMA;
•опыт разработки real-time или near-real-time систем;
•опыт высокоскоростной потоковой обработки данных;
•опыт работы с Ethernet MAC / PHY;
•понимание cache coherency и особенностей работы DMA с CPU cache;
•опыт работы с ARM-процессорами и NEON-оптимизацией;
•опыт разработки систем цифровой связи;
•опыт интеграции software с DSP, FPGA или RF-подсистемами.
Для нас важно
•анализировать архитектуру прохождения данных от PL до пользовательского приложения;
•находить ограничения по throughput и latency;
•понимать взаимодействие CPU, памяти, DMA и FPGA;
•оптимизировать как программную, так и HLS-часть системы;
•локализовывать проблемы между Linux, драйвером и аппаратным модулем;
•эффективно взаимодействовать с разработчиками FPGA;
•самостоятельно доводить функциональность от прототипа до стабильно работающего решения.
Мы предлагаем
•Оформление по ТК РФ;
•График работы 5/2 с 10.00 до 19.00 с возможностью небольших корректировок в пределах часа, что обеспечивает гибкость и удобство;
•Стабильную, конкурентную заработную плату;
•Вы будете заниматься интересной работой в инновационной компании, где создают передовые решения и технологии;
•Вас ожидает позитивная и амбициозная команда профессионалов, с которыми вы будете сотрудничать и расти;
•У нас развитая корпоративная культура, которая создает благоприятную рабочую атмосферу.