As we dig deeper into understanding the overall F1 system, one of the ultimate interesting areas is whether performance can be improved in any way.
There are devices available for purchase that trick the system into performing differently (e.g. taking as a input a signal in the system and modifying before it reaches the computer). Although these work, their flexibility is limited in what they can and can’t modify as far as behaviors.
I started to take a closer look at the F1 systems TCU (transmission computer). It’s based around a 32-bit Motorola/Freescale/NXP 683xx microcontroller. Although these are well past obsolete, luckily a lot of documentation still exists (and even NXP has archived much of it).
Different TCUs may have different part numbers. I believe this is due to variations in the ROM mask included in manufacturing.
Software is stored on based NOR flash. In this case a 256Kbyte part. Later TCUs may have used different (larger) sizes.
To make this project easier, I replaced the FLASH with a socket so allow quicker loading of the custom software. Sockets are notoriously hard to find for these PSOP-44 packages. I found these from a used parts supplier (though they looked brand new). $2 each (but $47 in shipping) and I’m setup.
Areas of interest to look into next is being able to flash via the BDM interface on the processor. Additionally there is likely a ability to program via the K-line (the factory diagnostic tools allegedly have this capability). Both would remove the need to swap flash chips.
My test bed, covered in the previous section consists of a entire F1 system (almost). It lacks the clutch actuator and some of the sensors related to it. Additionally, I haven’t build things like the shift paddles yet. It allows the system to be powered and the suitable OBD dongles to communicate with the system. In this case, it is running a Launch X431.
Once the test system was in place focus switched to understanding the TCU and how it operated. I will note this is a highly complicated process and takes significant time. In generally involves studying the system with a disassembler and the various reference manuals for the processor itself. I’d say at this point, I’ve barely scratched the surface. To complicate matters further, these processors contain a small co-processor, running a different instruction set and executed out of ROM known as the TCM. I developed a small disassembler for this part. This TCU is responsible for a lot of the lower level drive control/counter accumulator type functionality. Unfortunately since it operates out of ROM, it’s less trivial to change/modify its behavior. There are emulation modes that in theory one could put a copy into the NOR flash and have that copied/run from. I haven’t gotten to this stage yet however.
As a first proof of concept however, I wanted to validate it was infact possible to change the behavior of the system in some way. This proof of concept involved looking at the way the pressure regulation of the hydraulic system operates. I a normal setup, the system regulates the pressure between 40 bar and 50 bar. e.g. if it detects you fall below 40 bar, it starts the pump up until we reach 50 bar.
By modifying some hard-coded parameters and correcting the checksums in the image itself, it was possible to udpate the system such that the pressure would be regulated between around 46 bar to 50 bar. Although this serves little practical purpose, it does demonstrate all the necessary pieces necessary to explore further.
The end result looks like below. This was data captured over OBD looking at the behavior of the system before and after adjustments. You can see the post-change running the pump much more frequently and regulating the pressure into a much tighter band.
What does this mean? It likely means opening the door to tuning all sorts of parameters/characteristics of the system. More interesting however may be to add additional functionality. All of the flash space isn’t currently in use. It wouldn’t be inconceivable to adding new diagnostic features to the system. For example, monitoring pump cycle times and should they fall below a certain level illuminate the gearbox light on the dash and generate custom OBD codes.
If you have any parts related to the F1 system, working or not, including sensors, wiring harnesses, TCUs themselves please do contact me. I’m trying to further complete the system.