Silicon Validation Software Engineer: Embedded and Low-level Programming
San Diego, California, United States
Imagine what you could do here. At Apple, new ideas have a way of becoming extraordinary products, services, and customer experiences very quickly. Bring passion and dedication to your job and there's no telling what you could accomplish. Dynamic, smart people and inspiring, innovative technologies are the norm here. The people who work here have reinvented entire industries with all Apple Hardware products. The same passion for innovation that goes into our products also applies to our practices strengthening our commitment to leave the world better than we found it. Join us to help deliver the next groundbreaking Apple product. Are you passionate about changing the world? We have a critical impact on getting high quality functional products to millions of customers quickly and we are hiring all levels from junior to senior roles. You will become part of our core infrastructure team responsible for porting and improving our embedded test software environments, including CFE and our RTOS and perhaps Linux.
- You are an excellent C programmer
- You are an expert in boot code, low-level OS code, drivers, computer initialization, IO devices, SoC bring-up, debuggers
- You have a detailed understanding of SOC architecture
- You have experience and are interested in writing code to test IO devices and/or functional units
- Linux driver experience an asset
- You will be porting CFE/boot-code/RTOS to new SoC and CPU architectures - Improving the low-level support provided in our debug environments to provide better support for writing higher-level tests (e.g. scaler, jpeg) - You will be implementing device libraries to aid in the portability of device drivers, bringing up low-level code on new SoCs - You will work with other teams to support our common SoCs and memory init code Desired: ability to write Linux drivers and to write directed tests for IP's on the SoC.
Education & Experience
BS / MS / Ph.D in EE or CS is required