На рынке ИТ мы работаем вот уже 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 с возможностью небольших корректировок в пределах часа, что обеспечивает гибкость и удобство;
- Стабильную, конкурентную заработную плату;
- Вы будете заниматься интересной работой в инновационной компании, где создают передовые решения и технологии;
- Вас ожидает позитивная и амбициозная команда профессионалов, с которыми вы будете сотрудничать и расти;
- У нас развитая корпоративная культура, которая создает благоприятную рабочую атмосферу.