Project Lead: Mohammed Abdul-Nabi
Timeline: July 2025 – June 2026
Link to old ECU Firmware - here
Project Overview
This project represents a full-scale redevelopment of our vehicle’s embedded firmware systems, with a strong focus on modularity, reliability, and usability. The goal was to replace legacy codebases with robust, maintainable, and scalable firmware that could support our evolving hardware while improving vehicle performance, driver control, and data visibility.
The project was split into four key initiatives:
- Modular ECU CAN Firmware – Restructuring of the ECU firmware to make it reusable and scalable across future hardware.
- Motherboard Firmware Rewrite – A ground-up rewrite of the accumulator monitoring system to improve fault detection and eliminate legacy issues.
- Expanded Sensor Integration – Adding and integrating sensors in previously unmonitored subsystems to improve diagnostics and in-race performance visibility.
- Multifunction Steering Wheel Firmware – Implementing firmware for a new steering wheel interface that consolidates key driver controls and feedback systems.
Most of the core development will be done by the project lead to keep momentum and avoid delays, but the project is being set up so that new recruits can pick up smaller modules, add features, or assist with testing as they ramp up. Giving them space to learn and aiding in knowledge transfer while keeping the overall project stable and on-track.
Modular ECU CAN Firmware
Objectives:
Restructure the ECU firmware into independent, reusable submodules to reduce firmware development time for new hardware and simplify long-term maintenance.
Implementation Steps & Goals:
- Codebase Audit:
- Conduct a full audit of the existing firmware to identify tightly coupled logic blocks
- Standardized Interfaces:
- Create API’s for module communication using well defined structs and pointers.
- Test each module extensively before deploying.
- Hardware Abstraction:
- Create HAL between firmware and hardware to increase code portability, cleaner, consistent and testing easier
- For example;
- twai_transmit(&message, portMAX_DELAY); becomes
- CAN_HAL::send(message);
- Wrote documentation and used version control properly:
- Each module is documented and versioned. That way, it’s easy for someone else to pick it up or roll back if needed.
Rationale & Impact:
- Scalability:
- Adding support for new ECUs or subsystems now only requires implementing the relevant modules, not rewriting entire firmware blocks.
- Maintainability:
- Isolated modules can be debugged, validated, and upgraded independently, reducing the risk of introducing regressions.
- Efficiency Gains:
- Estimated 40% reduction in development time for new hardware due to reduced duplication and clearer structure.