Design, develop, and maintain embedded software in C++ (often C++11 / 14 / 17 or newer) for Linux-based embedded systems.Write efficient, robust, and optimized code for resource-constrained environments.Implement and optimize low-level drivers, communication protocols (e.g., I2C, SPI, UART, CAN, Ethernet, USB), and system software.Work on user-space applications, daemons, and shared libraries.Develop firmware for various hardware platforms, including microcontrollers, microprocessors, and SoCs (System-on-Chips).Linux Specifics :
- Strong experience with Linux operating systems, including kernel and device driver development.
- Hands-on experience with building, configuring, and customizing the Linux kernel.
- Familiarity with Linux OS internals, memory management, inter-process communication (IPC), and thread programming.
- Experience with tools like the Yocto Project (for building custom Linux distributions), BusyBox, Buildroot, etc.
- Knowledge of device trees and hardware abstraction layers.
- Experience with command-line tools and scripting (Bash).
Debugging and Testing :
- Perform system-level debugging and troubleshooting on target hardware platforms.
- Utilize debugging tools such as GDB, JTAG, oscilloscopes, logic analyzers, and hardware-in-the-loop (HIL) testing.
- Conduct unit testing, integration testing, and system validation.
- Participate in code reviews to ensure code quality, maintainability, and adherence to coding standards (e.g., MISRA for safety-critical systems)
Skills Required
C++, Embedded Software, Device Driver Development, busybox