Engineer
Technology, Data & Digital · Software & Web Development · Software Engineering · Embedded Systems
In short
Qualcomm seeks an Engineer with strong programming skills in C, understanding of data structures, algorithms, and operating systems. The role involves working with embedded systems, computer architecture, and development tools like Git. Experience with ARM architecture and virtualization technologies is advantageous.
Requirements
- Strong programming skills in C, including memory management, pointers, structures, and low-level programming concepts.
- Solid understanding of data structures and algorithms, including linked lists, queues, stacks, trees, and their practical applications.
- Basic scripting skills in Python and Shell scripting for automation and debugging.
- Understanding of secure coding practices, coding standards, and software quality principles.
- Strong understanding of Operating Systems fundamentals, including processes, threads, synchronization, interrupts, memory management, and scheduling.
- Basic understanding of embedded systems development and low-level software interactions with hardware.
- Good understanding of Computer Architecture and Microprocessor Fundamentals, preferably ARM-based architectures.
- Ability to work with hexadecimal representations, bit manipulation, binary arithmetic, and Boolean logic.
- Familiarity with Git version control and collaborative development practices.
- Strong analytical, problem-solving, and communication skills.
Desired Qualifications
- Knowledge of ARM Architecture (ARMv8/ARMv9), including exception levels, MMU, interrupts, and memory protection mechanisms.
- Understanding of ARM system components such as GIC, SMMU, PSCI, SCMI, and TrustZone.
- Familiarity with ARM Assembly Language and low-level debugging techniques.
- Exposure to memory management, MMU configuration, interrupt controllers (GIC), and system-level debugging.
- Understanding of boot flows, including Bootloader, Trusted Firmware, Hypervisor, and Operating System interactions.
- Understanding of hypervisor and virtualization concepts, including virtual machines, device virtualization, memory virtualization, and privilege separation.
- Exposure to Gunyah, KVM, Xen, pKVM, or other virtualization technologies.
- Understanding of virtualization security concepts and trusted execution environments.
- Knowledge of RTOS-based development and real-time system concepts.
- Understanding of embedded system software architecture and software-hardware interactions.
- Experience using debuggers such as GDB, Lauterbach Trace32 (T32), or equivalent tools for system-level debugging.
- Experience reading and understanding hardware specifications, Technical Reference Manuals (TRMs), and datasheets.
- Ability to analyze requirements, understand system design documents, and contribute to software design discussions.
#Software Engineering#C#Data Structures#Algorithms#Python#Shell Scripting#Operating Systems#Embedded Systems#Computer Architecture#ARM Architecture#Virtualization#RTOS#Debugging