The ideal candidate will be responsible for developing high-quality applications. They will also be responsible for designing and implementing testable and scalable code.
Responsibilities
Design and develop embedded software and firmware for various embedded systems, including
microcontrollers, microprocessors, and digital signal processors.
Collaborate with hardware engineers and system architects to define system requirements,
hardware-software interfaces, and system integration.
Develop low-level device drivers and interface software to facilitate communication between embedded systems and external peripherals.
Write efficient, reliable, and scalable code for real-time operating systems (RTOS) and bare-
metal environments.
Conduct thorough testing, verification, and debugging of embedded software to ensure
functionality, performance, and quality.2
Perform code reviews and provide constructive feedback to team members to maintain code
quality and ensure adherence to coding standards.
Optimize system performance, memory utilization, and power consumption for embedded
applications.
Stay updated with the latest technologies, tools, and trends in embedded systems development
and propose innovative solutions to improve system capabilities.
Collaborate with cross-functional teams, including hardware engineers, firmware engineers, and
product managers, to support product development and meet project timelines.
Document design specifications, software architecture, and technical specifications to facilitate
knowledge sharing and future maintenance.
Qualifications
Bachelor's degree in Computer Science, Electrical Engineering, or a related field. A Master's degree is a plus.
3+ years of experience.
Knowledge of C,
Microcontrollers (8,32 bits).
Proven experience in embedded software development, preferably in a professional setting.
Proficiency in programming languages such as C, C++, OOPS, Multithreading and assembly
language for embedded systems.
Strong understanding of embedded systems architecture, real-time operating systems, and
hardware-software interfaces.
Experience with microcontrollers, microprocessors, and embedded development tools, such as
debuggers, emulators, and compilers.
Familiarity with communication protocols commonly used in embedded systems, such as UART,
SPI, I2C, and Ethernet.
Knowledge of software development methodologies, version control systems, and bug tracking
tools.
Excellent problem-solving skills and the ability to debug complex software and hardware issues. Strong analytical and organizational skills with the ability to work on multiple projects
simultaneously.
Effective verbal and written communication skills to collaborate with cross-functional teams and
document technical specifications.
Programmer • India