Embedded Software Engineer
Role details
Job location
Tech stack
Job description
The Embedded Software Engineer will work closely with a small multidisciplinary team to define software architectures and requirements based on high-level system objectives. The role is responsible for the design, implementation, integration, and testing of real-time software used to control hardware systems.
Requirements
This position requires hands-on experience developing software for physical control systems operating in deterministic, real-time environments. The engineer will contribute throughout the software development lifecycle, including architecture, implementation, integration, debugging, and validation., * Bachelor's degree with 2â5 years of relevant experience, or a Master's degree with at least 2 years of relevant experience.
- Experience architecting, benchmarking, designing, and programming software for physical control systems using C or C++.
- Experience developing software in hard real-time environments, including interrupt-driven, task-based, and multi-threaded systems.
- Experience working with real-time operating systems (RTOS) such as Real-Time Linux, VxWorks, Xenomai, or similar platforms.
- Experience developing software in Linux environments.
- Experience integrating and testing software and hardware systems in a laboratory setting.
- Experience using Python or MATLAB for test automation, electronic testing, and data analysis.
- Strong interpersonal, communication, and collaboration skills.
- Ability to work effectively in a team-oriented environment.
Preferred Qualifications
- Firmware development experience using VHDL or Verilog.
- Digital design and schematic capture experience.
- Analog or power electronics design experience.
- Familiarity with laboratory instrumentation, including:
- Oscilloscopes
- Function generators
- Digital multimeters
- Logic analyzers
- Frequency counters
- Experience with revision control systems such as Git.
- Experience developing low-level hardware drivers.
- Experience using debugging tools such as GDB, LLDB, or similar debuggers.
- Knowledge of communication and hardware protocols, including:
- UDP
- TCP/IP
- UART
- SPI
- I2C
- USB
- PCIe
- MIPI, * Candidates must be eligible to obtain and maintain a security clearance. An active Secret or Top Secret clearance is highly desirable.
- Candidates should be willing and able to obtain a higher-level clearance if required by the program.
- The interview process typically includes an initial virtual interview followed by a second-round interview. For local candidates, the second interview may be conducted onsite; remote interviews may be accommodated for relocation candidates.