Technologist, Firmware Engineering

25 Minutes ago • 10 Years +
Software Development & Engineering

Job Description

Sandisk is seeking a highly skilled Technologist, Software Engineering with over 10 years of experience to lead the host-side software stack for high-bandwidth flash controllers. The role involves designing and implementing high-performance PCIe kernel-mode drivers for Linux and Windows, along with a user-space library. Key responsibilities include multi-OS PCIe driver development, custom NVMe-like protocol design over PCIe MMIO, memory management for device SRAM and DRAM, and ONNX Runtime integration. The position requires deep understanding of low-level systems, high-speed communication, and exceptional debugging skills.
Must Have:
  • Architect and implement high-performance PCIe drivers for Linux and Windows.
  • Design and implement custom NVMe-like protocols over PCIe MMIO.
  • Manage command submission/completion queues and interrupt handling.
  • Orchestrate DMA engine for efficient data transfer.
  • Architect memory access for device SRAM/DRAM over PCIe BAR.
  • Debug complex system-level issues across user-space, kernel-mode, and hardware.
  • 10+ years in system software development.
  • Extensive kernel-mode driver development experience (Linux/Windows).
  • Deep understanding of PCIe, NVMe, doorbells, and DMA.
  • Mastery of C/C++ and low-level system architecture (MMIO, virtual memory).
  • Proven cross-OS development and codebase management.
  • Exceptional debugging and analytical skills.

Add these skills to join the top 1% applicants for this job

problem-solving
resource-allocation
cpp
game-texts
resource-planning
linux

Job Description

We're looking for a highly skilled Technologist, Software Engineering with over 10 years of experience to lead the host-side software stack for our high-bandwidth flash controller. In this role, you'll design and implement a high-performance PCIe kernel-mode driver for both Linux and Windows, along with a corresponding user-space library. This is a senior, hands-on role that requires a deep understanding of low-level systems and high-speed communication.

Key Responsibilities 💻

  • Multi-OS PCIe Driver Development: You'll architect and implement high-performance PCIe drivers for both the Linux and Windows operating systems. This includes handling device enumeration, interrupt management, and resource allocation.
  • Custom Protocol Design: Design and implement a custom, NVMe-like protocol that operates over PCIe MMIO. You'll be responsible for the entire host-side implementation, including:
  • Doorbell Registers: Design and implement the mechanism for host software to signal the device by ringing doorbells to submit commands.
  • Command Queues: Manage command submission and completion queues in memory.
  • Interrupt Handling: Develop the interrupt service routines (ISRs) to handle device-generated interrupts and notify the host of command completions and events.
  • DMA Engine Control: Orchestrate the DMA engine to move data efficiently between the host and device without CPU intervention.
  • Memory Management: Architect the software for accessing the device's SRAM and DRAM over the PCIe BAR (Base Address Register) space, ensuring optimal performance and cache coherency.
  • ONNX Runtime Integration: Collaborate closely with the team responsible for the ONNX runtime's execution provider to ensure a seamless and high-performance integration.

Debugging & Optimization: Debug complex, system-level issues across the user-space, kernel-mode, and hardware interfaces on both Windows and Linux. You'll be responsible for profiling and optimizing the entire data path to maximize performance.

Qualifications

  • Experience: 10+ years in system software development.
  • Kernel-Mode Expertise: Extensive experience designing and developing kernel-mode drivers for both Linux and Windows.
  • Protocol Knowledge: Deep understanding of high-speed I/O protocols like PCIe and the NVMe specification. Experience with the concepts of submission and completion queues, doorbells, and DMA is a must.
  • Low-Level Proficiency: Mastery of C/C++ and a deep understanding of low-level system architecture, including MMIO and virtual memory.
  • Cross-OS Development: Proven ability to manage and maintain a codebase for multiple operating systems.
  • Problem-Solving: Exceptional debugging and analytical skills, with a track record of solving the most challenging system-level problems.
  • Education: Bachelor's or Master's degree in Computer Science, Electrical Engineering, or a related field.

Additional Information

Sandisk thrives on the power and potential of diversity. As a global company, we believe the most effective way to embrace the diversity of our customers and communities is to mirror it from within. We believe the fusion of various perspectives results in the best outcomes for our employees, our company, our customers, and the world around us. We are committed to an inclusive environment where every individual can thrive through a sense of belonging, respect and contribution.

Sandisk is committed to offering opportunities to applicants with disabilities and ensuring all candidates can successfully navigate our careers website and our hiring process. Please contact us at jobs.accommodations@sandisk.com to advise us of your accommodation request. In your email, please include a description of the specific accommodation you are requesting as well as the job title and requisition number of the position for which you are applying.

Set alerts for more jobs like Technologist, Firmware Engineering
Set alerts for new jobs by Square
Set alerts for new Software Development & Engineering jobs in India
Set alerts for new jobs in India
Set alerts for Software Development & Engineering (Remote) jobs
Contact Us
hello@outscal.com
Made in INDIA 💛💙