As a leading technology innovator, Qualcomm pushes the boundaries of what's possible to enable next-generation experiences and drives digital transformation to help create a smarter, connected future for all. As a Qualcomm Software Engineer, you will design, develop, create, modify, and validate embedded and cloud edge software, applications, and/or specialized utility programs that launch cutting-edge, world class products that meet and exceed customer needs. Qualcomm Software Engineers collaborate with systems, hardware, architecture, test engineers, and other teams to design system-level software solutions and obtain information on performance requirements and interfaces.
Preferred Qualifications:
- Bachelor’s degree in computer science
- Master’s degree in computer science
Principal Duties and Responsibilities:
Mandatory:
- Strong expertise in the C programming language
- Experience with ARM-based embedded systems
- Proficiency in ARM architecture, including ARMv8 and ARMv9
- Understanding of virtual memory management, page tables, and TLB (Translation Lookaside Buffer) management
- Strong understanding of basic OS concepts such as scheduling, memory management and locking mechanisms
- Hands-on experience in writing device drivers in C
- Experience with debuggers such as gdb, T32 for issues debugging
Preferred skills:
- Hands-on experience with ARM-based hypervisors and virtualization platforms
- Experience with ARM-based virtualization solutions like Xen, KVM etc
- Experience with ARM System Memory Management Unit (SMMU), including its role in address translation and memory protection
- Strong communication and collaboration skills
- Familiarity with CPU scheduling algorithms, including how hypervisors manage virtual CPU scheduling across physical cores
- Experience with Linux Kernel development
- Familiarity of open source VM management tools such as QEMU, kvmtool etc
Good to have:
- Python, shell scripting and Linux based development environment
- Strong knowledge of ARM TrustZone technology
- Participation in open-source related activities
Level of Responsibility:
• Works under supervision.
• Decision-making may affect work beyond immediate work group.
• Requires verbal and written communication skills to convey information. May require basic negotiation, influence, tact, etc.
• Tasks do not have defined steps; planning, problem-solving, and prioritization must occur to complete the tasks effectively.