После обсуждения начавшегося здесь, относительно поддержки UHS-I карт памяти, решили понять, что для этого требуется.
Посмотрев спецификацию, выясняется, необходимо предусмотреть возможность переключения напряжения питания домена карты памяти и соответственно всех внешних подтяжек к нему (если таковые имеются).
В текущих версиях железа это не реализуемо и даже эксперимент (если расковырять подуль) никак не поставить.
Смущало два момента:
1) в двух имеющихся схемах отладочных плат на imx6 ни на одном из портов небло реализовано переключение питания (хотя для одной из плат в BSP явно прописывался режим UHS-I)
2) для скоростей в 100МГц (а режим DDR вообще только на 50МГц должен работать) переводить логические уровни на 1,8В явная перестраховка (разве что ради чуть меньшего потребления), для 200МГц 3,3В вот это уже "страшно"
По этому в душе грелась мысль, что если даже карты UHS-I и не будeт работать на 200МГц, то вероятность их нормальной работы в режимах SDR100 и DDR50 близка к еденице (т.е. в крайнем случае, адаптировать драйвер на неиспользование частоты в 200МГц).
Итак, купил карту 16G Apacer Class 10 UHS-I.
Включаем со штатной прошивуой, карта определяется только как high speed SDHC - т.е. как обычная карта, хотя к приятному можно отнести тот факт, что даже в этом режиме чтение и запись работает примерно на 30% быстрее.
Копаемся в исходниках, добавляем в боардфайле, в структуре инита SD интерфейса строку:
Получаем:
Что и требовалось, хотя и переключение питания не реализовано в железе.
Измерения осциллографом показало, что карта теперь работает на тактовой частоте 200МГц!!!
Тестирую, скрипт для измерения скорости записи:
Т.е. предельная скорость записи 11,5МБайт/сек
Скрипт тетсирования скорости чтения:
Предельная скорость чтения составила ~40МБайт/сек, что почти в 2 раза выше скорости чтения этой же карты не в UHS режиме.
Единственный "всплывший минус" - порт с поддержкой UHC-I отказывается работать с обычными картами:
Думаю, с этим как-нибудь разберемся.
Результаты измерений копирования файлов по FTP (тестировал уже на SK-iMX6Q плате) конечно показали меньшие цифры скорости (дело явно в реализации FTP, т.к. при передаче процессор местами до 100% напрягается и судя по осциллограммам на этот момент обмен с картой останавливается):
Чтение с карты, режим С10 ~ 17.5М/с
Чтение с карты, режим UHS-I ~ 31.5М/с
Ошибок в целостности передаваемых данных не обнаружил.
Нубский и слегка оффтопичный вопрос: как провернуть аналогичную операцию с Wandboard? где какой "боардфайл" править? :) У меня есть только эта плата, нужно попробовать переключить хотя бы один из двух портов в UHS-режим.
Да, спасибо. Нашёл-поправил-собрал-залил : ядро грузится и работает (хотя оно почему-то получилось заметно другого размера, чем "штатное" - спишем на различия компиляторов).
оказалось, что моя карточка это просто обычный SDHC (впрочем, никто и не обещал :)) -- куплю УХС и снова проверю.