Написано на основе сборки для 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, т.е. как раз мой доработанный клон.
Для сборки требуется выполнить следующие действия:
- Получаем свежую версию исходников OpenWrt из репозитория
mkdir openwrt
cd openwrt
svn co svn://svn.openwrt.org/openwrt/trunk hame_Ax
cd hame_Ax
Или обновим старую
svn up
-
Стоит почистить каталог с временными файлами
rm -rf openwrt/trunk/tmp
, особенно если ранее уже производились сборки в этом дереве исходников. -
Получаем дополнительные пакеты:
./scripts/feeds update -a && ./scripts/feeds install -a
- Применяем дефолтную конфигурацию:
make defconfig
- Запускаем конфигуратор
make menuconfig
- Настраиваем сборку для нашего устройства
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
на 0xfb000
0
partition@50000 {
label = "firmware";
reg = <0x50000 0xfb0000>;
};
- Не выходя из конфигуратора указываем тип собираемого образа
Target Images: ramdisk
Target Images: squashfs
-
Теперь можно сохранить конфигурацию и выйти из конфигуратора.
-
Собираем образ
make -j 9
Здесь значение параметра -j
- это количество ядер в вашем процессоре +1.
Первая сборка может занять достаточно долгое время, потому как кроме собственно образа будет ещё собран тулчейн.
- После сборки в каталоге
openwrt/trunk/bin/ramips/
появятся файлы сfirmware
openwrt-ramips-rt305x-mpr-a2-initramfs-uImage.bin
openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin
-
Сперва прошиваем
openwrt-ramips-rt305x-mpr-a2-initramfs-uImage.bin
. Сделать это можно через U-Boot, нажав в терминале UART2
при загрузке. -
Если обновление прошло успешно, то после перезагрузки роутер уже загрузит наш OpenWRT, но без доступа к SPI Flash как к диску.
-
Теперь проведём ещё одно обновление прошивки. Я выполнял команды всё так же через терминал 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
- Всё, теперь у нас есть роутер с простором для творчества:
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