Job Description
Purpose of Position:As a Senior Embedded Software Engineer you will design, develop, verify and maintain the safety-related firmware at the heart of our Vehicle Control Platform.
This is a hands-on engineering role; you will own microcontroller code from design through implementation, meeting formal requirements while optimising system performance.
You will join a senior, multi-disciplinary platform team and work day -to -day alongside hardware and electrical engineers, system architects, functional safety engineers, application software teams and product management.
Major Areas of Responsibility:Firmware Design and Implementation- Design, implement, debug and maintain embedded C (and C++ where appropriate) firmware for safety related vehicle control ECUs, from requirement through to released, verified software.
- Implement and maintain vehicle communication interfaces - CAN 2.0A/B, J1939 and other higher-layer CAN protocols, and serial links - against formally controlled interface specifications.
- Develop I/O and actuation software: digital and analogue inputs, PWM and proportional outputs, sensor signal conditioning, scaling, calibration and plausibility checking.
- Implement diagnostics, fault detection and fail-safe behaviour: watchdogs and monitors, fault classification, and transitions into clearly defined safe states.
- Contribute to migrating and modernising an existing production firmware platform onto current hardware.
Safety, Quality and Traceability- Develop against decomposed, traceable requirements and maintain bidirectional traceability from requirement to design, code and verification evidence.
- Author and maintain design documentation, interface specifications and verification records.
- Perform and participate in rigorous peer design and code reviews, and help raise the team's engineering standards.
Verification, Tooling and Automation- Build and maintain automated test capability: embedded unit and integration tests, and hardware-in the-loop test rigs.
- Extend continuous integration and delivery pipelines for embedded builds, static analysis, automated test execution, versioning and release artefact packaging.
- Work with Linux-based coprocessors and services used for data logging, connectivity, remote diagnostics and observability.
- Support bench, vehicle and field commissioning; investigate and root-cause issues found in integration testing.
Knowledge and Experience - Required:- Bachelor's or Master's degree in Electrical or Electronic Engineering, Computer Engineering, Mechatronics, Computer Science or a closely related discipline; or equivalent demonstrable experience.
- 10+ years of professional embedded software development, including at least two (2) years delivering production firmware on 32-bit microcontrollers.
- Embedded C: Expert-level embedded C, with working proficiency in C++. Deep comfort with fixed-point and bounded-resource programming, and with codebases where dynamic memory allocation is prohibited.
- Real-time software: Bare-metal and/or RTOS development - interrupt handling and priority design, scheduling, cyclic task structure, timing and latency analysis, and multicore considerations.
- Hardware fluency: Able to read hardware schematics, MCU datasheets and reference manuals and derive correct peripheral, driver and I/O configuration from them.
- Vehicle networks: Hands-on CAN experience - CAN 2.0A/B plus J1939 or a comparable higher-layer protocol; defining and maintaining message sets and signal databases; bus analysis and fault-finding with standard CAN tooling.
- On-target debugging: Practical use of debug probes, oscilloscopes, logic analysers and bus loggers to diagnose faults on real hardware.
- Coding standards: Experience developing to an enforced coding standard such as MISRA, with static analysis in the development loop.
- Development environment: Comfortable in Linux development environments, with Git-based workflows, code review culture and CI/CD pipelines.
- Experience with TCP/IP networking and embedded Linux device-to-cloud connectivity on Arm-based processors.
Knowledge and Experience - Desired:- Multicore automotive-grade microcontroller families, and commercial safety-certified ECU platforms supplied with a vendor BIOS/HAL and configuration tooling.
- Containerised build environments and self-hosted CI runners for embedded builds and automated hardware test.
- Custom embedded Linux distribution builds with the Yocto or Buildroot - BSP and layer maintenance, kernel and device-tree configuration.
- Requirements management tooling, and Jira / Confluence or equivalent.
- Requirements discipline: Experience working to formal, traceable requirements and interface control documents.
- Scripting and automation: Python and shell scripting for test automation, tooling and data analysis.
Travel:Join Hexagon Mining: Become a key member of a team that is dedicated to precision, adaptability, and innovation. Take the next step in your career with a company that values the contributions of its diverse workforce and fosters an environment of growth and learning.
How to Apply: To apply for the position, please submit your resume and a cover letter explaining your relevant experience and your suitability for this role at Hexagon Mining.