Facebook Firmware Engineer, Interaction in Redmond, Washington
Oculus is the world leader in the design of virtual and augmented reality systems. Come work alongside expert engineers and research scientists to create the technology that makes VR and AR pervasive and universal. Join the adventure of a lifetime as we make science fiction real and change the world. We are seeking a Firmware Engineer to develop boot-loaders, board support packages, and application code to life to use low power and high performance SoCs to create bleeding-edge sensing and interaction applications.
Architect, design, and implement firmware for mixed signal, low power micro-controllers for implementing real-time sensing and control systems on bare-metal and using RTOS.
Creation of BSPs for Application Processors for their optimized SoC based systems with both custom and standard devices and peripheral interfaces.
Configuration of standard boot loaders to allow deployment of standardized embedded software distributions with multiple memory devices or board configurations.
Creation of Target and Application optimized embedded Linux distributions.
Development and customization of Linux Kernel drivers to support customized peripheral or on board devices, or highly optimized use of standard peripherals.
Specification of user-driver APIs that include standard peripherals such as UART, SPI, MIPI DSI/CSI, I2C, SDIO, RTC, PWM, DMA, NVIC, I2S, and 802.3.s.
Development of userland application code in embedded Linux systems, specifically code for testing driver interfaces and for enabling the use of standard software environments.
Work with hardware designers to optimize new system architectures and hardware designs to be optimized for the need of embedded software and firmware for given SoCs or micro-controllers.
Work with application software engineers to optimize the interfaces between high level software and drivers and their corresponding userland library support.
B.S. degree in Computer Science or Electrical Engineering or equivalent experience
5+ years of experience in low-power embedded systems
Experience in embedded Linux user software development
Experience in Linux driver development, particularly for block devices
Experience in the use of DMA on both embedded Linux and bare metal systems
Experience in real-time userland access to memory mapped hardware, shared memory
Experience in creating custom BSPs and DeviceTree
Experience in Linux Distribution development, such as the use of OpenEmbedded or Yocto Project tools
Experience in the use of ARM Cortex A and M class chips, with a focus on peripheral application/IO
5+ years experience in the C programming language
Experience in the C++ programming language
Experience in debugging using JTAG, SWD and similar tools
Experience with standard debuggers and toolchains
Experience in the use of test equipment such as oscilloscopes and logic analyzers to debug embedded software's hardware interfaces
Protocol implementations such as USB Device Classes, or BLE GATT Services
Digital Signal Processing experience and experience in the application of hardware acceleration for vector or DSP math
RTL design skills and use of FPGA SoCs for prototyping
Experience in microcontroller-application processor hybrid systems, specifically offloading real time IO to microcontrollers with low latency interfaces to application processors
Equal Opportunity: Facebook is proud to be an Equal Opportunity and Affirmative Action employer. We do not discriminate based upon race, religion, color, national origin, sex (including pregnancy, childbirth, or related medical conditions), sexual orientation, gender, gender identity, gender expression, transgender status, sexual stereotypes, age, status as a protected veteran, status as an individual with a disability, or other applicable legally protected characteristics. We also consider qualified applicants with criminal histories, consistent with applicable federal, state and local law. If you need assistance or an accommodation due to a disability, you may contact us at firstname.lastname@example.org or you may call us at +1 650-308-7837.