Job Id: 554
The Software Analytics and Global Automation (SAGA) team within the larger Products and Tools Group at Qualcomm enables key automation workflows across Qualcomm as well as productions for our customers. We are looking for a software engineer to work on our USB host driver solutions on Microsoft Windows and Linux operating systems to support increasing functions from devices built with Qualcomm chipsets.
As a USB host driver developer on the SAGA team you will be responsible for designing implementing and maintaining commercial-grade software tools for development testing and production within and outside Qualcomm.
• Design and implement multi-platform high-performance host driver software to communicate with devices over various types of logical connections
• Design abstract and implement high-performance driver communication interfaces which can be used by task-oriented applications
• Design and implement efficient protocols among software components
• Design and implement unit tests
• Be part of a cross-functional team with a large amount of ownership and responsibility for managing things directly
Seeking candidates with 8-12 years of experience in the following:
• Programming languages: C++/C
• Working knowledge in inter-process communication and networking
• Working knowledge in multi-language programming through loadable modules including dynamic-linked libs (DLL) and shared libraries (.so)
• Working knowledge in concurrent programming and synchronization
• Working knowledge in device communication and Plug & Play
• Good understanding in data structures and algorithms
• Good experience in kernel driver development supporting x86/x64 processor architectures
• Working knowledge in Microsoft Windows driver framework including KMDF and UMDF as well as WDM.
• Working knowledge in Linux kernels and kernel-mode driver development
• Working knowledge with Universal Serial Bus (USB) protocol supporting high-speed super-speed and super-seed+ communications
• Ability to use USB protocol analyzer for analysis and troubleshooting
• Strong software troubleshooting skills
• Strong communication skills
• Experience with multi-language programming
• Experience with software certification tests such as Windows HLK and signing
• Experience with data encoding and decoding
• Knowledge with distributed systems and parallel processing
• Experience in scripting languages such as PERL and Python
• Experience in systems including hands-on knowledge with firmware deployment on target and debugging
Bachelors degree in CS EE or related field is required in addition to 8-12 years of experience.