Senior Embedded Systems Software EngineerThe Technology Directions Office is looking for engineering support to develop and optimize embedded systems software features.
Responsibilities include design, development, and optimization of embedded systems software features, integration with mobile applications, development of bootloaders, device drivers, and middleware, and board bring-up of prototype hardware.
The role also involves optimizing runtime environments for on-device ML model execution.Requirements include excellent experience developing embedded applications, proficiency in writing C/C++ code on Embedded Linux, RTOS, and Bare metal systems, and emphasis on writing unit tests with good code coverage.
Experience in writing embedded code on resource-constrained platforms is essential, along with knowledge of I2C, SPI, UART, BLE, Wi-Fi, BSD sockets, C/C++ programming, bootloaders, microcontrollers, board bring-up, board support package, low-level programming, and thriving in ambiguity. Protocol buffers are preferred.Additional requirements include experience with Embedded Linux, kernel, and device driver in real-time operating systems, experience using HW development kits, experience with microcontroller or microprocessor-based embedded systems, C/C++, Linux kernel, Linux drivers, Bluetooth Low Energy, socket programming, knowledge of capacitive touch technology, Linux kernel and device driver experience, experience interfacing embedded software with Android mobile apps via BLE/Bluetooth Smart, Wi-Fi, UART, etc., familiarity with the Android software stack (AOSP) and NDK usage, and familiarity with usage of Machine Learning in embedded systems.
Experience with memory and power optimization and optimizing code for DSPs and other hardware accelerators is also required.Location: Mountain View, CASchedule: Hybrid (M,F WFH & T,W,TH in office)Duration: 6 months with possible extensionHourly Rate Range: $70-95/h (DOE)