Dla naszego klienta poszukujemy Embedded Linux Engineera do projektu związanego z rozwojem urządzeń IoT. Rola łączy tworzenie aplikacji działających na Embedded Linux z pracą nad systemem operacyjnym i jego integracją z platformą sprzętową. Około 70–80% czasu poświęcisz na development aplikacji w C/C++, a pozostałe 20–30% na Yocto, konfigurację systemu i integrację sprzętu. Szukamy osoby, która swobodnie porusza się zarówno w user-space Linux, jak i w obszarze systemowym – od budowania obrazu systemu po uruchamianie i debugowanie urządzenia.

Zakres obowiązków

  • Rozwój aplikacji dla urządzeń Embedded Linux w językach C i C++.

  • Tworzenie aplikacji wielowątkowych, asynchronicznych i zdarzeniowych.

  • Implementacja mechanizmów synchronizacji oraz komunikacji między komponentami.

  • Rozwój komunikacji IoT z wykorzystaniem protokołu MQTT i formatu JSON.

  • Konfiguracja usług systemowych, w tym systemd.

  • Przygotowywanie skryptów, narzędzi wspomagających oraz testów w Pythonie.

  • Konfiguracja i rozwój procesu budowania aplikacji z wykorzystaniem CMake.

  • Rozwój środowiska Yocto Project: modyfikacja recipes, konfiguracja MACHINE/DISTRO oraz integracja aplikacji i pakietów.

  • Praca z BSP, Linux Kernel, U-Boot oraz Device Tree (DTS/DTSI).

  • Uruchamianie i integracja nowego sprzętu na platformie Embedded Linux.

  • Diagnostyka problemów software’owych i sprzętowych z wykorzystaniem narzędzi pomiarowych.

Wymagania

  • Praktyczne doświadczenie z systemami Embedded Linux.

  • Dobra znajomość C i C++ w kontekście aplikacji działających w środowisku Linux.

  • Doświadczenie w programowaniu wielowątkowym oraz znajomość mutexów, semaforów i condition variables.

  • Znajomość programowania asynchronicznego i zdarzeniowego.

  • Praktyczna znajomość CMake i konfiguracji procesu budowania.

  • Znajomość Pythona w zakresie skryptów, testów i narzędzi wspomagających.

  • Znajomość MQTT, komunikacji IoT i formatu JSON.

  • Dobra znajomość systemd oraz usług systemowych Linux.

  • Doświadczenie z relacyjnymi bazami danych, w szczególności SQLite3.

  • Praktyczna znajomość Yocto Project, w tym recipes, MACHINE/DISTRO i integracji pakietów.

  • Doświadczenie w przygotowywaniu lub utrzymaniu BSP.

  • Znajomość konfiguracji Linux Kernel i U-Boot.

  • Umiejętność tworzenia i analizy Device Tree (DTS/DTSI).

  • Doświadczenie w uruchamianiu i integracji sprzętu.

  • Umiejętność korzystania z oscyloskopu, analizatora logicznego i multimetru.

  • Podstawowe umiejętności lutowania elementów SMD i przygotowywania stanowiska do debugowania.

Mile widziane

  • Git i praca z Code Review.

  • CI/CD, w szczególności GitLab CI lub Jenkins.

  • Docker.

  • Doświadczenie z architekturą ARM Cortex-A.