Staff Engineer, Device Drivers
Qualcomm9 months ago
San Diego, CA, United States
Remote
Full-time
Junior Level (1-3 years)
Job Description
Job Title
Qualcomm CR&D is looking for a software engineer for Linux device driver for Machine Learning use cases. The development target is Qualcomm high-performance inference accelerator AI 100 and related products.
The candidate will help work on developing code for Linux device drivers and help with upstreaming the code.
Familiarity with development of functional simulation of SoC systems included bus subsystems, DMA, PCIe and peripherals, synchronization mechanisms such as semaphores as well as low speed peripherals will be beneficial.
Required Skills and Aptitudes
- Experience with Linux kernel driver development, kernel modules, HWMon, sysfs and debugging techniques
- PCIe virtualization, SRIOV
- Experience with embedded development in C.
- Knowledge of RTOS, SoC architecture (core, cache, memory, bus architecture, IOs, etc.) and common hardware blocks
- Experience with Source Code and Configuration management tools, git knowledge is required
- Willingness to work in a structured software development environment with ability to work on low-level implementation (code & test)
Desirable Skills and Aptitudes
- 4+ years of relevant experience
- Experience with Linux kernel PCIe stack.
- Familiar with high speed interfaces such as PCIe and LPDDR
- Familiar with implementing systems with high reliability expectations such as use of ECC, PCI AER fields.
- Experience working with and familiarity with important SOC building blocks like interrupt controller & timers
- Experience with kernel subsystems relevant to isolation and security.
- Strong understanding of DMA, IOMMU, and device assignment in virtualized/isolated contexts.
- Proficiency with virtualization: KVM and guest/host split drivers.
Required Skills
Source Code Management
IOMMU
PCIe stack
Guest/host split drivers
Linux kernel driver development
HWMon
Git
PCIe virtualization
Interrupt controller
SoC architecture
Timers
RTOS
ECC implementations
SRIOV
Kernel subsystems
Debugging techniques
Embedded development in C
Kernel modules
High-speed interfaces
Virtualization
KVM
DMA
Sysfs