Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM
Перестаёт работать eMMC через 2..16 дней работы
pavelk
Добавлено 08.02.2022 17:42
0
Сообщение: 1
pavelk
0

Пункты: 69
Регистрация: 08.02.2022
Добрый день.
В какой-то момент обнаружили, что часть процессорных модулей зависает через большое время прогона. Некоторые чаще, некоторые реже, некоторые вообще не зависают.
Симптомы: в какой-то момент появляются ошибки типа
Код

mmcblk2: error -110 transferring data, sector 534904, nr 80, cmd response 0x900, card status 0xb00
mmcblk2: retrying using single block read
mmcblk2: error -110 transferring data, sector 534904, nr 80, cmd response 0x900, card status 0x0
blk_update_request: I/O error, dev mmcblk2, sector 534904

Затем вылетают все приложения, работающие с памятью, и через несколько часов недоступности памяти система паникует.

Скорее всего это произошло после правок пользовательских приложений, но те из них, которые работают с драйверами (в частности spi), уже "вылизаны" и работа с spi написана стандартно.

Иногда встречается закономерность в виде зависания в течение часа после подачи небольших помех по питанию.

Сброс процессора вочдогом не помогает, как и автоперезагрузка после паники - видимо, eMMC как зависла, так и не отвисает, помогает только сброс питания.
Buildroot 2017.08-sk, linux_imx_4.1.15_2.1.0_ga-sk
Память klm4g1fete-b041
Процессор mcimx6d5eym10ac и другие того же типа, работает на 1 МГц.

Как вариант, понизить скорость обмена с eMMC, но я не знаю как.
Еще буду пробовать новую сборку buildroot.
Что еще может быть?

Лог: https://disk.yandex.ru/d/y7YtERHjgAXdqQ
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.02.2022 19:36 Редактировалось 08.02.2022 19:39 Сообщение: 2
sasamy
4.70

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

Еще буду пробовать новую сборку buildroot.
Что еще может быть?


желательно конечно новую сборку попробовать, ещё попробуйте на текущей поменять настройки пинов на интерфейсе emmc

linux_imx_4.1.15_2.1.0_ga-sk/arch/arm/boot/dts/imx6qdl-sodimm.dtsi

поменять
pinctrl-0 = <&pinctrl_usdhc3_100mhz_sodimm>;

на
pinctrl-0 = <&pinctrl_usdhc3_sodimm>;

Цитата

&usdhc3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3_sodimm>;
vmmc-supply = <&reg_3p3v>;
keep-power-in-suspend;
bus-width = <8>;
non-removable;
no-1-8-v;
status = "okay";
};


после этого пересобрать скриптом

./kernel_rebuild.sh
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 08.02.2022 19:50 Сообщение: 3
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
Сброс процессора вочдогом не помогает, как и автоперезагрузка после паники - видимо, eMMC как зависла, так и не отвисает, помогает только сброс питания.
Аппаратная линия сброса чипа eMMC на модуле присутствует - SD3_RST
Судя по всему, им просто никто не пользуется, можно попробовать перевести его в GPIO и попробовать заставить watchdog запускать скрипт который будет генерировать импульс сброса.
Это должно выводить флешку из коматоза.
Спуститься к концу Подняться к началу
Персональная информация
pavelk
Добавлено 09.02.2022 16:50 Сообщение: 4
pavelk
0

Пункты: 69
Регистрация: 08.02.2022
Проверил, как работает сброс памяти.
Выполнил
Код

cd /sys/class/gpio/
echo 200 > ./export
echo out > ./gpio200/direction
echo 0 > ./gpio200/value

На резисторе R76 уровень меняется на ноль, но память как работала, так и работает, чтение в цикле не прерывается, система не падает.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2022 20:42 Редактировалось 09.02.2022 20:47 Сообщение: 5
sasamy
4.70

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

Выполнил


в ядре есть драйвер для сброса через gpio, он собран в ядре

https://elixir.bootlin.com/linux/v4.1.15/source/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt

надо прописать в DTS

buildroot-2017.08-sk/output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi

Цитата

/ {
aliases {
mxcfb0 = &mxcfb1;
mxcfb1 = &mxcfb2;
};

emmc_pwrseq: emmc-pwrseq {
compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>;
};


backlight {

....

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;

hog {
pinctrl_hog: hoggrp {
fsl,pins = <
/* emmc reset */
MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000

/* AUDIO_MCLK */

.....

&usdhc3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3_100mhz_sodimm>;
mmc-pwrseq = <&emmc_pwrseq>;
vmmc-supply = <&reg_3p3v>;

.....


./kernel_rebuild.sh

На референсах i.mx6 NXP стоит PMIC и там при каждом сбросе отключается полностью питание, поэтому сброс emmc для их плат не актуален,
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 10.02.2022 12:20 Редактировалось 10.02.2022 12:23 Сообщение: 6
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
Проверил, как работает сброс памяти.
На резисторе R76 уровень меняется на ноль, но память как работала, так и работает, чтение в цикле не прерывается, система не падает.

Вот что я наблюдаю осциллографом на линии сброса флешки со штатной прошивкой.
При включении питания-сбросе он устанавливается в 1 и загрузчик перед началом работы генерирует на нем импульс ~3мс.
При загрузке ядра эта линия переходит в 0 и более не меняется.
Ответ на вопрос "как флешка при этом может работать?" в документации:
Цитата
Reset: The RST_n signal is used by the host for resetting the device, moving the device to the preidle state. By default, the RST_n signal is temporarily disabled in the device. The host must set ECSD register byte 162, bits[1:0] to 0x1 to enable this functionality before the host can use it.
Спуститься к концу Подняться к началу
Персональная информация
pavelk
Добавлено 11.02.2022 14:31 Сообщение: 7
pavelk
0

Пункты: 69
Регистрация: 08.02.2022
Спасибо за ответы, поставил на прогон с правками скорости памяти и сброса в дереве устройств.
Цитата
При загрузке ядра эта линия переходит в 0 и более не меняется.
Ответ на вопрос "как флешка при этом может работать?" в документации:

У меня ножка сброса висит в притянутом к единице уровне, но у нас и прошивка с правками.
Какие есть возможности по установке регистров emmc?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.02.2022 11:10 Сообщение: 8
sasamy
4.70

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

Какие есть возможности по установке регистров emmc?


не очень понял вопрос, есть инструменты для юзерспейс

https://www.kernel.org/doc/html/latest/driver-api/mmc/mmc-tools.html

в buildroot они тут

make menuconfig

Target packages --->
Filesystem and flash utilities --->
[*] mmc-utils
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM