Embedded Software Engineer – Firmware – Reality Labs
Company | Meta |
---|---|
Location | Burlingame, CA, USA, Sunnyvale, CA, USA |
Salary | $147000 – $208000 |
Type | Full-Time |
Degrees | Bachelor’s |
Experience Level | Senior |
Requirements
- Bachelor’s degree in Computer Science, Computer Engineering, relevant technical field, or equivalent practical experience
- 5+ years software development experience in industry settings or PhD with 2+ years of experience
- 3+ years embedded software development experience in industry settings
- Experience in large-scale C/C++ code base
- Demonstrated experience working across disciplines to drive optimal solutions
Responsibilities
- Design and implement software components at all layers of the system, including kernel, synchronization primitives, resource allocators, memory management, security, I/O systems, persistence, etc
- Develop drivers and services that operate efficiently in constrained environments and deliver large volumes of data with low-latency and high-bandwidth
- Lead hardware bring-up, peripheral drivers and communication, silicon integration, and power and performance management and optimization efforts
- Debug complex, system-level, multi-component issues that span multiple layers from kernel to application
- Profile performance problems and drive optimizations across the entire software stack
- Analyze, design, develop, and debug firmware for a wide variety of devices, including novel sensing and imaging systems, haptic devices, and audio prototypes
- Collaborate closely with cross-functional teams, including silicon architects, hardware designers, OS team, and algorithm and model development teams
- Understand and implement power-management, boot loaders, scheduling, inter-processor communication, computer vision, and firmware/system interfaces on RTOS and/or bare-metal environments
- Design, develop, and architect models and infrastructure building blocks of Virtual Platforms, integrating internal models and vendor IP models
Preferred Qualifications
- Experience with embedded DSP, CPU, and GPU architectures
- Hands-on coding experience with peripherals such as UART, SPI, CSI-2, i2c, GPIO, USB
- Experience with compression, camera and video pipelines, or encoding technologies such as H.264
- Experience with wireless and wired communication protocols,TCP/IP, Ethernet, Bluetooth and 802.11
- Experience with silicon, device manufacturing, and low-power SoCs
- Experience with lab instrumentation such as oscilloscopes, logic/protocol analyzers for debugging embedded systems at HW level
- Experience with active power management or power optimizations
- Experience with prototyping or pre-silicon environments (FPGAs, simulation, or emulation)
- Experience developing with modern Real Time Operating Systems
- Experience working with embedded hardware platforms and exposure to concepts such as clock-level issues, interrupts, and polling
- Experience across topics including computer graphics, computer vision, or machine learning