As a firmware design engineer, you will be responsible for the design, development, testing, and maintenance of firmware for embedded systems. You will collaborate with cross-functional teams to ensure seamless integration between hardware and software components.
Firmware Development:
- Design and implement embedded firmware for microcontrollers and other embedded systems.
- Develop code for device drivers, communication protocols, and system-level functionality.
- Optimize firmware for performance, power consumption, and reliability.
Collaboration:
- Work closely with hardware engineers to understand system requirements and constraints.
- Collaborate with software developers to integrate firmware with higher-level software applications.
Testing and Debugging:
- Conduct thorough testing of firmware to identify and resolve bugs and issues.
- Utilize debugging tools and techniques to troubleshoot and optimize firmware performance.
Documentation:
- Create and maintain detailed documentation of firmware design, development, and testing processes.
- Provide documentation for end-users and other stakeholders.
Compliance and Standards:
- Ensure firmware complies with industry standards and regulations.
- Stay updated on emerging technologies and industry trends related to firmware development.
Prototyping:
- Assist in the creation of hardware prototypes and collaborate in the testing and validation of the overall system.
Continuous Improvement:
- Participate in design reviews and contribute to the continuous improvement of firmware development processes.
- Stay informed about advancements in embedded systems and firmware development methodologies.
Education/Qualification:
- Bachelor’s or Master’s degree in Electrical Engineering, Computer Engineering, or related field.
Job Experience:
- Proven 2-3 years of experience in firmware development for embedded systems.
- Proficiency in programming languages such as C or C++.
- Familiarity with microcontrollers, real-time operating systems (rtos), and embedded systems design.
Skills Required:
- Experience with version control systems (e.g., Git).
- Knowledge of communication protocols (e.g., I2C, SPI, UART).
- Understanding of hardware design principles.
- Familiarity with Agile development methodologies
- Strong understanding of digital and analog circuit design principles.
- Experience with FPGA and/or ASIC design is a plus.
- Excellent problem-solving and analytical skills.
- Effective communication skills, both written and verbal.