|
FatFs на STM32 - кеширование FAT32?, чтобы ускорить f_open() |
|
|
|
Jul 5 2010, 09:55
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Всем доброго времени суток.
На девайсе под управлением STM32 есть процедура, которая создаёт сортированный по алфавиту список файлов FAT32 диска на флеш карточке. Используется FatFs версии 0.08. Количество файлов в списке может быть максимум 500.
На днях обратил внимание, что львиная доля времени (около 90%), затрачиваемого на сортировку, потребляется функцией файловой системы f_open(). Поковырявшись в её дебрях, обнаружил, что в свою очередь это вызвано подфункцией move_window(), которая подгружает по одному сектору из, вероятно, каталога фат.
То есть чтобы открыть файл, файловая система продирается через структуру фат до того, как найдёт запись с информацией по нужному файлу. Считывание ведётся по одному сектору. И так для каждого файла.
Вот и подумалось тут, а почему бы не ввести кеширование для секторов, запрашиваемых функцией move_window()?
Главный вопрос здесь - хватит ли для этого 10-20 килобайт оперативки? К сожалению, приходится довольствоваться только внутренним ОЗУ контроллера.
Наверное, для FAT32 с большим количеством файлов кеширование 20 килобайт (40 секторов) не будет эффективным?
|
|
|
|
Сообщений в этой теме
sonycman FatFs на STM32 - кеширование FAT32? Jul 5 2010, 09:55 aaarrr Цитата(sonycman @ Jul 5 2010, 13:55) Наве... Jul 5 2010, 10:04 sonycman Цитата(aaarrr @ Jul 5 2010, 14:04) Ну поч... Jul 5 2010, 10:35  aaarrr Цитата(sonycman @ Jul 5 2010, 14:35) move... Jul 5 2010, 10:43   sonycman Цитата(aaarrr @ Jul 5 2010, 14:43) Читать... Jul 5 2010, 10:52    aaarrr Цитата(sonycman @ Jul 5 2010, 14:52) Коне... Jul 5 2010, 12:12 sonycman Спасибо!
Что-то вроде этого задумывал и я, тол... Jul 5 2010, 13:36 sonycman Хм, вот все же странно как то у Чена сделан подход... Jul 5 2010, 18:49 AHTOXA Цитата(sonycman @ Jul 5 2010, 19:36) Веро... Jul 5 2010, 19:26 sonycman Цитата(AHTOXA @ Jul 5 2010, 23:26) Нет, m... Jul 5 2010, 19:43  aaarrr Цитата(sonycman @ Jul 5 2010, 23:43) Мне ... Jul 5 2010, 20:21   sonycman Цитата(aaarrr @ Jul 6 2010, 00:21) Увы, в... Jul 5 2010, 21:09    aaarrr Цитата(sonycman @ Jul 6 2010, 00:59) Одна... Jul 5 2010, 21:12     sonycman Цитата(aaarrr @ Jul 6 2010, 01:12) Конечн... Jul 5 2010, 21:35      aaarrr Цитата(sonycman @ Jul 6 2010, 01:35) В эт... Jul 5 2010, 21:51       sonycman Цитата(aaarrr @ Jul 6 2010, 01:51) Нет, э... Jul 5 2010, 22:01        aaarrr Цитата(sonycman @ Jul 6 2010, 02:01) А дл... Jul 5 2010, 22:15    AHTOXA Цитата(sonycman @ Jul 6 2010, 03:09) А ка... Jul 6 2010, 09:11     sonycman Цитата(AHTOXA @ Jul 6 2010, 13:11) Вы мен... Jul 6 2010, 10:24      defunct Цитата(sonycman @ Jul 6 2010, 13:24) это ... Jul 12 2010, 20:13       aaarrr Цитата(defunct @ Jul 13 2010, 00:13) А чт... Jul 12 2010, 21:41        sonycman Цитата(aaarrr @ Jul 13 2010, 01:41) Подоб... Jul 12 2010, 21:47         aaarrr Цитата(sonycman @ Jul 13 2010, 01:47) Не ... Jul 12 2010, 22:52          sonycman Цитата(aaarrr @ Jul 13 2010, 02:52) А не ... Jul 13 2010, 00:19  AHTOXA Цитата(sonycman @ Jul 6 2010, 01:43) А во... Jul 5 2010, 20:56 sonycman Получил результаты своего отладочного логгера, кот... Jul 5 2010, 23:44 Ivan Kuznetzov извиняюсь за оффтоп, sonycman, как у Вас объявлена... Aug 22 2010, 20:20 sonycman Цитата(Ivan Kuznetzov @ Aug 23 2010, 00:2... Aug 23 2010, 01:41  Ivan Kuznetzov Цитата(sonycman @ Aug 23 2010, 07:41) Име... Aug 25 2010, 17:56 aaarrr Посмотрите в map-файле, что стоит перед data[], от... Aug 25 2010, 18:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|