‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

worklog: прикрутил простейший алгоритм кэширования

Теперь чтение и запись флэшки идут через буфер размером в один физический сектор.
Алгоритм не универсален и совершенно точно будет тупить, если запись вдруг перескочит через границу сектора, но в нормальных условиях такое происходить не должно, ибо в физический сектор 4096 байт прекрасно укладываются логические сектора файловой системы (512, 1024, 2048, 4096 байт - всё чётко).

Под кэш отъедено аж 4 кБ системного ОЗУ, коего всего-то 64 килобайта (и 2кБ уже ушло на стэк). Наверное, в будущем, память на плате с ПЛИСкой можно будет заюзать под эти нужды. Или... ну, не знаю... память внутри видеоконтроллера (там её больше мега, из которых использовано от силы килобайт 400). Изврат, но тёплый и ламповый. Сразу вспоминаются времена DOS - то была эпоха. "INT 21H" и всё такое :)

А выигрыш простой: если раньше скорость записи была от силы 9.5 кБ/с, то щас 60..70 кБ/с, что заметно комфортнее (учитывая скромные объём флешки). Скорость чтения вообще упёрлась в скорость USB Full-speed.

Результатами удовлетворён.

Теперь пора прикручивать FatFs уже к самому контроллеру. Надо только разобраться, где в хитросплетениях библиотеки USB MSC спрятан код её отключения, дабы не вызывать конфликты файловой системы.
Tags: радио
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments