С файловой системой конечно сложнее. 51-е ядро стоит например в Cypress FX2LP, А так все обычно собирается из готовых кусков. Главное, понять как это все должно выглядеть, чтобы работало.
Предвижу всяческий геморрой с кешированием и разделением файлов. Обычно сценарий такой - подключили устройство к компу, скопировали файлы, затем "безопасное извлечение". На устройстве нажимаем кнопочку (или ловим отсутствие SOF'ов) и разбираемся, что же там юзер напахал. Потом передергиваем резистор на D+, комп заново монтирует устройство. P.S. В качестве примера можно посмотреть поведение навигатора или телефона при подключении к компу.