Ник:
Пароль:

Контакты

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 » Embedded Linux
IMX6 NAND Bad Blocks на одном и том же адресу
kruger
Добавлено 06.10.2020 05:03 Редактировалось 06.10.2020 05:04
0
Сообщение: 1
kruger
0

Пункты: 3936
Регистрация: 09.05.2010
Пол: Мужчина
Приветствую!

Есть девайс с IMX6UL с NAND flash.
На разных платах одного и того же самого устройства возникают по одним и тем же адресам что в u-boot что в linux bad blocks
В загрузчике nand erase и nand scrub не помогают

[quote]NAND erase: device 0 offset 0x0, size 0x7000000
Skipping bad block at 0x06000000
Erasing at 0x6fe0000 -- 100% complete.
OK

NAND scrub: device 0 offset 0x0, size 0x7000000
Erasing at 0x5f20000 -- 85% complete.
nand0: MTD Erase failure: -5
Erasing at 0x6fe0000 -- 100% complete.
OK[
/quote]

В чем может быть причина? В какую сторону стоит копать ?
Спасибо за любой совет!
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 06.10.2020 09:33 Редактировалось 06.10.2020 09:36 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Причина очевидна - ваш софт много пишет в один и тот же блок, от чего он и "заканчивается".
Для этого (чтобы запись происходила всегда в разные блоки) и используют JFFS2, UBIFS ...
Спуститься к концу Подняться к началу
Персональная информация
kruger
Добавлено 06.10.2020 13:33 Сообщение: 3
kruger
0

Пункты: 3936
Регистрация: 09.05.2010
Пол: Мужчина
В качестве файловой системы использую YAFFS2
Чипы памяти вроде бы как новые. до этого не использовались

Может, например, в настройках того же u-boot что-то "не доуказал"

/* NAND stuff */
#define CONFIG_NAND_MXS

#if 1
#define CONFIG_CMD_NAND
#define CONFIG_NAND_MXS
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_SYS_NAND_BASE 0x40000000
#define CONFIG_SYS_NAND_5_ADDR_CYCLE

/* DMA stuff, needed for GPMI/MXS NAND support */
#define CONFIG_APBH_DMA
#define CONFIG_APBH_DMA_BURST
#define CONFIG_APBH_DMA_BURST8
#endif

Есть еще маленький вопрос - есть какая нибудь условная "формула" по которой можно примерно прикинуть количество бед блоков с которым справится файловая система ? Например - у нас есть nand размером 128 мегабайт, большую часть времени она заполнена примерно на половину. Размер блока 128кбайта. Таким образом у нас на всю флешку 1024 блока. И при заполнении флешки на 50 % можно с увереностью сказать что если 30 % от всего объема будут bad blocks то файловая система с успехом "разрулит" данную ситуацию :) Такие рассуждения корректные ?
Спасибо!
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 06.10.2020 16:17 Сообщение: 4
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Я таких формул не знаю (погуглите, может и найдете).
Думаю, гораздо надежней будет перейти на UBIFS, у нас на всех изделиях с NAND она устанавливается, подобных обращений нет.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.10.2020 12:42 Сообщение: 5
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Цитата
В качестве файловой системы использую YAFFS2
Чипы памяти вроде бы как новые. до этого не использовались

Может, например, в настройках того же u-boot что-то "не доуказал"


Не знаю насколько актуальна информация на сегодняшний день

https://elinux.org/images/7/7e/ELC2009-FlashFS-Toshiba.pdf

стр 25

Цитата

YAFFS2 does not support static wear leveling.
YAFFS2 does not support global wear leveling.


Цитата

Например - у нас есть nand размером 128 мегабайт, большую часть времени она заполнена примерно на половину.


никакие настройки убута тут не помогут - часть нанды где записаны статические данные не участвует в выравнивании износа, поэтому износ неравномерный и быстрый там где перезаписываемые данные
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux