Текущий архив: 2015.09.10;
Скачать: CL | DM;
Вниз
Как корректно скопировать /dev/mtd0 в образ и обратно (NAND)? Найти похожие ветки
← →
Ламот © (2014-10-22 17:50) [0]Добрый!
Имеем: 2 идентичные железки (в кол-ве много большем, не суть), отличающиеся друг от друга зашитыми на заводе-производителе образами загрузчика (U-Boot).
Железка №1 - нормальная (рабочая во всех смыслах) - принята за "эталон".
Железка №2 - прошита тем же функционалом, но другой версией загрузчика.
Вывод команды:cat /proc/mtd
на обеих железках отрабатывает одинаково:dev: size erasesize name
mtd0: 00030000 00010000 "Bootloader"
mtd1: 00010000 00010000 "Config"
mtd2: 00010000 00010000 "Factory"
mtd3: 00380000 00010000 "Kernel"
Есть желание привести их к "единому знаменателю":
Скопировать разделы с одной железки и записать на другую.
На обеих железках, если не останавливать загрузку, U-Boot стартует адаптированный линукс.
Пробую так:
на железке №1 (эталон):mkdir -p /tmp/ramfs
mount -t ramfs -o size=4m,nr_inodes=0 ramfs /tmp/ramfs
dd if=/dev/mtd0 of=/tmp/ramfs/img0.dd
dd if=/dev/mtd1 of=/tmp/ramfs/img1.dd
dd if=/dev/mtd2 of=/tmp/ramfs/img2.dd
dd if=/dev/mtd3 of=/tmp/ramfs/img3.dd
Сливаю img0-img3 себе на комп, чищу "хвосты", ухожу с железки №1 на железку №2.
Тут стоит пояснить по поводу 4м - именно столько NAND флеша имеется на борту железок (у них абсолютно идентичные борды, разница в партии и какого-то лешего - загрузчиках).
Далее, повторяю манипуляции с оперативкой на жел№2 и заливаю туда все 4 образа, chmod 777...
После чего делаю так:flash_eraseall /dev/mtd0
dd if=/tmp/ramfs/img0.dd of=/dev/mtd0
... и так все 4
Никаких сообщений об ошибках не сыпется, всё переносится якобы корректно, железка до перезагрузки вполне себе работоспособная, но сразу после попытки перезагрузки превращается в кирпич.
Подключался юартом - вообще никакой реакции на подачу питания...
Без flash_eraseall тоже пробовал - результат 1 и тот же. Просто когда-то слышал, что NAND обязательно нужно стирать перед записью нового образа...
Пробовал только /dev/mtd0 (собственно - только он и интересует) - естественно - тоже кирпич...
Что я делаю не так?
ЗЫ. если выпаять флешку из жел№2, зашить на неё корректный образ программатором и впаять обратно - всё работает, но перепаивать руками... много-много-много штук - не вариант, хочется найти адекватное решение с перспективой дальнейшей автоматизации процесса...
← →
brother © (2014-10-22 19:23) [1]> чищу "хвосты",
что это значит?
побайтовое сравнение образов
"Config"
"Factory"
"Kernel"
систем 1 и 2 показывают 100% совпадение?
← →
Ламот © (2014-10-23 10:33) [2]brother © (22.10.14 19:23) [1]
> чищу "хвосты",
- что это значит?
Это значит удаляю *.dd на железке №1 и освобождаю оперативку
Побайтовое сравнение показывает совпадение только Factory и Kernel, Config у всех железок условно уникален, но это не критично: заливал один и тот же конфиг - все становится "ровно"...
Тут еще такое дело: если "штатным средством" залить на 2 "разные" железки 1 и ту же прошивку - все разделы, кроме /dev/mtd0 становятся одинаковыми... тобишь в имеющейся прошивке хранится образ линукса и опций, но корректного образа загрузчика нет...
Собственно вопрос в том и есть: как корректно скопировать /dev/mtd0 с NAND флеша и потом, не менее корректно, залить скопированное в /dev/mtd0 на нанд другой железки?
Нужно ли вообще что-то чистить (erase) делать, и как его правильно делать?
Страницы: 1 вся ветка
Текущий архив: 2015.09.10;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.069 c