Расскажу про увеличение памяти (имеется ввиду ПЗУ) на роутере TL-MR3020. С завода там стоит 4 МБ FLASH ПЗУ и 32 МБ ОЗУ. ОЗУ я уже увеличил в прошлый раз до 64 МБ, теперь черед за ПЗУ, т.к. 4 МБ - это очень мало.
Гарантия - давай, досвидания!
Понадобится новая микросхема памяти на 8 или 16 МБ. Я использовал Spansion S25FL064 (спасибо DiGer-у за предоставление микросхемы). Также надо на ваш MR3020 установить OpenWRT. Старая прошивка, естественно, имеет размер 4МБ. Чтобы приготовить прошивку для новой 8 МБ памяти, нужно немного поработать.
Вообще, существует несколько путей для создания новой прошивки. Самый правильный путь - отредактировать исходники OpenWRT и собрать свою прошивку, но есть путь намного проще.
Для начала нам нужно полностью сохранить вашу текущую прошивку на всякий случай. Имейте ввиду, что полный дамп памяти помимо самой прошивки (как стоковой, так и OpenWRT) содержит загрузчик (bootloader) и так называемую область "ART", в которой хранятся калибровочные данные беспроводного адаптера для конкретно этого маршрутизатора. Они записываются на заводе при калибровке. Это очень важно!!! Т.е. чужая прошивка даже с точно такого же устройства может вам не подойти. Конечно, с чужим ART маршрутизатор с вероятностью 99% будет работать, но могут ухудшиться характеристики и стабильность беспроводной связи. Поэтому сохранять ваш ART - ОБЯЗАТЕЛЬНО.
Итак, сохранить прошивку можно с консоли OpenWRT, записав ее в файл.
cat /dev/mtd0 > /tmp/fw_mr3020_4M.bin
cat /dev/mtd5 >> /tmp/fw_mr3020_4M.bin
cat /dev/mtd4 >> /tmp/fw_mr3020_4M.bin
Обратите внимание, здесь "mtd0" - это загрузчик, "mtd5" - прошивка вместе с вашими настройками, а "mtd4" - это ART. Размер ART - 64 КБ и он находится в самом конце дампа.
С помощью WinSCP скачайте получившийся файл "fw_mr3020_4M.bin" себе на компьютер.
Теперь нам надо приготовить новый файл-дамп, который можно будет записать в 8 МБ микросхему.
Для этого надо просто увеличить наш файл до 8 МБ (заполнить 0xFF или нулями, а последние 64 КБ в конце файла заменить на содержимое ART).
Это можно сделать с помощью HEX-редактора, например, WinHEX или, если лень, можно и под Линуксом или на самом маршрутизаторе, вот так (этот способ не проверял, я собрал файл в WinHEX, но должно работать):
cat /dev/mtd0 > /tmp/fw_mr3020_8M.bin
cat /dev/mtd5 >> /tmp/fw_mr3020_8M.bin
dd if=/dev/zero of=/tmp/fw_mr3020_8M.bin bs=1 count=0 seek=8128K
cat /dev/mtd4 >> /tmp/fw_mr3020_8M.bin
Тут почти все также. В файл записывается загрузчик (mtd0), дописывается прошивка (mtd5), затем файл "раздуваем" до 8128 КБ (это 8 МБ с вычетом 64 КБ под ART), а затем в конец дописывается ART. Полученный файл можно напрямую программатором писать на новую 8 МБ микросхему.
Пишем, и перепаиваем микросхемы. Все должно загрузиться и работать, даже настройки должны сохраниться.
На самом MR3020 стоит 8-ногая версия чипа памяти, а у меня, к сожалению, был только 16-ногий чип. Я не захотел заказывать или искать нужный чип и получилось вот что:
Капли - это эпоксидка. Да, согласен, извращение, но работает .
Было вот так
root@OpenWrt:/# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 1.1M 920.0K 168.0K 85% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 30.1M 84.0K 30.0M 0% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock3 1.1M 920.0K 168.0K 85% /overlay
overlayfs:/overlay 1.1M 920.0K 168.0K 85% /
А стало так
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 5.1M 988.0K 4.1M 19% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 30.1M 8.0M 22.1M 27% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock3 5.1M 988.0K 4.1M 19% /overlay
overlayfs:/overlay 5.1M 988.0K 4.1M 19% /
Радуемся!
Сообщение отредактировал VaHG: 14.08.2013, 00:51:34