The Embedded Software Engineer is responsible for all aspects of software developed by REUK to support the development of the full range of products developed and supplied by REUK.
Working closely with the Software Engineering Manager and other members of the Embedded Software Engineering team, the Embedded Software Engineer is responsible for maintaining, updating and developing software embedded in a variety of REUK products.
This pivotal role encompasses the development, maintenance, and enhancement of software foundational to the entire REUK product offering. It ensures continuous product evolution in alignment with established product roadmaps and the overarching engineering strategy.
Responsibilities and Tasks
Responsibilities
Development & Enhancement: Design, code, test, and deploy new embedded software applications and features for REUK products, ensuring adherence to internal processes, quality, and compliance standards.
Innovation: Collaborate with development teams to deliver innovative solutions that address complex requirements, maximise value, and adhere to development timelines.
Documentation: Create clear and comprehensive design documentation for all software, and actively contribute to product technical documentation, product roadmaps, and software frameworks.
Collaboration: Collaborate closely with SoC architects, as well as FPGA and embedded software development teams.
Main tasks
Develop, maintain, and rigorously test C/C++ codebases.
Conduct comprehensive Unit and Integration Testing to ensure software quality and reliability.
Implement and integrate software libraries supporting diverse communication protocols, including RS232/RS422, CAN, RTP, UDP, and TCP/IP.
Design and develop graphical user interfaces (GUIs) leveraging both commercial and open-source libraries.
Develop robust software applications for system control and monitoring.
Implement and test video processing software solutions leveraging both commercial and open-source libraries.
Provide essential support to the production team during factory and assurance testing phases, ensuring successful product delivery.
Collaborate effectively with the development team to define, analyse, and decompose complex requirements, accurately capture scope, generate precise estimates, and identify interdependencies for efficient project execution.