Job Purpose
We are seeking a Senior Embedded Linux C++ Engineer responsible for developing and stabilizing system-level C++ software on Linux-based embedded platforms.
This is a hands-on development role focused on implementing, integrating, and debugging performance-sensitive C++ components operating close to hardware and Linux OS services. This role requires strong expertise in modern C++, multithreading, and practical system-level troubleshooting within production embedded environments.
Key Responsibilities
- Develop and enhance system-level C++ modules on Embedded Linux platforms.
- Implement multithreaded components with proper synchronization and resource management.
- Integrate software with hardware interfaces and support board-level validation.
- Diagnose and resolve runtime issues such as memory leaks, race conditions, deadlocks, and performance bottlenecks.
- Troubleshoot cross-layer issues involving C++ logic, Linux OS behavior, and hardware interaction.
- Support software flashing and deployment on embedded targets.
- Contribute to embedded Linux build configuration and maintenance.
- Write unit tests for C++ modules and support automated build workflows.
- Participate in code reviews and follow established engineering practices.
Required Technical Skills- 10+ years of embedded software development experience.
- Minimum 5+ years of hands-on C++ development in Embedded Linux environments.
- Strong hands-on expertise in Modern C++ (C++11 or later), including:
- Multithreading using standard concurrency mechanisms
- Synchronization primitives (mutex, atomic operations)
- Memory management (RAII, smart pointers)
- Performance-aware design
- Proven experience developing multithreaded Linux-based C++ applications.
- Practical experience implementing and debugging Linux IPC mechanisms (sockets, shared memory, pipes, message queues).
- Strong debugging skills using GDB, strace, perf, and kernel log analysis.
- Experience working with Yocto/OpenEmbedded build systems, including image configuration.
- Experience interfacing with hardware communication protocols such as SPI, I2C, UART, USB, or Ethernet.
- Hands-on experience working with physical embedded hardware platforms, including:
- Software flashing and image deployment
- Serial console debugging
- Use of JTAG or equivalent debugging interfaces
- Basic familiarity with lab tools such as logic analyzers or oscilloscopes for issue analysis
- Experience writing unit tests for C++ modules, preferably using Google Test (gtest) or similar frameworks.
- Hands-on experience using Git for collaborative development (branching, merging, code reviews).
- Exposure to CI/CD pipelines and automated build systems, ideally Azure DevOps
- Working knowledge of Linux shell scripting; familiarity with Python for automation or tool support.
- Working knowledge of C for low-level interaction where required.
- Demonstrated experience resolving stability and performance issues in production of embedded systems.
- Experience with functional safety in embedded software (e.g. automotive, medical, aerospace)
- Good verbal and written English communication skills.
Preferred / Good-to-Have Skills
- Experience in multimedia, video processing, or performance-intensive embedded systems.
- Experience in heterogeneous architectures (e.g. ARM/FPGA)
- Familiarity with RTOS environments in addition to Linux.
- Experience working in globally distributed development teams.
- Awareness of secure coding practices in embedded systems.
- Experience in working with international development teams
Non-Technical Requirements.
- Strong ownership mindset and accountability for assigned modules.
- Structured and analytical troubleshooting approach.
- Effective collaboration across firmware, hardware, and cross-functional teams.
- High level of engineering discipline and attention to detail.
- Professional communication skills.