Embedded Software Engineer
Company | Array Labs |
---|---|
Location | Palo Alto, CA, USA |
Salary | $Not Provided – $Not Provided |
Type | Full-Time |
Degrees | Bachelor’s, Master’s |
Experience Level | Mid Level, Senior |
Requirements
- Bachelor’s degree in Computer Engineering, Computer Science, Electrical Engineering or related field
- 4+ years of embedded software experience
- Good understanding of Embedded Systems and OS concepts (Linux/RTOS)
- Experience in one or more of the following areas: BSP/Board Support Package, Operating Systems, RTOS, Bootloader, Power Management, Linux, MCU (Microcontroller)
- Excellent teamwork and communication skills
- Learns new concepts rapidly, completely, and in a self-directed manner
- High levels of self-motivation and personal accountability
- Ability to work in a fast-paced environment under significant time constraints
- Experience programming in C or C++ in embedded environments and in Python to support development, automation, and testing.
Responsibilities
- Develop highly reliable and available software systems for our low-latency, high-capacity radar sensor, communication system, and flight control system
- Board bring-up of a Linux-based platform that integrates radar sensors, flight computers, RF transceivers, and navigation sensors
- Work collaboratively with signal processing, hardware, and GNC engineers to build performant and reliable embedded software for our payload
- Rapid prototyping and evaluation of key architectural choices and design constraints
- Implement high-efficiency data movement between our radar sensor, FPGA fabric, microprocessors, networking interfaces, and storage peripherals
- Develop safety-critical system-level software for hardware components and develop FDIR (fault detection, isolation, and recovery) algorithms for mission-critical systems
- Debug complex, system-level, multi-component issues that typically span across multiple layers from kernel to driver to application.
Preferred Qualifications
- Master’s degree in Computer Engineering, Computer Science, Electrical Engineering or related field
- Experience with aerospace or space projects (flight control/GNC)
- Experience in the automotive, medical robotics, or similar regulated embedded device industry with a focus on safety and high availability
- Good understanding of multi-threaded embedded system concepts including tasks, priorities, and deadlocks
- Embedded software debugging experience including clock-level issues, bridges, delays, interrupts, clock gating, and polling using debuggers (Keil, J-Link)
- Experience building software for complex embedded systems or custom SoCs
- Hands-on coding experience with peripherals with interfaces such as UART, SPI, CSI-2, i2c, GPIO, USB, and PCIE
- Experience developing with modern Real-Time Operating Systems (FreeRTOS, Zephyr, ThreadX, VxWorks)
- Experience with embedded software design and debugging of boards with multiple processors (ARM/RISC-V, DSPs, MCUs) and a large array of peripherals using a multitude of interfaces (SPI, UART, GPIO, I2C, Ethernet)
- Experience with a variety of microprocessors (ARM,Nordic, Microchip, STM, etc) and hardware modules
- Working knowledge of networking stack (Ethernet, TCP/IP suite) desired
- Ability to read and interpret schematic diagrams