Имеем некое автономное устройство, которое должно заглатывать данные из CF в свой внутренний буфер. Файлы имеют достаточно большие размеры (десятки-сотни мегабайт), поэтому скорость загрузки достаточно актуальна. CF отформатирована под FAT-16. Загрузка производится блоками по 2КБайта, т.е по 4 сектора. Устройство поддерживает PIO-4. Алгоритм действий:
1. Вычисляем очередной кластер (если надо), выискиваем в нем сектор, который пойдет первым в блоке.
2. Инициализируем процесс чтения из CF: устанавливаем адрес сектора, количество читаемых секторов (4), даем команду старт.
3. Ждем готовность карты.
4. Забираем данные. 1024 цикла по 2 байта.
5. Идем к пункту 1.
При PIO-4 пункт 4 занимает порядка 130 мкс.
Но вот что не очень приятно, пункт 3 занимает еще больше - около 150 мкс. Проверял на разных карточках. Понятно, что все мои потуги в плане ускорения непосредственно считывания из CF упираются в конечном счете в это время ожидания.
Какие здесь есть возможные варианты? Можно ли заставить карточку "думать" быстрее?
И еще попутный вопрос: столкнулся тут с таким понятием как "dual-channel interface" в применении к Compact Flash - что за зверь такой?