How do you even write code for multiple core microcontrollers?
FreeRTOS is (sometimes?) aware of multiple cores, and you can thus use them mostly transparently. I think it also has the ability to bind certain tasks to a specific core.
Bit-banging USB was a real neat feat ... 17 years ago.
Back then it was done on a 12MHz 8-bit AVR processor.
I think it first started by a russian or bulgarian guy, and later it was a bit more formalized and Obdev released V-USB
https://obdev.at/products/vusb/index.htmlAnd since that time I've been using it with my USBasp programmers.
It "only" does low speed (1.5Mbps) USB but that's still only 8 clock cycles for each bit.
But these days, it's mostly "meh, who cares". Apart from this temporary chip shortage there are so many uC's with hardwasre USB on board, that it just seems silly to want to bit bang it.
I do think that V-USB can be a great resource for learning to work with USB.
Instead of a gazillion pages of documentation of both USB and the peripherals in your uC, you have a quite small and compact library which is mostly written in C, with a bit of asm poured in for the bit banging itself, and they have working examples on their website.
I've also once captured a bit of this data with Sigrok / Pulseview and the EUR 10 LA hardware (CY7C68013A based). Pulseview has nice software decoders and you see all kind of interesting stuff. Starting tokens (not differential), keep alive messages, checksums, and a whole lot more, and this all still works quite nicely on such cheap hardware and 1.5Mbps.