Скопируйте раздел UBIFS на устройство NAND

У меня есть рабочая система с u-boot и разделом UBIFS на SLC NAND.

Я скопировал раздел UBIFS в файл двоичного образа, прочитав весь диапазон занимаемых им блоков, включая резервную область.

Я могу успешно запрограммировать этот образ на другое устройство NAND (пропустив пустые страницы) и смонтировать его, тем самым продублировав раздел. Однако, если в новом устройстве NAND есть плохой блок, я не знаю, что будет правильным действием?

Когда я пытаюсь пропустить плохие блоки (во время программирования), что кажется наиболее разумным решением, монтирование из u-boot не удается! Разве процесс монтирования UBIFS не может определить, что плохой блок был пропущен? Есть ли другое простое решение?


person Adashi    schedule 30.09.2014    source источник
comment
Вы не должны записывать образ UBIFS напрямую в NAND Flash. UBIFS необходимо записать на том UBI с помощью ubiupdatevol. Проверьте журналы загрузки. У вас нет раздела UBIFS. У вас должен быть раздел MTD, том UBI и файловая система UBIFS (корневая).   -  person sawdust    schedule 01.10.2014
comment
Спасибо за ваш комментарий, вы правы, у меня есть UBIFS, смонтированный на томе UBI, в разделе MTD. Я пытаюсь создать двоичный файл, который является зеркальным отражением тома, а затем использовать его для дублирования тома на другом устройстве NAND. В некотором смысле, как старый добрый Norton Ghost. Теперь я могу это сделать, но простому программатору NAND в массовом производстве нужен способ борьбы с плохими блоками ...   -  person Adashi    schedule 03.10.2014
comment
Как создать образ UBIFS или UBI. Либо NFS монтирует целевую флэш-память в вашей системе разработки, либо выполняет перекрестную компиляцию утилит и устанавливает их на цель.   -  person sawdust    schedule 05.10.2014


Ответы (1)


Нашел рабочий метод!

Вся цель этого состояла в том, чтобы найти простой алгоритм для программирования частей флэш-памяти NAND, прежде чем припаять ее к плате.

Это делается во время массового производства на машине программирования, и для этого нет возможности использовать Linux. Поскольку часть NAND является новой, нет необходимости в информации о выравнивании износа, однако она может иметь от 0 до любого количества плохих блоков, случайно расположенных в области раздела. Единственные доступные шаги:

  • пропустить плохой блок
  • стереть
  • записывать

Подготовка образа для массового производства:

  • Убедитесь, что объем UBI меньше, чем раздел MTD (например, на 5% меньше).
  • Создайте том UBI и UBIFS и заполните их.
  • Дамп блоков NAND + запасная область страниц в бинарный файл.

Подготовить UBIFS можно с помощью mkfs и других инструментов, но тогда вам нужно добавить информацию ECC, которую программатор может не уметь вычислять на лету, а иногда просто не иметь знаний.

Алгоритм программирования следующий:

  • Начиная со смещения раздела MTD, запрограммируйте каждый блок изображения на блок NAND.
  • Если блок NAND неисправен, пропустите его, запрограммируйте блок образа N на блок NAND N+1.
  • Если блок изображения пуст, не программируйте, перейдите к следующему блоку как на изображении, так и на микросхеме NAND.
  • Продолжайте в том же духе до последнего блока объема UBI.
  • Запрограммируйте последний блок изображения в последнем исправном блоке раздела MTD на микросхеме NAND.

Надеюсь, это поможет кому-нибудь :-)

person Adashi    schedule 08.10.2014