Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Вниз

Как корректно скопировать /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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.121 c
2-1393856756
GroupBox
2014-03-03 18:25
2015.09.10
Скрыть рамку котрола


1-1332249209
Димка На
2012-03-20 17:13
2015.09.10
Вертикальный TBitmap.ScanLine


1-1330436331
Chrom
2012-02-28 17:38
2015.09.10
Отработка оператора Case


15-1421388097
Silvestr22
2015-01-16 09:01
2015.09.10
SSD кеш на неосновной диск - возможно ли ?


2-1397989657
vini
2014-04-20 14:27
2015.09.10
Как изменить размер bitmap





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский