Embedded Software Engineer Job Description
Role Overview:
We are seeking a skilled Embedded Software Engineer to design, develop, and maintain low-level software for embedded systems. This role involves working closely with hardware, implementing bare-metal and/or RTOS-based solutions, and ensuring high performance, reliability, and deterministic behavior.
Key Responsibilities:
- Design and develop low-level software for embedded systems using C/C++.
- Work closely with hardware teams to understand system architecture and requirements.
- Develop and integrate device drivers and peripheral interfaces.
- Implement software on bare-metal or RTOS-based platforms.
- Ensure real-time performance, reliability, and deterministic execution.
- Debug and optimize system performance, memory usage, and power consumption.
- Conduct unit testing and support system integration and validation.
- Troubleshoot issues across hardware-software boundaries.
- Maintain clear documentation for design, development, and testing.
Required Skills & Qualifications:
- Strong programming skills in C/C++.
- Solid understanding of microcontrollers and embedded architectures.
- Experience with bare-metal programming and/or RTOS (e.g., FreeRTOS, VxWorks).
- Knowledge of device drivers, interrupts, and peripheral interfaces (UART, SPI, I2C, etc.).
- Familiarity with real-time constraints and deterministic systems.
- Experience with debugging tools such as JTAG, oscilloscopes, or logic analyzers.
- Understanding of memory management and performance optimization.
Preferred Qualifications:
- Experience with embedded Linux systems.
- Knowledge of communication protocols (CAN, Ethernet, USB).
- Exposure to safety-critical or automotive systems is a plus.
- Familiarity with version control systems (e.g., Git).