Senior Embedded Linux Engineer (Yocto)
Dołącz do projektu realizowanego dla międzynarodowej firmy inżynieryjnej, specjalizującej się w rozwoju technologii, oprogramowania oraz zaawansowanych produktów przemysłowych. Poszukujemy doświadczonego Embedded Linux Engineer, który będzie uczestniczyć w rozwoju nowoczesnego urządzenia IoT. Projekt łączy programowanie aplikacji w środowisku Embedded Linux z konfiguracją i rozwojem systemu operacyjnego przy użyciu Yocto Project. Około 70–80% czasu pracy będzie poświęcone rozwojowi aplikacji w językach C i C++, a pozostałe 20–30% zadaniom związanym z Yocto, integracją oprogramowania i konfiguracją platformy sprzętowej.
Jeśli masz doświadczenie w rozwoju aplikacji Embedded Linux, dobrze znasz C/C++ i pracowałeś z Yocto Project, zapraszamy do aplikowania!
Daily tasks
- Rozwój i utrzymanie aplikacji działających w środowisku Embedded Linux z wykorzystaniem C i C++.
- Tworzenie aplikacji wielowątkowych, asynchronicznych i zdarzeniowych.
- Implementacja komunikacji pomiędzy urządzeniami IoT z wykorzystaniem protokołu MQTT.
- Integracja aplikacji z usługami systemowymi, w tym systemd, oraz bazami danych SQLite3.
- Tworzenie skryptów, narzędzi wspierających rozwój i testów automatycznych w Pythonie.
- Konfiguracja procesu budowania oprogramowania z wykorzystaniem CMake.
- Rozwój i utrzymanie środowiska Yocto Project, w tym tworzenie i modyfikacja recipes oraz konfiguracja MACHINE i DISTRO.
- Integracja aplikacji i pakietów oraz przygotowywanie i utrzymanie Board Support Package (BSP).
- Konfiguracja i dostosowywanie Linux Kernel, U-Boot oraz Device Tree (DTS/DTSI).
- Uruchamianie i integracja nowego sprzętu na platformach Embedded Linux.
- Debugowanie i testowanie rozwiązań na poziomie oprogramowania i sprzętu.
Requirements
Wymagania Doświadczenie w pracy z systemami Embedded Linux. Praktyczna znajomość języka C w programowaniu aplikacji user-space w systemach Linux. Dobra znajomość C++ i doświadczenie w tworzeniu aplikacji dla środowisk Embedded Linux. Doświadczenie w programowaniu wielowątkowym oraz znajomość mechanizmów synchronizacji, takich jak mutex, semaphore i condition variable. Doświadczenie w tworzeniu aplikacji asynchronicznych i zdarzeniowych. Znajomość CMake i konfiguracji procesu budowania oprogramowania. Znajomość Pythona w zakresie skryptów, narzędzi wspierających, testów automatycznych i walidacji. Znajomość protokołu MQTT oraz komunikacji między urządzeniami IoT. Znajomość formatów wymiany danych, w szczególności JSON. Dobra znajomość systemd, w tym konfiguracji usług, timerów i uruchamiania aplikacji. Znajomość relacyjnych baz danych, szczególnie SQLite3. Doświadczenie w pracy z Yocto Project, w tym tworzeniu i modyfikacji recipes, konfiguracji MACHINE i DISTRO oraz integracji pakietów i aplikacji. Doświadczenie w przygotowywaniu i utrzymaniu BSP. Znajomość konfiguracji i customizacji Linux Kernel oraz U-Boot. Umiejętność tworzenia, modyfikowania i analizowania Device Tree (DTS/DTSI). Doświadczenie w uruchamianiu nowego sprzętu i integracji komponentów na platformach Embedded Linux. Wymagania sprzętowe Praktyczna umiejętność obsługi oscyloskopu, analizatora logicznego i multimetru. Umiejętność wykonywania podstawowych pomiarów elektrycznych, obejmujących napięcie, prąd i sygnały cyfrowe. Umiejętność wykonywania prostych modyfikacji sprzętowych, w tym lutowania elementów SMD. Doświadczenie w podłączaniu przewodów pomiarowych i przygotowywaniu stanowiska do debugowania sprzętu. Mile widziane Znajomość Git i doświadczenie w pracy z wykorzystaniem Code Review. Doświadczenie z narzędziami CI/CD, takimi jak GitLab CI lub Jenkins. Znajomość Dockera. Doświadczenie z architekturami ARM Cortex-A.
Must have: Linux, C, C++, Yocto, IoT, Yocto Project, MQTT, Python, CMake, JSON
Nice to have: SMD, Git, CD, GitLab CI, Jenkins, Docker, ARM