Participate in the complete software development lifecycle, including requirements analysis, design, implementation, testing, and maintenance.
Collaborate with hardware engineers to comprehend system architecture, hardware specifications, and interface requirements for embedded systems.
Design and develop embedded software and firmware using programming languages such as C, C++, or assembly language, targeting microcontrollers and microprocessors.
Implement device drivers, communication protocols, and low-level software components to interface with peripheral devices, sensors, and actuators.
Perform unit testing, integration testing, and system testing to ensure the functionality, performance, and reliability of embedded software and firmware.
Debug and troubleshoot software and firmware issues using debugging tools, oscilloscopes, logic analyzers, and other diagnostic equipment.
Optimize code size, execution speed, and power consumption to meet performance and resource constraints of embedded systems.
Document software and firmware designs, specifications, and test procedures in compliance with industry standards and company guidelines.
Provide technical support and expertise to other teams throughout the product development lifecycle.
Stay updated on emerging technologies, industry trends, and best practices in embedded systems development.
Qualifications:
Bachelor's degree in electrical engineering, computer engineering, computer science, and a related field; Master's degree preferred.
Proven experience in embedded systems development, preferably in a product development or manufacturing environment.
Proficiency in programming languages such as C, C++, or assembly language for embedded systems.
Familiarity with embedded development tools and environments, including IDEs, compilers, debuggers, and version control systems.
Strong understanding of microcontroller/microprocessor architectures, embedded systems design principles, and real-time operating systems (RTOS).