Low-level\Embedded programmer\Инженер по низкоуровневому программированию (Common yadro platform)

Дата размещения вакансии: 11.09.2024
Работодатель: YADRO
Уровень зарплаты:
з/п не указана
Город:
Санкт-Петербург
Требуемый опыт работы:
От 3 до 6 лет

Команда Common Yadro Platform разрабатывает программную экосистему для продуктов компании.

Мы создаём слои управления аппаратной платформой и ОС, Linux-based дистрибутивы и общие для продуктов сервисы на Golang. Common Yadro Platform позволяет продуктовым командам сосредоточиться на разработке бизнес-логики и берет на себя бо́льшую часть жизненно важных функций платформы, предоставляя необходимые интерфейсы для вышележащих уровней ПО.

В команду разработки ищем emdedded-специалистов c опытом работы с аппаратурой в крупных Enterprise или Open Source проектах. Приветствуется любая комбинация продуктового опыта включая низкоуровневое программирование, администрирование систем, embedded или real-time разработку. Предстоит разбираться в аспектах работы системы под продуктовой нагрузкой, понимать как продукты работают в целом, быть готовым писать и портировать патчи, анализировать и оживлять аппаратуру на различных этапах её готовности, а так же помогать с запуском и отладкой дистрибутива в продуктах.

Чем Вам предстоит заниматься:

  • разрабатывать HAL интерфейсы, писать или править драйверы, реализовывать в ядре ioctl для работы с железом;
  • выполнять Bring-Up разрабатываемого компанией HW, помогать продуктовым командам с настройкой сложных аппаратных конфигураций;
  • разрабатывать эффективные способы виртуализации систем, создавать QEMU устройства и Mock серверы, продумывать требования к гипервизорам;
  • читать dmesg, отлаживать загрузчики, прошивки, ядро, анализировать и решать проблемы работы ОС и приложений на разных аппаратных архитектурах;
  • исследовать возможности по трассировке системной производительности, разрабатывать подходы по её анализу с помощью eBPF;
  • проектировать удобные механизмы на уровне ядра для Fault Injection расширяя существующие в Linux.

Что мы ожидаем от будущего члена команды:

  • опыт работы в области Embedded Systems, Systems Engineering, Linux Engineering от трёх лет;
  • представление о современном аппаратном обеспечении: устройство памяти, шин данных, систем ввода-вывода, PCIe, DMA, IRQ, NUMA, IOMMU;
  • знание ядра Linux и принципов его работы;
  • системное программирование на одном из языков: C, Rust, Go;
  • знание английского на уровне чтения и написания технической документации.

Дополнительно приветствуем:

  • понимание базовых принципов функционирования сетей, систем хранения данных или телекоммуникационного оборудования;
  • опыт диагностики проблем производительности на уровне ОС и Hardware;
  • умение обращаться с осциллографами, логическими анализаторами, программаторами является плюсом;
  • умение читать принципиальные схемы и код для FPGA, совместно с разработчиками разбираться с проблемами в PCB и схемотехнике;
  • опыт написания драйверов для UNIX-like систем;
  • умение писать системные приложения и демоны под GNU/Linux;
  • опыт автоматизации и написания скриптов на bash и Python/Perl.