I’m Rutger van den Berg, currently doing the first year of my master in Computer Science. I joined the team last year, and had so much fun that I’m going for another year.
When writing software for an embedded project such as a racing car, one of the first things that needs to be done is making sure that all your peripherals work. This year we decided to switch to a different processor, from a different manufacturer, for our Electronic Control Unit (ECU). This means that we had to completely rewrite this low level layer for the DUT17.
Sometimes this is easy, and the manufacturer of your board provides drivers that work out of the box for their evaluation platform. In these cases you usually only have to modify this to match your own board. In other cases, there are no drivers available, and you have to write your own. This can be quite challenging, since most Computer Science students, myself included, are not used to working directly with low level register access and the like. You also have to really know how the peripheral works, for example, what bits in specific registers enable what functionality.
This might sound cumbersome and time consuming, but it’s also a lot of fun. It really helps your understanding of how computers actually work. Contrary to most software development, something that sounds as simple as getting a few letters on your display can be very satisfying when you’re the one writing the driver.
Next up is coding the actual functionality. A good number of systems need to be implemented. You need to be able to reliably communicate with different devices in the car. Sensor data has to be gathered. You need to run control systems and use them to drive your actuators. Another very important aspect is safety. The FSAE rules specify a number of safety systems, and we implement some more of our own. Most of these require some software. Even for the ones that are completely in hardware, you still want to be able to monitor what’s happening. You also want to be able to log everything that happens so that the vehicle dynamics and , and send relevant parts of this information to the race engineer’s laptop through the telemetry system.
This laptop of course also needs customised software to display the relevant information in an efficient way.
In short, we’ve got a long way to go before we can drive the car. But it’ll be a lot of fun.