Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Процессорные модули » SK-iMX6S-OEM(-WiFi)
Карты памяти UHS-I
Pavel Ivanchenko
Добавлено 20.10.2013 13:46 Редактировалось 20.10.2013 14:29
0
Сообщение: 1
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
После обсуждения начавшегося здесь, относительно поддержки 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 интерфейса строку:
Цитата
static const struct esdhc_platform_data mx6q_sabrelite_sd2_data __initconst = {
.cd_gpio = MX6Q_SK_SD2_CD,
.keep_power_at_suspend = 1,
.support_18v = 1,
};

Получаем:
Цитата
# mmc1: host does not support reading read-only switch. assuming write-enable.
mmc1: new ultra high speed SDHC card at address 0001
mmcblk0: mmc1:0001 00000 14.6 GiB
mmcblk0: p1 p2

Что и требовалось, хотя и переключение питания не реализовано в железе.
Измерения осциллографом показало, что карта теперь работает на тактовой частоте 200МГц!!!

Тестирую, скрипт для измерения скорости записи:
Код
#!/bin/sh

dd if=/dev/zero of=/mnt/mmcblk0p2/100M.TST bs=1M count=100
sync
sync

Цитата
# time ./wr_speed_test
100+0 records in
100+0 records out
real 0m 8.69s
user 0m 0.00s
sys 0m 1.02s

Т.е. предельная скорость записи 11,5МБайт/сек

Скрипт тетсирования скорости чтения:
Код
#!/bin/sh

umount /dev/mmcblk0p2
sync
sync
mount /dev/mmcblk0p2 /mnt/mmcblk0p2
time dd if=/mnt/mmcblk0p2/100M.TST of=/dev/null bs=1M count=100

Цитата
# ./rd_speed_test
EXT4-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
100+0 records in
100+0 records out
real 0m 2.46s
user 0m 0.00s
sys 0m 0.41s

Предельная скорость чтения составила ~40МБайт/сек, что почти в 2 раза выше скорости чтения этой же карты не в UHS режиме.

Единственный "всплывший минус" - порт с поддержкой UHC-I отказывается работать с обычными картами:
Цитата
sdhci: Switching to 1.8V signalling voltage failed, retrying with S18R set to 0
mmc1: error -84 whilst initialising SD card

Думаю, с этим как-нибудь разберемся.

Результаты измерений копирования файлов по FTP (тестировал уже на SK-iMX6Q плате) конечно показали меньшие цифры скорости (дело явно в реализации FTP, т.к. при передаче процессор местами до 100% напрягается и судя по осциллограммам на этот момент обмен с картой останавливается):
Чтение с карты, режим С10 ~ 17.5М/с
Чтение с карты, режим UHS-I ~ 31.5М/с

Ошибок в целостности передаваемых данных не обнаружил.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.10.2013 03:04 Редактировалось 21.10.2013 03:20 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Единственный "всплывший минус" - порт с поддержкой UHC-I отказывается работать с обычными картами:


выставил на обоих портах

static const struct esdhc_platform_data mx6q_sabrelite_sd1_data __initconst = {
.cd_gpio = MX6Q_SK_SD1_CD,
.keep_power_at_suspend = 1,
.support_18v = 1,
};

static const struct esdhc_platform_data mx6q_sabrelite_sd2_data __initconst = {
.cd_gpio = MX6Q_SK_SD2_CD,
.keep_power_at_suspend = 1,
.support_18v = 1,
};

загрузился с "обычной" SDHC 8 GB class 4 без вопросов (корневая фс на SD) на ядре 3.0.35-4.1.0
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 21.10.2013 08:07 Редактировалось 21.10.2013 08:07 Сообщение: 3
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
Cпасибо, очень полезно! А с emmc никто не работал ?
Там 8 бит, плюс 200 мгц судя по файлам других боардов.

Цитата
.support_18v = 1,
.support_8bit = 1,
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.10.2013 17:25 Редактировалось 25.10.2013 17:25 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Cпасибо, очень полезно! А с emmc никто не работал ?
Там 8 бит, плюс 200 мгц судя по файлам других боардов.

у меня есть под рукой BeagleBoneBlack с набортным eMMC - что тебя оттуда интересует?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Tangaroa
Добавлено 08.04.2014 15:02 Редактировалось 08.04.2014 15:02 Сообщение: 5
Tangaroa
0

Пункты: 194
Регистрация: 08.04.2014
Нубский и слегка оффтопичный вопрос: как провернуть аналогичную операцию с Wandboard? где какой "боардфайл" править? :) У меня есть только эта плата, нужно попробовать переключить хотя бы один из двух портов в UHS-режим.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 08.04.2014 15:38 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
где какой "боардфайл" править? :)

ищите файл примерно тут:
Код
arch/arm/mach-mx6/*board*-*wand*.c

предвосхищая следующий вопрос - это в исходниках ядра от вашей девборды..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Tangaroa
Добавлено 08.04.2014 18:48 Сообщение: 7
Tangaroa
0

Пункты: 194
Регистрация: 08.04.2014
Да, спасибо. Нашёл-поправил-собрал-залил : ядро грузится и работает (хотя оно почему-то получилось заметно другого размера, чем "штатное" - спишем на различия компиляторов).

оказалось, что моя карточка это просто обычный SDHC (впрочем, никто и не обещал :)) -- куплю УХС и снова проверю.
Спуститься к концу Подняться к началу
Персональная информация
Tangaroa
Добавлено 08.04.2014 20:34 Сообщение: 8
Tangaroa
0

Пункты: 194
Регистрация: 08.04.2014
нет, всё равно не пытается переключиться в UHS. Может, ещё какие-то настройки в ядре надо менять?
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 09.04.2014 07:19 Сообщение: 9
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
Ядро какой версии?
Спуститься к концу Подняться к началу
Персональная информация
Tangaroa
Добавлено 09.04.2014 18:34 Сообщение: 10
Tangaroa
0

Пункты: 194
Регистрация: 08.04.2014
3.0.35, лежит в комплекте SDK Wandboard, скачано с их сайта.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6S-OEM(-WiFi)