It seems most of the tasks are done on hardware, such as knock sensing and additional serial to USB.
Why don't you do these in software?
To me, knock sensing is simply calculating FFT on a buffer, and measuring the value of specific bins (frequency).
Of course there are a few other things to do but in the end it's not that complicated.
It does take some CPU power but the F4 is a beast and could handle that easily.
For the Serial to USB, you can make a composite device and have several serial ports over one cable. (up to 7 on the F4)
Another advantage of using the USB peripheral is that you can make a bootloader.
I have a few code examples if you are interested

Last thing, you should really move to github, it helps people to contribute code
