Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Процессорные модули » SK-iMX6S-OEM(-WiFi)
Рушится NAND rootfs, предположительно при появлении bad block
Pavel Ivanchenko
Добавлено 17.11.2017 11:20
3
Сообщение: 1
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Модули SK-iMX6S-OEM, некоторое время назад одни из пользователей столкнулись с ситуацией, когда "на ровном" месте система переставала грузиться с загрузочного UBI раздела.
После чего, они изменили способ загрузки на прямое чтение с секторов NAND, через некоторое время ситуация повторилась, только теперь рушится корневая UBI ФС (причем пользовательский софт ничего на флешку не пишет).
https://pastebin.com/XeKFH8ra
https://pastebin.com/VDVmd4GN

Лирическое отступление, появление bad блоков не является само по себе трагедией (даже новые чипы отгружаются с оговариваемым количеством имеющихся битых блоков), возникают (во всяком случае должны) они только при записи, о чем контроллер знает и далее ФС помечает блок как bad.

Конечно отсюда возникает большой вопрос, как возникновение bad блока может привести к рушению ФС ...
Думаю, вам первым делом нужно построить макет имитирующий условия эксплуатации и однозначно определиться, что приводит к краху ФС.

Первое, что приходит в голову по части саомй UBI - покрутить ее настройки в ядре (make linux-menuconfig), как минимум можно увеличить значение "Maximum expected bad eraseblocks count per 1024 eraseblocks" ...
Или включить режим "Read-only block devices on top of UBI volumes".
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 17.11.2017 12:22 Редактировалось 17.11.2017 12:33 Сообщение: 2
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Подробнее опишу изделие в котором это всё происходит:
- Процессорный модуль установлен на материнскую плату, на которой разведены цепи питания, LVDS и RS232. Больше никакие интерфейсы модуля не используются.
- К процессорному модулю прикручена отводящая тепло алюминиевая пластина. Модуль находится в жёстких температурных условиях, но его температура не выходит за пределы допустимых при любых режимах эксплуатации.
- Загрузка модуля осуществляется из NAND, на который пользовательскими приложениями НИЧЕГО НЕ ПИШЕТСЯ.
- После загрузки модуля автоматически загружается пользовательское графическое приложение, написанное на Qt. Приложение получает данные из RS232 и визуализирует их через LVDS на LCD матрице.
- Включение/ВЫКЛЮЧЕНИЕ устройства производится в любой момент времени путём подачи/СНЯТИЯ напряжения питания.
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 17.11.2017 12:53 Сообщение: 3
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Может кто подскажет, как на плате отследить процесс, производящий запись в NAND?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.11.2017 10:43 Редактировалось 21.11.2017 11:34 Сообщение: 4
sasamy
4.71

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

nand: 1024MiB, SLC, page size: 2048, OOB size: 64


попробуйте отключить nand-on-flash-bbt - если будет работать то лучше её не использовать, ее пришлось включать для больших MLC флешей, с текущими SLC я не знаю - нужна ли эта опция, возможно у нее достаточно OOB для маркеров

&gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand_oem>;
nand-on-flash-bbt;
status = "okay";
};

Цитата

- Загрузка модуля осуществляется из NAND, на который пользовательскими приложениями НИЧЕГО НЕ ПИШЕТСЯ.
...
- Включение/ВЫКЛЮЧЕНИЕ устройства производится в любой момент времени путём подачи/СНЯТИЯ напряжения питания.


монтируйте корневую фс в режиме только чтение - ro вместо rw, /etc/inittab

# Startup the system
null::sysinit:/bin/mount -t proc proc /proc
null::sysinit:/bin/mount -o remount,rw /
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 21.11.2017 12:38 Сообщение: 5
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Для перевода раздела с КФС в режим RO сделал вот такой скрипт:

#!/bin/bash

echo "Make directory /mnt/mmcblk0p1"
mkdir /mnt/mmcblk0p1

echo "Replace string rw,noauto to ro,noauto in /etc/fstab"
sed -i "s/rw,noauto/ro,noauto/" /etc/fstab

echo "Replace string remount,rw to remount,ru in /etc/inittab"
sed -i "s/remount,rw/remount,ro/" /etc/inittab

echo "Reboot CPU"
reboot

Посмотрим, поможет или нет.
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 21.11.2017 13:53 Сообщение: 6
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Цитата
Цитата

nand: 1024MiB, SLC, page size: 2048, OOB size: 64


попробуйте отключить nand-on-flash-bbt - если будет работать то лучше её не использовать, ее пришлось включать для больших MLC флешей, с текущими SLC я не знаю - нужна ли эта опция, возможно у нее достаточно OOB для маркеров

&gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand_oem>;
nand-on-flash-bbt;
status = "okay";
};

Цитата

- Загрузка модуля осуществляется из NAND, на который пользовательскими приложениями НИЧЕГО НЕ ПИШЕТСЯ.
...
- Включение/ВЫКЛЮЧЕНИЕ устройства производится в любой момент времени путём подачи/СНЯТИЯ напряжения питания.


монтируйте корневую фс в режиме только чтение - ro вместо rw, /etc/inittab

# Startup the system
null::sysinit:/bin/mount -t proc proc /proc
null::sysinit:/bin/mount -o remount,rw /


Если изменить inittab с rw на ro сразу, то не получается переписать образ с SD карты в NAND. Возникает ошибка при выполнении последнего пункта - записи в mtd0. Видимо kobs-ng пытается что-то записать SD карту, которая к этому моменту смотнтирована уже в RO. (вывод работы root2nand.sd в лог-файл я при этом уже убрал)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.11.2017 15:22 Редактировалось 21.11.2017 15:23 Сообщение: 7
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Без опции nand-on-flash-bbt; работает nand - корневая монтируется ? Если да - я её тогда удалю в следующем релизе, т.к. всё равно MLC больше не планируется.
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 21.11.2017 16:06 Сообщение: 8
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Цитата
Без опции nand-on-flash-bbt; работает nand - корневая монтируется ? Если да - я её тогда удалю в следующем релизе, т.к. всё равно MLC больше не планируется.

Да, монтируется, только что проверил в одной из сборок. Завтра попробую и отпишусь как в 2014.08 приживётся это изменение.
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 22.11.2017 18:21 Сообщение: 9
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Попробовал, buildroot-2014.08 тоже загружается без проблем.
Спуститься к концу Подняться к началу
Персональная информация
Alex61RUS
Добавлено 12.12.2017 15:12 Сообщение: 10
Alex61RUS
5

Пункты: 3161
Регистрация: 30.05.2014
Пол: Мужчина
Всем добрый день!
Порядка в 20 изделиях был применён скрипт, модифицирующий inittab, для монтирования rootfs в режиме ro. После двух недель эксплуатации один из модулей всё же перестал загружаться. Только лог загрузки теперь выглядит не так как в предыдущие разы:
Boot Log
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6S-OEM(-WiFi)