Вступление
На устройстве USB, которое я разрабатываю, я хочу предложить конечную точку USB Mass Storage для обновлений конфигурации.
Устройство подключено через USB-разъем, и для обновления конфигурации пользователю потребуется только скопировать файл на "фальшивую" флешку, поэтому никакого дополнительного программного обеспечения не потребуется. Это делает решение переносимым между всеми видами операционных систем и улучшает взаимодействие с пользователем.
Используя LUFA, мне удалось реализовать USB-устройство с конечной точкой Mass Storage, которое поддерживает достаточно базовых команд SCSI, чтобы Windows распознала их как устройство хранения.
Но теперь, когда я пытаюсь полностью реализовать набор команд сокращенных блоков SCSI, я понимаю, что может быть проблема. MCU, который я использую, Atmega32u4, имеет только 2,5 КБ SRAM. Часть этого занята глобальными переменными и буферами для основной функциональности, поэтому я хотел бы использовать только 1 КБ из этого для возможностей хранения SCSI.
описание проблемы
TL; DR сверху: у меня есть только около 1 КБ для буфера хранения, чтобы реализовать основные функции USB Mass Storage на MCU.
Насколько мне известно, для правильного функционирования в качестве блочного устройства необходимо отформатировать запоминающее устройство. Я не знаю, какая файловая система обычно поддерживается (Windows и Linux). Я предполагаю, что FAT32, но в любом случае он должен хранить всю информацию, связанную с разделом и один файл на нем в дополнение к самому файлу. Кроме того, кажется, что SCSI работает с размером блока 512 байт, поэтому весь «флеш-накопитель» будет записан всего за две записи блока, что может вызвать проблемы.
Мой вопрос (ы) сейчас:
Можно ли создать / эмулировать полностью работающий USB Flash Disk с объемом всего 1 КБ? Что помешает мне сделать это? Сколько места потребуется пустому разделу? Могу ли я реализовать это без разделения устройства с помощью режима USB без SCSI?