I'm a professional programmer who recently became interested in cars and motorcycles. I'd like to understand how engine control units are designed and programmed, including whether someone without prior embedded-development experience can realistically get started. Are there any useful video channels, open-source projects, or learning paths you'd recommend?
4 Answers
A good first step is learning about CAN bus, since it’s the communication layer used between many vehicle control modules. Introductory CAN material can help you understand diagnostics and how the different units exchange data, although that alone won’t teach you how engine maps or ignition control are implemented.
OpenPilot and its related open-source vehicle databases are also worth examining as examples of a large real-world automotive software project. They can show how vehicle communication data is organized, even though that’s different from writing engine-control firmware itself.
For actual ECU programming, take a look at the open-source Speeduino and rusEFI projects. They have build videos, documentation, and source code that are approachable for programmers. These projects will give you a much better view of fuel tables, ignition timing, sensor handling, and the firmware inside an ECU.
If you’re starting from zero, expect embedded work to feel overwhelming at first. A roadmap covering microcontrollers, C or C++, electronics, real-time programming, and debugging would be useful before tackling a complete ECU. Learning CAN alongside those fundamentals is a sensible path.

I haven’t done any embedded development before, but I’m willing to endure the inevitable late-night debugging. I’ll start with those projects and their documentation.