Firmware Engineer
Motorola solutions
Job Summary
Motorola Solutions is seeking a Firmware Engineer to join their Specialty Camera Engineering team in Ware, UK. This role involves designing, developing, and implementing embedded software for long-range surveillance cameras, focusing on performance, reliability, and resource efficiency. The engineer will work with C/C++, bare-metal systems, RTOS, and various embedded interfaces, collaborating with hardware engineers throughout the product development lifecycle. Responsibilities include developing device drivers, troubleshooting hardware/software integration, and optimizing system performance for public and commercial safety applications.
Must Have
- Design, develop, and implement embedded software for bare-metal systems.
- Develop, test, and debug low-level device drivers, peripheral interfaces, and communication protocols.
- Collaborate with hardware engineers to define software/hardware integration requirements and support board bring-up, hardware validation, and troubleshooting.
- Write efficient and maintainable code in C/C++ for microcontrollers, memory-constrained, and real-time systems.
- Utilize oscilloscopes, logic analyzers, JTAG, and other debugging tools to analyze and resolve hardware/software integration issues.
- Develop and execute unit, integration, and system-level tests to verify correct operation and performance of embedded firmware.
- Participate in code reviews to ensure adherence to coding standards, best practices, and design guidelines.
- Maintain comprehensive documentation of software architecture, interfaces, and procedures.
- Analyze and optimize system performance, power consumption, and memory utilization.
- Collaborate with cross-functional teams to define product requirements, identify technical risks, and ensure timely delivery.
- Bachelor’s or Master’s degree in Computer Engineering, Software Engineering, Electronics, or Electrical Engineering.
- Hands-on experience in embedded systems development.
- Solid understanding of embedded systems design, including C/C++ memory management, microprocessor architectures, instruction efficiency, and I/O timing.
- Proficient with debugging tools and techniques for embedded systems.
- Demonstrated ability to identify and improve low-level system performance issues using strong problem-solving skills.
- Experience with scripting languages and building systems.
- Adherence to established development processes for all design and implementation activities.
- Experience collaborating with Quality Assurance teams to identify test cases for new features and areas for regression testing.
- Hands-on experience working with hardware engineers on board bring-up, and debugging using oscilloscopes, logic analyzers, or JTAG.
- Experience reviewing peers’ code for adherence to coding standards and design guidelines.
- Fluent in English, both spoken and written.
- Ability to work in a hybrid arrangement (office located in Ware).
Good to Have
- Python scripting for test automation, data analysis, or rapid prototyping.
- ARM processor experience.
- Experience or strong interest in robotic control programming.
- Familiarity with automated testing, continuous integration pipelines (DevOps & CI/CD).
- Proficiency in reading schematics.
Perks & Benefits
- Competitive salary and bonus schemes.
- Two weeks additional pay per year (holiday bonus).
- 25 days holiday entitlement + bank holidays.
- Attractive defined contribution pension scheme.
- Employee stock purchase plan.
- Flexible working options.
- Private medical care.
- Life assurance.
- Enhanced maternity and paternity pay.
- Career development support and wide ranging learning opportunities.
- Employee health and wellbeing support EAP, wellbeing guidance etc.
- Carbon neutral initiatives/goals.
- Corporate social responsibility initiatives including support for volunteering days.
- Well known companies discount scheme.
Job Description
Job Description
Ability to work in a hybrid arrangement (office located in Ware).
Core Technical Proficiencies:
- Programming Languages: C/C++.
- Processors: Microchip (PIC32), ARM
- Operating Systems: Bare metal, RTOS
- Networking: Knowledge of networking protocols such as TCP and UDP.
- Protocol: Experience with SPI, I2C, CANbus and other embedded interfaces.
- Other: Experience with stepper and BLDC motors, DC Power Supplies, sensors
- Version Control: Proficiency with Git and collaborative development workflows.
- Documentation: Ability to create design documents on software architecture and algorithms.
Responsibilities:
- Design, develop, and implement embedded software for bare-metal systems, focusing on performance, reliability, and resource efficiency.
- Develop, test, and debug low-level device drivers, peripheral interfaces, and communication protocols directly on microcontrollers or microprocessors.
- Collaborate with hardware engineers to define software/hardware integration requirements and support board bring-up, hardware validation, and troubleshooting.
- Write efficient and maintainable code in C/C++ (and assembly as needed) for microcontrollers, memory-constrained, and real-time systems.
- Utilize oscilloscopes, logic analyzers, JTAG, and other debugging tools to analyze and resolve hardware/software integration issues.
- Develop and execute unit, integration, and system-level tests to verify correct operation and performance of embedded firmware.
- Participate in code reviews to ensure adherence to coding standards, best practices, and design guidelines for bare-metal environments.
- Maintain comprehensive documentation of software architecture, interfaces, and procedures for future maintenance and scalability.
- Analyze and optimize system performance, power consumption, and memory utilization.
- Collaborate with cross-functional teams to define product requirements, identify technical risks, and ensure timely delivery of high-quality embedded solutions
Basic Requirements
- Bachelor’s or Master’s degree in Computer Engineering, Software Engineering, Electronics, or Electrical Engineering.
- Hands on experience in embedded systems development.
- Solid understanding of embedded systems design, including C/C++ memory management, microprocessor architectures, instruction efficiency, and I/O timing.
- Proficient with debugging tools and techniques for embedded systems.
- Demonstrated ability to identify and improve low-level system performance issues using strong problem-solving skills.
- Experience with scripting languages and building systems.
- Adherence to established development processes for all design and implementation activities.
- Experience collaborating with Quality Assurance teams to identify test cases for new features and areas for regression testing.
- Hands-on experience working with hardware engineers on board bring-up, and debugging using oscilloscopes, logic analyzers, or JTAG.
- Experience reviewing peers’ code for adherence to coding standards and design guidelines.
- Fluent in English, both spoken and written.
- Ability to work in a hybrid arrangement (office located in Ware).
Advantageous Skills and Knowledge:
- Programming Languages: Python scripting for test automation, data analysis, or rapid prototyping.
- Processors: ARM
- Robotics Control: Experience or strong interest in robotic control programming is a significant plus.
- DevOps & CI/CD: Familiarity with automated testing, continuous integration pipelines.
- Proficiency in reading schematics.
Personal Attributes:
- Problem-Solving: Demonstrated ability to tackle complex technical challenges.
- Collaboration: Effective team player comfortable with cross-functional collaboration with HW and Software teams.
- Adaptability: Readiness to learn new technologies and adapt to evolving project requirements.
- Initiative: Proactive approach to identifying and resolving issues.
19 Skills Required For This Role
Cross Functional
Problem Solving
Team Player
Data Analytics
Github
Cpp
Game Texts
Cross Functional Collaboration
Quality Control
Test Coverage
Automated Testing
Regression Testing
Prototyping
Networking
Ci Cd
Git
Python
Algorithms
System Design