Software Engineer, Embedded Systems/Firmware, Pixel Bootloader
Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information at massive scale, and extend well beyond web search. We're looking for engineers who bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile; the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, display leadership qualities and be enthusiastic to take on new problems across the full-stack as we continue to push technology forward.
The Pixel Bootloader team collaborates with Android platform, Pixel hardware, gChips, and external partners to deliver a bootloader software stack that provides a positive Android experience for Pixel phones and tablets.The Google Pixel team focuses on designing and delivering the world's most helpful mobile experience. The team works on shaping the future of Pixel devices and services through some of the most advanced designs, techniques, products, and experiences in consumer electronics. This includes bringing together the best of Google’s artificial intelligence, software, and hardware to build global smartphones and create transformative experiences for users across the world.Individual pay is determined by factors including job-related skills, experience, and relevant education or training.US: $147000 - $210000 (USD) + 15% bonus target + equity + benefits
Learn more about benefits at Google.
Responsibilities
- Own and deliver bootloader and firmware features in C and Rust.
- Participate in bringing up new Pixel devices throughout the full development cycle such as pre-silicon emulation environments, SoC development boards, prototypes, mass production, and in-market.
- Participate in software planning, design, and implementation of software features in areas such as interconnect, boot, reset, memory, high speed IO, low speed IO, interrupt controllers, and security.
- Debug issues involving complicated multi-faceted interactions between silicon, hardware, firmware, software, and the environment.
- Work in a variety of code bases (e.g., C, Rust, and Python).
Minimum qualifications:
- Bachelor’s degree or equivalent practical experience.
- 2 years of experience with software development in C.
- 2 years of experience working with embedded operating systems.
Preferred qualifications:
- Master's degree or PhD in Computer Science or a related technical field.
- 2 years of experience with data structures and algorithms.
- Experience with common debug or trace technologies (e.g., JTAG, ARM SWD, ARM CoreSight, gdb, TRACE32, etc.).
- Experience developing embedded software in bare-metal microcontroller firmware, RTOS, bootloaders (e.g., BIOS, uboot, UEFI, coreboot, etc.), or Linux kernel.
- Experience with modern SoC architecture, system bring-up, debug, or trace techniques.
- Proficiency in the Rust programming language.