Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.041 c
15-1416691802
Юрий
2014-11-23 00:30
2015.09.10
С днем рождения ! 23 ноября 2014 воскресенье


2-1396356964
Дмитрий
2014-04-01 16:56
2015.09.10
0,1 is not a valid BCD value


15-1414578228
qpash
2014-10-29 14:23
2015.09.10
Скриншот произвольной области


6-1220336116
ilshat
2008-09-02 10:15
2015.09.10
Принадлежность группе пользователя в AD


15-1417987802
Юрий
2014-12-08 00:30
2015.09.10
С днем рождения ! 8 декабря 2014 понедельник