Подыму немного тему... Хотя наверняка и не HID-устройство получится, но нужно именно slave запрограммировать, чтобы по USB было видно стандартную флэшку, и с минимальными разборками и треском башки. Отладка всего этого USB в нормальном отладчике -- вещь же невозможная ? Только шажками всё дальше и дальше ?.. И медитировать над стандартами, где же что же и почему может не работать, и никак иначе ?
Нашёл и читал сегодня этот форум и Гука, "USB in a NutShell", вижу: вроде с USB тут много народу на короткой ноге, и никак неохота самому что-то ваять с нуля. В 21 веке мы или где ? К словам "инкапсуляция полиморфизм" Гугль мне сразу добавляет "наследование", но не находит открытых примеров реализаций USB Mass Storage, может текущие санкции так хитры ?
Недалеко и на паре других форумов я задавал подобные вопросы, конкретного обратно мало.
Плата имеет крутой 2-ядерный процессор Cortex-A9 (встроенный в ПЛИС) и Линукс, где поднят хост USB, но мы не хотим что-то внешнее на веру, пусть и с кучей неподъёмных исходников, копаем в сторону понятного Baremetal-приложения, с обозримыми кодами, что схоже с контроллерами, и хост USB нам не нужен, только device на внутренней флэши типа FAT32, чтобы периодически подключаться к ПК и выдавать туда логи падежей, принимать новые прошивки ПЛИС и ARM-ов для загрузки по включению... Альтера ничего для USB-работ самому не предоставила (как и с MAC), это же дело тяжёлое не только для нас...

Со временем спаяется своя плата с возможно другой периферией, но сейчас нужно прототипировать с контроллером dwc_otg от Синопсисов, те документацию закрыли с год назад, но надеюсь выцепить низкий уровень из Линукс-исходников.. Но сам USB не охота глубоко осваивать, нужно нечто коробочное, чтоб к интерфейсам прикрутил в обе стороны -- и работает !