Design and implement software for a variety of devices - from resources limited to based on sophisticated SoCs
Develop a complete software stack from top (application layer) to bottom (BSP)
Interact with Product Owners and Architects in order to facilitate the specification of projects
Be open to research and learn missing know-how as you go
Work efficiently and effectively in an Agile development team
Be responsible and accountable for consistency with the specification, quality, and performance
Requirements
Must haves - Solid knowledge of C++ (and C) - Solid understanding of Linux operating system, especially on embedded systems - Experience with Linux system programming - Experience with Linux build systems e.g. Buildroot, Yocto - Experience with bootloaders (U-Boot) - Ability to prepare bootloader and Linux kernel to work on new HW platforms (BSP) - Good understanding of embedded systems and embedded software - Understanding of the embedded hardware interfaces, ability to debug hardware - Fluency with GIT (or similar) source code versioning systems - Good command of English - 5 years of Linux programming experience
Nice-to-haves - Knowledge of Rust, Python - Thorough knowledge of data structures and algorithms - Good understanding of object-oriented design principles and practices - RTOS-related knowledge - Experience with hardware-accelerated data processing (using HW components available in SoC) - Experience with Gstreamer (multimedia framework), OpenCV, and image processing - Experience with kernel device drivers - Good understanding of TDD principles and practical knowledge of at least one testing framework
Shortlisted candidates will be offered 1 Year Contract employment.