PCIE Driver Development _2919
Sign up free to see how well your resume matches this role.
About this role
PCIe Driver Engineer
Location: Bengaluru
Experience: 4–7 Years
Employment Type: Full-Time
Role Overview
We are looking for an experienced Linux Kernel Driver Engineer with strong expertise in kernel-level development, PCIe device drivers, and low-level hardware communication.
The candidate will be responsible for developing and maintaining Linux kernel drivers for custom hardware, building robust transport and abstraction layers, and working closely with hardware/FPGA teams to debug, optimize, and validate high-performance device communication.
Key Responsibilities
- Design, develop, and maintain Linux kernel device drivers for custom hardware.
- Develop and enhance PCIe-based device drivers and low-level communication interfaces.
- Implement driver initialization, Memory-Mapped I/O (MMIO), interrupt handling, and synchronization mechanisms.
- Work with MSI/MSI-X interrupts, DMA, memory management, and kernel synchronization primitives.
- Design and develop a transport/abstraction layer that provides a stable and efficient interface to upper-layer software.
- Optimize high-performance data paths for throughput, latency, and reliability.
- Implement robust error handling, fault recovery, and device recovery mechanisms.
- Develop diagnostic utilities, test hooks, and debugging tools to support software and hardware bring-up.
- Analyze and debug kernel crashes, race conditions, timing issues, deadlocks, and performance bottlenecks.
- Work closely with hardware and FPGA teams to understand register maps, hardware specifications, and device behavior.
- Debug hardware/software interactions using low-level debugging and system-level analysis.
- Contribute to kernel code reviews, patch development, maintenance, and release activities.
- Work with kernel build systems, source-control tools, and standard patch workflows.
Required Skills
- 4–7 years of hands-on experience in Linux kernel development.
- Strong expertise in Linux kernel device driver development, particularly PCIe drivers.
- Excellent programming skills in C.
- Strong understanding of C++ application development and its interaction with low-level/kernel components.
- Deep understanding of:
- PCIe architecture and device communication
- MMIO and register-level programming
- MSI/MSI-X interrupts
- DMA and high-performance data transfer
- Kernel synchronization and locking
- Concurrency and multithreading
- Linux kernel subsystems
- Proven experience debugging:
- Kernel crashes
- Race conditions
- Deadlocks
- Timing-related issues
- Memory-related issues
- Driver/hardware interaction problems
- Ability to understand and work from hardware interface specifications, register maps, and hardware design documents.
- Good understanding of Linux kernel build systems, source control, patch management, and code review workflows.
Good-to-Have Skills
- Experience developing high-throughput or low-latency data paths.
- Experience with FPGA-based systems, prototyping boards, or embedded hardware platforms.
- Knowledge of Linux kernel performance tuning and profiling.
- Experience with kernel tracing and debugging tools.
- Exposure to hardware bring-up and system-level validation.
- Understanding of DMA engines, IOMMU, BARs, and PCIe enumeration.
- Experience working in collaborative hardware/software development environments.
Education
- Bachelor's or Master's degree in Computer Science, Electronics, Electrical Engineering, or a related field.
Preferred Candidate Profile
The ideal candidate should have strong hands-on experience in Linux kernel and PCIe driver development, excellent C programming skills, and the ability to work at the intersection of hardware, firmware, kernel, and application software.
Strong debugging skills, low-level hardware understanding, and experience developing reliable high-performance data paths will be highly valued.
Company
Company facts come from this company's own listings. We only show what the postings themselves carry.