Сборка прошивки для роутеров на базе RT5350

Написано на основе сборки для HAME MPR-A2.

На самом деле под рукой у меня был клон MPR-A1, но с 32Мб оперативной памяти. Необходимость сборки прошивки возникла из желания заменить флеш-память объёмом 4Mb на более ёмкую. Естественно для этого нужно владеть паяльником.

Я пошел по простому пути:

  • Подключил UART: его пады разведены на плате, и в MPR-A1 даже подписаны ;-) UART нам понадобится, что бы получить доступ к U-boot;
  • Выпаял SPI FLASH;
  • Считал существующую прошивку с помощью Flashrom: flashrom -p serprog:dev=/dev/ttyACM0:4000000 -r backup_firmware.bin;
  • Эту же прошивку мы отправим в более ёмкую микросхему памяти (на 8Мб). Но прежде надо выровнять размер файла: cp backup_firmware.bin firmware8m.bin; truncate -s 8M firmware8m.bin. Это необходимо, потому-что flashrom отказываешься шить флеш, если её размер не совпадает с размером указанного файла;
  • Теперь можно прошить новую микросхему памяти: flashrom -p serprog:dev=/dev/ttyACM0:4000000 -c MX25L6445E -w firmware8m.bin;
  • И запаять её обратно в роутер.

Возможно потребуется обновить U-Boot. Но в моём случае U-Boot уже был свежий с поддеркой 32Mb SDRAM.

Анализ OpenWrt из trunk показал, что поддержка RT3550 и в частности роутеров HAME MPR-A1/MPR-A2 уже находится в мейнстриме, что упрощает сборку кастомной фирмвари.

Роутер MPR-A2 снабжен 32Mb SDRAM и 8Mb SPI FLASH, т.е. как раз мой доработанный клон.

Для сборки требуется выполнить следующие действия:

  1. Получаем свежую версию исходников OpenWrt из репозитория
mkdir openwrt
cd openwrt
svn co svn://svn.openwrt.org/openwrt/trunk hame_Ax
cd hame_Ax

Или обновим старую

svn up
  1. Стоит почистить каталог с временными файлами rm -rf openwrt/trunk/tmp, особенно если ранее уже производились сборки в этом дереве исходников.

  2. Получаем дополнительные пакеты:

./scripts/feeds update -a && ./scripts/feeds install -a 
  1. Применяем дефолтную конфигурацию:
make defconfig 
  1. Запускаем конфигуратор
make menuconfig
  1. Настраиваем сборку для нашего устройства
  Target System: Ralink RT288x/RT3xxx
  Subtarget: RT3x5x/RT5350 based boards
  Target Profile: HAME MPR-A2

Если у вас MPR-A1 или MPR-A5 c 4Mb SPI FLASH то указываем в Target Profile HAME MPR-A1

Если flash-память была заменена на 16Mb, то необходимо указать в новый размер в .dts файле.

vi target/linux/ramips/dts/MPRA2.dts

и в районе 40й строки заменяем размер сегмента firmware c 0x7b0000 на 0xfb0000

  partition@50000 {
    label = "firmware";
    reg = <0x50000 0xfb0000>;
  };
  1. Не выходя из конфигуратора указываем тип собираемого образа
  Target Images: ramdisk
  Target Images: squashfs
  1. Теперь можно сохранить конфигурацию и выйти из конфигуратора.

  2. Собираем образ

make -j 9

Здесь значение параметра -j - это количество ядер в вашем процессоре +1.

Первая сборка может занять достаточно долгое время, потому как кроме собственно образа будет ещё собран тулчейн.

  1. После сборки в каталоге openwrt/trunk/bin/ramips/ появятся файлы с firmware
  openwrt-ramips-rt305x-mpr-a2-initramfs-uImage.bin
  openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin
  1. Сперва прошиваем openwrt-ramips-rt305x-mpr-a2-initramfs-uImage.bin. Сделать это можно через U-Boot, нажав в терминале UART 2 при загрузке.

  2. Если обновление прошло успешно, то после перезагрузки роутер уже загрузит наш OpenWRT, но без доступа к SPI Flash как к диску.

  3. Теперь проведём ещё одно обновление прошивки. Я выполнял команды всё так же через терминал UART, но можно воспользоваться ethernet портом и подключиться к роутеру телнетом: telnet 192.168.1.1.

Необходимо отправить прошивку openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin на роутер. Я положил ещё в каталог локального web-сервера и скачал на роутере:

cd /tmp
wget http://192.168.1.2/openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin
mtd write openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin firmware
reboot
  1. Всё, теперь у нас есть роутер с простором для творчества:
BusyBox v1.22.1 (2014-09-13 00:43:31 MSK) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (Bleeding Edge, r42514)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/# 
root@OpenWrt:/# 
root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    4.9M    272.0K      4.6M   5% /
/dev/root                 2.0M      2.0M         0 100% /rom
tmpfs                    14.3M     56.0K     14.3M   0% /tmp
/dev/mtdblock5            4.9M    272.0K      4.6M   5% /overlay
overlayfs:/overlay        4.9M    272.0K      4.6M   5% /
tmpfs                   512.0K         0    512.0K   0% /dev
root@OpenWrt:/# free
             total         used         free       shared      buffers
Mem:         29356        15480        13876            0         1576
-/+ buffers:              13904        15452
Swap:            0            0            0
 
comments powered by Disqus