Role Overview
We are seeking a highly skilled Embedded Engineer with hands-on experience in building, optimising, and integrating software for real-time, safety-critical, and embedded Linux-based systems. You will work closely with hardware, systems, and production teams to design and implement embedded firmware, OS-level components, and full-stack integrations for intelligent control systems and remote management platforms. This role is ideal for an engineer who enjoys deep system-level work (MCUs, RTOS, drivers), real-time constraints, and also has the ability to integrate backend/frontend/cloud components where required.
Key Responsibilities
1. Software Development
- Design, implement, debug, and optimise embedded software for embedded Linux, RTOS, and microcontroller-based systems.
- Develop low-level software using C, C++, Go, or Assembly.
- Build multithreaded, real-time applications ensuring deterministic behaviour.
- Develop OS-level components such as device drivers, boot-up scripts, and board support interactions.
2. Hardware–Software Integration
- Work closely with hardware engineers to understand board layouts, electrical constraints, and component behaviour.
- Implement software that interfaces with sensors, actuators, and hardware peripherals.
- Perform hardware-in-loop testing and on-target integration.
3. System Architecture & Design
- Translate system requirements into a detailed embedded software architecture.
- Design solutions optimised for memory, power consumption, and CPU constraints.
- Contribute to the evolution of distributed embedded systems interacting with cloud or RMS backends.
4. Testing and Validation
- Develop unit, integration and system-level test plans.
- Use debugging tools such as JTAG, oscilloscopes, logic analysers, or serial debuggers.
- Validate performance under real-world conditions (field simulation, voltage instability, interference, etc.).
5. Documentation & Standards Compliance
- Document requirements, architectural decisions, APIs, and test procedures.
- Ensure compliance with embedded software standards (ISO, MISRA, AUTOSAR where applicable).
- Maintain coding standards, configuration control, and versioning discipline.
6. Optimisation & Continuous Improvement
- Continuously optimise for power efficiency, performance, and memory footprint.
- Implement improvements based on hardware updates, operational feedback, or system analytics.
7. Collaboration
- Work closely with systems engineers, hardware teams, production technicians, and field teams.
- Support deployments, testing cycles, and technical troubleshooting in production and field environments.
8. Research & Innovation
- Explore and implement new embedded architectures, sensors, communication stacks, and optimisation techniques.
- Evaluate emerging technologies applicable to intelligent traffic systems, IoT, and edge computing.
Qualifications & Experience
Minimum Requirements:
- BSc Honours Degree in Computer Science, Computer Engineering, Electronics, Electrical Engineering (Light Current).
- Minimum 5+ years of software development using C++, C, Go, or Java.
- 2+ years of embedded software development, including multithreading, debugging, and real-time system testing.
- 2+ years of experience integrating application software on real-time operating systems (RTOS) or embedded Linux systems.
- Strong understanding of microcontrollers, SoCs, memory architecture, and hardware-software interactions.
Technical Competencies
- Sound knowledge of real-time, multitasking embedded software.
- Experience installing and maintaining embedded Linux systems and BSP components.
- Strong understanding of IP networking (TCP/IP, socket programming).
- Experience with software configuration control (Git).
- Understanding of OOD, TDD, and CI/CD practices.
- Experience with debugging tools (JTAG, oscilloscopes, logic analysers).
- Understanding of system engineering principles for embedded platforms.
Additional requirements
- Ability to travel for field testing or client integration when required.
- Experience with ARM, PIC, or similar architectures.
- Knowledge of embedded security, encryption, or secure boot.
- Experience with communication protocols: UART, SPI, I2C, CAN, Ethernet.
- Experience with cloud or RMS integrations for embedded systems.
- Familiarity with IoT protocols (MQTT, CoAP, BLE, Zigbee).
- Python or scripting experience for testing automation.
- Experience with MATLAB/Simulink for modelling.