Key Responsibilities:
- Design and develop software for Qualcomm ARM Snapdragon SOC hardware platforms.
- Write efficient, reliable, and optimized code in C/C and other programming languages for ARM systems to ensure system functionality and reliability.
- Collaborate with hardware architects to ensure seamless integration of software and hardware components.
- Develop software that meets performance, reliability, and scalability standards.
- Optimize software performance, including memory usage, processing speed, and energy efficiency.
- Participate in system architecture design and contribute to technical decision-making.
- Develop and maintain technical documentation for software development and testing.
- Document software design, coding practices, and maintenance procedures.
- Ensure the software meets industry standards, safety regulations, and project specifications.
- Analyze project requirements and translate them into ARM software design specifications.
- Write efficient, reusable modules that interfaces with hardware components such as sensors, actuators, and communication modules.
- Test and debug software using simulation tools, hardware emulators, and on-target testing methods in simulated environments before deployment to real-world devices.
- Collaborate with cross-functional teams to define software requirements and validate product functionality.
- Provide technical support and troubleshooting for software-related issues.
- Work in hybrid development environments (predictive and adaptive).
Required Skills and Qualifications:
- Experience with developing firmware applications on ARM processors.
- Expertise in ARM embedded architecture.
- Expertise in C programming.
- Experience working with UEFI Architecture and the EDK-2 platform.
- Design and implement UEFI/BIOS modules in PEIM and DXE stages.
- Engage in bare-metal development involving communication protocols such as UART, SPI, I2C, ADC, and DAC.
- Experienced in debugging embedded firmware applications using JTAG, SWD debuggers.
- Familiarity with Python, batch files, command shells, and other relevant scripting languages.
- Familiarity with version control systems GitHub and CICD development pipelines.
- Familiarity with bare metal systems, board bring-up, and bootloader architecture.
- Familiarity with using logic analyzers, I2C analyzers, oscilloscopes, and other relevant tools.
- Understanding basic analog and digital electronic concepts and ability to understand HW schematics.
- Ability to understand technical specifications, data sheets, and develop firmware solutions based on requirements.
- Solid experience with RTOS (Real-Time Operating Systems), embedded Linux, and other embedded platforms like ThreadX and Zephyr OS.
- Understanding low-level hardware architecture, software optimization, memory management, and real-time processing.
Preferred Skills:
- Experience with ARM architecture, PIC, EDK-2 and other microcontroller architectures.
- Experience with embedded security and encryption protocols.
- Knowledge of communication protocols such as UART, SPI, I2C, CAN, or Ethernet.
- Knowledge of Python or other scripting languages for testing automation.
- Familiarity with Agile development methodologies and tools like ADO.
- Understanding of power management techniques for low-power embedded systems.
Education and Experience:
- Master's or Bachelor's degree in computer science, Computer Engineering, Electrical Engineering, Mathematics or equivalent.
- Minimum 2 years of professional experience.
- Experience in Agile/Scrum environment