Embedded Software Engineer
ExtropicJob Title
Embedded Software Engineer
Role Summary
Extropic is hiring an Embedded Software Engineer to design, implement, and debug firmware and embedded Linux applications across heterogeneous multi-core ARM/RISC-V systems. The role works closely with systems, IC design, test, FPGA, and physics teams to bring up boards and integrate hardware and software.
Experience Level
Mid-level β typically requires 5+ years of hands-on experience in embedded firmware and embedded Linux software development.
Responsibilities
Deliver production-quality embedded software across bare-metal, RTOS, and Linux environments, and collaborate with hardware and systems teams on bring-up and integration.
- Architect, design, and implement firmware, Linux drivers, user-space applications, and host-side tools.
- Enable inter-processor communication, synchronization, and resource sharing on heterogeneous multi-core SoCs (e.g., Cortex-R5, Cortex-A53).
- Implement multi-threaded, multi-core software with attention to power, performance, determinism, and reliability.
- Develop and maintain low-level drivers for SPI, I2C, UART, GPIO, timers, DMA, and similar peripherals.
- Debug real-time systems using JTAG/SWD, in-circuit emulators, GDB/OpenOCD/Lauterbach, and software diagnostic tools.
- Perform hardware/software characterization with oscilloscopes, logic analyzers, protocol analyzers (SPI/I2C/UART, LVDS, Ethernet, USB), and power measurement tools.
- Write clean, well-tested C/C++ code for bare-metal and Linux, and develop Python tools for automation and host-side applications.
- Participate in architecture decisions, design reviews, documentation, and cross-functional integration activities.
Requirements
Must-have technical skills and practical experience required for the role. Preferred skills are listed after the must-haves.
- Must-have: 5+ years of embedded firmware and embedded Linux development experience.
- Strong proficiency in C and C++; solid experience with Python for tools and automation.
- Deep experience with bare-metal firmware, interrupt-driven systems, hardware bring-up, and real-time constraints.
- Proven embedded Linux experience (build systems, user-space applications, drivers, device trees).
- Hands-on experience with heterogeneous multi-core RISC-V and ARM processors (examples: Cortex-R5, Cortex-A53).
- Experience developing and debugging drivers and applications that use I2C, SPI, UART, DMA, and similar peripherals.
- Strong lab and signal-debugging skills and familiarity with oscilloscope/logic analyzer/protocol analyzer workflows.
- Proficiency with software debuggers and open-source debug toolchains (GDB, OpenOCD) and/or commercial tools (Lauterbach).
- Ability to analyze and optimize system performance across hardware/software boundaries.
- Nice-to-have: Yocto/PetaLinux/Buildroot experience; IPC (RPMsg, shared memory) on heterogeneous SoCs; FPGA/ASIC integration experience; familiarity with AMD/Xilinx Vitis; network/socket programming; CI/test automation and Git.
- Strong analytical skills, clear communication for cross-team collaboration, and a self-starter mindset.
Education Requirements
Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, Computer Science, or a related technical field.
About the Company
Company: Extropic
Extropic is a hardware startup focused on analog/mixed-signal and CMOS hardware development, including design and layout of analog blocks, high-speed circuits, simulation, lab testing, and supporting tape-out verification.
