Design, develop, debug, and maintain embedded systems and software components.
Work on system-level programming, focusing on C/C++ development.
Analyze and resolve system-level software issues.
Design software architecture, create unit test plans, and maintain documentation.
Collaborate with customer teams to capture requirements and provide technical support.
Participate in multi-site development projects and cross-functional collaboration.
Required Qualifications:
Bachelor’s or Master’s degree in Computer Science, Electrical Engineering, or a related field.
8+ years of experience in embedded systems or system-level software development.
Proficiency in C/C++ programming with strong expertise in embedded systems.
Familiarity with Python scripting and containerization technologies (e.g., Docker).
Strong understanding of microcontroller/hardware architecture (ARM, RISC-V).
Experience with Linux kernel and device driver development (device trees, patching, configuration, building).
Ability to identify and resolve system-level software issues.
Experience in development on Linux hosts (e.g., Ubuntu).
Proficiency in using source code management tools (e.g., Git).
Excellent problem-solving skills, strong communication skills, and ability to work collaboratively in a team environment.
Capability to design a software product from scratch to delivery, covering all software development phases (requirement gathering, design, development, testing, release).
Ability to interpret specifications, extract requirements, and ensure traceability across design, development, testing, and release.
Preferred Skills:
Experience with virtualization technologies (QEMU, AFM, KVM) is a huge plus.
Familiarity with TrustZone and security-related concepts.
Experience with RTOS and device driver development.
Understanding of electronic hardware, including reading schematics and component data sheets.
Prior experience working in agile development teams.