I was able to implement an MSC class device basing on external qspi flash memory ( QSPI + FatFS + USB mass storage ).
It works, but after some research and testing i think that this is not the right USB device class for the application. The goal is to be able to modify files in the system within it by the MCU (FatFS) and by the user using connected PC through USB. The problem here is that both systems (FatFS and USB MSC) implemet their own filesystems, thus they both operate on raw flash memory. this is not good, as I am having hard time hard time making this thread safe, as the USB components operate purely on interrupt routines. Instead, it would be beneficial to make the USB host PC to use the internal FatFS. The only idea how to do it I got now, is using USB CDC and implementing all communication + PC app by myself. I would like to avoid that.
I have noticed an USB class that might fit into this application but I am not sure how is it called and either it is proprietary at any point. I noticed it after I connect my Android phone to the PC:
This has to be something different than MSC. Also the phones operating system is just fine with me modifying the files there from my PC. Because of that I believe this is the kind of USB class designed for such application. The question is what is it and how can one implement it in STM32?
I would appreciate all help.