The ideal candidates should have a background in embedded software development, in a range between 2 and 7+ years of experience in any of: Board Support Packages (BSP), Device driver development, RTOS, Secure Boot, Trust-zone, Low-speed peripheral interfaces (I2C/SPI/UART), Chipset power blocks, Clock tree management, PCIe and efficient data movement using DMA, Embedded Linux development. You must be able to code in C to a high standard Experience with software feature design Experience with software development in C/C++ including unit-test, performance analysis, code coverage, static analysis Experience using GNU/LLVM tools on embedded platforms using stop-mode debug tools such as JTAG/SWD Experience working with BSP development including device driver development, board-bring-up, RTOS's, secure boot & trust zone Experience with development of peripheral drivers. Experience with Source Code and Configuration management tools such as git/Gerrit Familiar with high-speed interfaces such as PCIe, LPDDR, USB Familiar with implementing Reliability, Accessibility and Serviceability (RAS) through use of technologies such as ECC, IPMI & PCI AER fields. Familiar with low speed interfaces such as I2C, SPI, SPMI, and SMBus Familiar with on-chip middleware for communication, logging and power control Experience working with and familiarity with important microprocessor building blocks like microprocessor execution levels, interrupt controller & timers Software development and debug tools including compilers, profilers, source control systems, emulators, JTAG and serial debuggers, and logic analyzers Familiarity with build and development for Embedded Linux through use of tools such as Yocto, Buildroot or OpenEmbedded Familiarity with the upstream Linux kernel community and the Linux kernel development process Bachelor's degree in Engineering, Information Systems, Computer Science, or related field and 2+ years of Software Engineering or related work experience. OR Master's degree in Engineering, Information Systems, Computer Science, or related field and 1+ year of Software Engineering or related work experience. OR PhD in Engineering, Information Systems, Computer Science, or related field. 2+ years of academic or work experience with Programming Language such as C, C++, Java, Python, etc. References to a particular number of years experience are for indicative purposes only. Applications from candidates with equivalent experience will be considered, provided that the candidate can demonstrate an ability to fulfill the principal duties of the role and possesses the required competencies. Design, develop and maintain device drivers and boot loaders for embedded systems Collaborate with cross-functional teams to design, develop and test embedded systems software Troubleshoot and debug software issues in embedded systems Work with hardware engineers to ensure software and hardware compatibility Embedded Linux software development, processes and documentation is a plus