Posted in

Embedded Software Engineer

Embedded Software Engineer

CompanyArray Labs
LocationPalo Alto, CA, USA
Salary$Not Provided – $Not Provided
TypeFull-Time
DegreesBachelor’s, Master’s
Experience LevelMid 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