Firmware Engineer
Role details
Job location
Tech stack
Job description
- Technical:
- Develop embedded firmware for consumer appliances and Smart Home devices - Air Handler, Furnace, Thermostat, Smart Home devices, wired and wireless sensors, IoT Edge devices
- Develop embedded C code based on complex flow chart, state diagram to control electromechanical system
- Develop firmware stack for RS-485 based communication
- Develop software architecture, Hardware Abstraction, and reusable software components
- Develop software specification document
- Develop and maintain code base using version control, CI/CD, test automation
- Implement unit testing, CI/CD pipeline
- Perform detailed bench and lab testing of firmware
- Support and troubleshoot software bugs and issues in products in field
- Analyze system requirements and translate them into firmware specifications
- Collaborate with hardware engineers to ensure seamless integration of firmware and hardware components
- Debug and troubleshoot firmware issues using tools such as oscilloscopes, logic analyzers, and debuggers
- Optimize firmware for power consumption, memory usage, and performance
- Develop and implement software algorithms for complex system control and data processing
- Develop and maintain firmware libraries and drivers
- Write code for real-time operating systems (RTOS) and bare-metal environments
- Collaborate with software engineers to ensure seamless integration between firmware and application software
- Develop and maintain firmware version control and release processes
- Participate in design reviews and provide technical expertise and recommendations
- Conduct research on emerging technologies and best practices in firmware development
- Other:
- Interface well with other teams to perform root cause analysis and develop solutions to production problems.
- Coordinate with production engineering and maintenance teams to lead equipment repairs and projects.
- Present and justify design decisions in design review meetings
- Perform additional projects/duties to support ongoing business needs.
Nature & Scope:
-
Subject matter expert
-
Has broad and comprehensive expertise in leading-edge theories, techniques and/or technologies within own function or discipline
-
Proactively identifies and solves the most complex problems that impact the management and direction of the business
-
Participates in the development of the product or business strategy
-
Leads multidisciplinary projects or initiatives
Requirements
- Technical
- Programming Language for Embedded Systems (E.g. Embedded C or C++)
- Programming for microcontrollers (Microchip, Atmel, ST, Renesas or equivalent)
- Serial communication
- ModbRS232/I2C/CAN
- FreeRTOS or equivalent real time OS
- Expertise in scripting languages
- CI/CD tools, Docker
- JIRA, Git, Test Management Suites
- Knowledge of microcontroller architectures and embedded system design principles
- Familiarity with digital and analog circuits and signal processing techniques
- Experience with firmware debugging using oscilloscopes, logic analyzers, and debuggers
- Ability to develop and maintain software libraries and drivers
- Knowledge of communication protocols such as I2C, SPI, UART, and CAN bus
- Familiarity with software version control and release processes
- Understanding of software security principles and implementation
- Process
- Software Project Management and Lifecycle
- Unit Testing
- Test Automation
- CI/CD
- Experience with firmware performance optimization and memory management
- Ability to write and maintain high-quality and efficient code
- Understanding of software development processes and methodologies
- Familiarity with software testing and verification techniques
- Excellence in Microsoft office tools - including Advanced Excel, MS Project, PowerPoint, MS Word, Automation via VBA, and Macro and SharePoint
- Shall posses excellent communication, ability to explain complex technical contents, desire to work in diverse, cross-functional team and work towards common objective
- Proven repeated experience with development and troubleshooting of firmware in embedded systems using C & C++.
- Familiarity with software testing and verification techniques
- Knowledge of software design patterns and best practices
- Experience with code review and quality assurance processes
- Familiarity with software development tools such as build scripts and continuous integration systems
- Ability to collaborate with cross-functional teams, such as hardware engineers and software developer
- Excellent problem-solving and analytical skills
- Ability to communicate technical concepts to both technical and non-technical stakeholders.
- Mentor and train junior engineers.
- Develop best practices training material for internal engineering training
- Responsible for consult and advise cross-functional team to arrive at balanced, appropriate engineering solution
- Support junior engineers in technical capacity.
- Ability to apply good judgement, strong work ethics and integrity on the job.
Experience:
-
15+ years of relevant experience
-
Evidence of career progression
-
Demonstrated ability to deliver complex firmware projects, with distributed, medium to large size project team
-
Manage multi-year firmware projects
Education/Certification:
-
Bachelors in in Computer or Electrical Engineering required
-
Master's or PhD preferred
People Management: No
Physical Requirements / Work Environment:
- Must be able to perform essential responsibilities with or without reasonable accommodations.
- Minimal traveling requirement of up to 10%