Дизайн AVR FAT-драйвера

Название может вводить в заблуждение, однако я чувствовал, что не могу написать точное. Мои извинения.

Я работаю над «частичным» драйвером FAT32 для AVR, написанным на C. Я пытаюсь написать функцию, которая в основном считывала бы 4 действительных записи (пропуская LFN и пустые записи) из каталога в буфер. Функция отслеживает текущий кластер и текущее смещение (с шагом 32, так как записи составляют 32 байта) внутри кластера.

Теперь моя проблема в том, что мне нужно, чтобы функция могла читать четыре записи вперед (например, следующие 4 записи от текущего смещения) или четыре записи назад (до текущего смещения). Моя проблема сейчас заключается в том, что при чтении в обратном направлении у вас могут быть некоторые записи в текущем кластере и некоторые записи в предыдущем. Должен ли я отслеживать все номера кластеров, уже прочитанные в массиве, для обхода в обратном направлении? Я просто ищу некоторые указатели на то, что было бы элегантным решением.

Заранее спасибо!


person carazh    schedule 15.05.2016    source источник


Ответы (1)


Это зависит от вашей доступной оперативной памяти, но когда вам не нужно очень быстро получать результат, я бы рекомендовал не кэшировать содержимое.

Кстати. Почему вы пытаетесь изобрести велосипед? Вы можете просто использовать что-то вроде толстой файловой системы elm.

person jeb    schedule 16.05.2016
comment
Драйвер petitfs также не может этого сделать. - person carazh; 16.05.2016