Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.12.2016, 13:55   #11
alex286
Junior Member
 
Аватар для alex286
 
Регистрация: 06.11.2016
Адрес: Москва
Сообщений: 13
Вес репутации: 0
alex286 is an unknown quantity at this point
По умолчанию Re: Замена и восстановление Flash ROM в роутере MR3020 и WR703n

Сегодня, вернее вчера, набрел вот на эту статью про "укорачивание" прошивок с boot, и решил попробовать.. Правда решил сначала посмотреть, что-же там на самом деле получилось.. Кроме, того читал кучу отзывов о "окирпичивании" после оной процедуры...

Команда в статье выглядела так:

dd if=original_flash.bin of=flash_without_boot.bin skip=257 bs=512

Обратили внимание? Не 256, как край блока, а 257! А это означает, что вы отрезали вместе с boot первые 512 байт своей прошивки!!! ...

Скорее всего команда имеет место быть, но видимо не для нашего роутера. В "нашем" начальный загрузчик имеет 128К прошивка начинается с адреса 2000Н, то сразу после этого адреса.
Правда об этом можно спорить,.. мол все зависит от разметки и так далее.., спорьте, я не против..

Правильная команда:

dd if=original_flash.bin of=flash_without_boot.bin skip=256 bs=512



А как быть если у вас fullflash, то есть образ считанной микросхемы памяти?

А вот примерно так: с помощью команды dd "нарезать" необходимые вам части, а именно boot, firmware и art, для загрузки в роутер, например китайским загрузчиком u-boot.

Все команды на примере fullflash микросхемы FL032PIF, "выдранной" из роутера. Кладем образ флеша FL032PIF.bin, размером 4194304 байт в какую-нить пустую директорию.

1. Отрезаем от начала файла загрузчик boot:

dd if=FL032PIF.bin of=boot_FL032PIF.bin count=256 bs=512

то есть, считываем в выходной файл первые 256 блоков по 512 байт, что и составит 256х512=131072 байт или 128К.

Кстати именно во "вторых" 64К "своего" загрузчика вы можете увидеть по адресам: 1FC00=MAK, 1FD00=router type и 1FE00= PIN-number.
Сам загрузчик, скорее всего меньше и занимает первую и иногда еще часть второй части области загрузки. (см. в статье)

2. Следующей командой сначала получим промежуточный файл без boot. Примерно, как в начале статьи:

dd if=FL032PIF.bin of=proFL032PIF.bin skip=256 bs=512, это (firmware+art)

И далее, отрежем от него "хвост", размером 64К.

dd if=proFL032PIF.bin of=art_FL032PIF.bin skip=7808 bs=512, - это и есть art.

И сама прошивка - это начальная часть промежуточного файла, а именно:

dd if=proFL032PIF.bin of=firmware_FL032PIF.bin count=7808 bs=512 - это firmware

Для визуального контроля "обрезков", применялся редактор HEX-файлов "Okteta", в OS Ubuntu. Вы можете применить более распространенный WinHEX.

Разумеется можно все сделать и в самом редакторе "мышкой", то как говорится "мы простых путей не ищем"...

P.S. Все это мне не совсем нравиться, поэтому прошу ГУРУ мне указать на ошибки и очепятки...
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 332
Размер:	59.0 Кб
ID:	4033  

Последний раз редактировалось alex286; 08.12.2016 в 15:31.
alex286 вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:17. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика