We are seeking a highly motivated Firmware Engineer to design, develop, and optimize embedded software for our next-generation products.
The ideal candidate has strong experience in low-level programming (C/C++), microcontroller/SoC development, and hardware bring-up, with a proven ability to collaborate with cross-functional teams to deliver robust and efficient firmware solutions.
This role is a full-time onsite position in Menlo Park, CA.
Position Overview
We are seeking a highly motivated Firmware Engineer to design, develop, and optimize embedded software for our next-generation products.
The ideal candidate has strong experience in low-level programming (C/C++), microcontroller/SoC development, and hardware bring-up, with a proven ability to collaborate with cross-functional teams to deliver robust and efficient firmware solutions.
This role is a full-time onsite position in Menlo Park, CA.
Key Responsibilities
• Design, develop, and maintain firmware in C/C++ for microcontrollers, SoCs, and embedded platforms.
• Implement and optimize device drivers for hardware peripherals (SPI, I2C, UART, USB, CAN, Ethernet, GPIO, ADC/DAC, PWM).
• Integrate and configure RTOS or bare-metal firmware.
• Perform board bring-up and hardware validation, working closely with electrical engineers.
• Debug and analyze firmware/hardware issues using oscilloscopes, logic analyzers, and JTAG/SWD.
• Develop secure bootloaders and update soluions
• Write and maintain unit tests and automated test scripts for firmware validation.
• Collaborate with cross-functional teams (hardware, software, QA, systems engineering) to deliver products on schedule.
• Document firmware architecture, APIs, and design decisions for maintainability.
Qualifications
• Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, Computer Science
• 5+ years of experience in embedded firmware development.
• Strong proficiency in C/C++ and Python.
• Experience with ARM Cortex-M, RISC-V, or similar MCU/SoC architectures.
• Familiarity with RTOS and bare-metal programming.
• Hands-on experience with hardware interfaces (SPI, I2C, UART, USB, BLE, Wi-Fi, etc.).
• Proficiency with debugging tools (JTAG, GDB, oscilloscopes, logic analyzers).
• Experience with version control (Git) and CI/CD pipelines.