Software Engineer - Embedded (BSP)
Reality Labs at Meta is building products that make it easier for people to connect with the ones they love most, enjoy top notch wire-free VR, and push the future of computing platforms. We are a team of world-class experts developing and shipping products at the intersection of hardware, software and content.Reality Labs team is seeking Embedded Software Engineers with strong design and build skills, experience with low-level systems software and device driver programming and experience with shipping hardware/software products. This person will be an integral member of the team, responsible for embedded software design and optimization. This person will also be involved in developing a solid platform while working on a variety of domains to enable new experiences for augmented reality, virtual reality and social/family products.
Software Engineer - Embedded (BSP) Responsibilities:
- Design and implement components at all layers of the system, e.g. kernel, synchronization primitives, resource allocators, memory management, security, I/O systems, persistence, etc.
- Design and implement drivers and services that operate efficiently in a constrained environment yet when pressed can efficiently deliver large volumes of data with low-latency and high-bandwidth.
- Own the definition of one or more work streams focused on hardware bringup, peripheral drivers and communication, silicon integration and power and performance management and optimization.
- Debug complex, system-level, multi-component issues that typically span across multiple layers from kernel to application.
- Profile performance problems and drive optimizations that span the entire software stack.
- Bring up new devices and lead debugging and performance tuning exercises that span multiple hardware/firmware/software teams.
- Understand software components from multiple partner teams, lead the integration of those components into the unified product code base, and drive their continued development.
- Bachelor's or Master's Degree in Computer Science, Computer Engineering, relevant technical field, or equivalent practical experience.
- 6+ years' Software Engineering experience in the following: device driver development, embedded systems, or operating systems.
- 6+ years’ experience working on systems software in a large-scale C/C++ code base.
- 2+ years’ experience defining and driving technical work streams and providing technical leadership for software engineering teams.
- Experience with Software Development processes including: source control, bug tracking, and design documentation.
- Experience in hardware bringup using interfaces like ADC, GPIO, SPI, I2C, etc.
- Experience in one or more of the following areas: BSP/Board Support Package, Operating Systems, Android OS, RTOS, Bootloader, Power Management, Linux, Graphics and Display Drivers, MCU (Microcontroller).
- Experience developing, debugging, and shipping software products on large code bases that span platforms and tools.
- Deep specialized experience in two or more of the following areas: BSP/Board Support Package, Operating Systems, CoreOS, Kernel, Android Kernel, Bootloader, Power Management, RTOS, Linux, Graphics and Display Drivers, MCU (Microcontroller).
- Demonstrated experience working collaboratively in cross-functional teams.