Firmware Engineer (Embedded
System)
Job
Description
We are seeking for a
motivated and experienced Firmware Engineer to join our team! As a
Firmware Engineer, you will be responsible for supporting the
firmware development team in designing, developing, and testing
firmware for a microcontroller on our products. You will be
responsible for full-stack firmware development from design to
implementation to testing and
documentation.
Responsibilities
Work closely with cross-functional teams to ensure
project delivery on time.
Gather and analyse
users' requirements and interpret them into the design
requirements.
Develop clean and robust
firmware for our STM32-based microcontroller with STM32CubeIDE,
Keil MDK, Arduino, PlatformIO, etc..
Develop a
communication protocol over UART, WIFI, and BLE.
Develop a driver for multiple sensors and actuators over
UART, I2C, SPI, CAN, PWM etc.
Implement
control system into a microcontroller.
Perform
firmware testing and validation on the product.
Generate and maintain firmware development
documentation.
Read schematics, and utilise
oscilloscopes and other test equipment in the development and
debugging of firmware.
Working closely with
and providing technical support to resolve issues to our customers
when needed.
Research technical issues related
to firmware and provide recommendations.
Participate in ad hoc software projects and assignments
as
required.
Requirements
Bachelor's degree in Electronic / Electrical / Computer
Engineering, Computer Science, Software Engineering or related
fields.
3+ years of experience in real-time
embedded system development
Good understanding
of wide aspects of embedded systems (microcontroller architecture,
block diagrams, schematics, register maps, etc.)
Must process strong knowledge of C / C++, familiar with Git
and bash.
Experienced in STM32 and / or ARM
Cortex-based microcontrollers.
Experienced in
STM32CubeIDE, Keil MDK, Arduino, PlatformIO
Experienced in implementation of PID controller, motor
control, control theory.
Strong knowledge of
hardware communication protocols such as UART, I2C, SPI, and
CAN.
Possess clean, highly readable, and
modular coding practices.
Experience with
debugging tools such as oscilloscope and logic analyser.
Excellent teamwork skills, flexibility, and ability to
multitask.
Preferred qualifications /
competencies
Knowledge of
Python
Experience in implementing communication protocols over
UART, WIFI (TCP), and BLE.
Experience with
advanced robotics control and filtering (Kalman Filtering and
PID)
Experience with debugging and interacting
with electrical and mechanical hardware.
Experience with computer vision, machine learning, and
deep learning.
Engineer • Singapore