SK-iMX6S/D-SODIMM, новая eMMC
sasamy
Пункты: 76182
Регистрация: 14.08.2009
Цитата Для начинающих уточните 2 момента:
- Полный путь к drivers/mmc/core/mmc.c
- После изменения mmc.c требуется пересобрать, какой командой правильнее?
1 buildroot-xxxxx-sk/output/build/linux-custom/
drivers/mmc/core/mmc.c
2 находясь в директории buildroot-xxxxx-sk
make linux-rebuild
Pavel Ivanchenko
Admin
Пункты: 91311
Регистрация: 24.03.2009
Пол: Мужчина
Цитата Потребуется обновить загрузчик u-boot, файл buildroot-ХХХХ.ХХ-sk/output/build/uboot-custom/board/starterkit/sodimm_imx6/sodimm_imx6.c
Заменить макроопределение:
Код
#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \
PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
На:
Код
#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \
PAD_CTL_DSE_120ohm | PAD_CTL_SRE_SLOW | PAD_CTL_HYS)
http://starterkit.ru/html/index.php?name=forum&op=view&id=25641#29347
Эта тема получила продолжение.
Цитата Добрый день.
Разобрался с причиной данной проблемы. Как выяснилось, она возникает из-за ошибки в коде uboot в драйвере SD/MMC (разработки Freescale): при инициализации контроллера USDHC не происходила инициализация параметров Delay-locked loop приёмника. При этом ROM-загрузчик устанавливает эти параметры под режим Single Data Rate (в котором он и работает), а uboot использует режим Dual Data Rate и в результате чего момент считывания сигналов с линий DAT7-DAT0 попадает на момент выставления следующего бита данных (судя по регистрам статуса на 1/4 периода частоты шины позже того, что должно быть). Соответственно в зависимости от партии микросхем (как eMMC, так и imx6) могли считываться как корректные данные, так и уже начавший устанавливаться следующий бит.
Ошибка была исправлена NXP в 2015 году (http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/commit/?id=f355f117a6d735b0c3cba79f1cb24829cf8cae25).
У меня с этим исправлением обе «бракованные» платы, на которых я проверял, нормально запускаются. Это без изменений Slew Rate выходов imx6.
Патч uboot-0002-MLK-12001-MMC-USDHC-Clear-DLL_CTRL-delay-line-settin.patch я выложил к публикуемым материалам к модулям.