Temat: [HOWTO] Instalacja OpenWRT Trunk AA na iConnect i update U-Boota.
Ten opis prezentuje stan na Luty 2013.
Pliki z obrazami zostały pobrane z Trunka AA http://downloads.openwrt.org/snapshots/trunk/kirkwood/
This article is also avaliable in english http://wiki.openwrt.org/toh/iomega/iconnect
1. Podłączenie kabla szeregowego
Łączymy się przez kabel szeregowy do konsoli sprzętowej.
Piny na płytce:
[img]images/Articels/Elektronika/iconnect/iConnect_Serial_and_JTAG_pinout.jpg[/img]
1 - VCC (w białym kwadracie)
2 - TX (tu podłącz RX z kabla)
3 - GND
4 - RX (tu podłącz TX z kabla)
Uruchamiamy połączenie z konsolą np przez PuTTY
2. Podłączenie LANu
Podłącz kablem LAN płytę iConnecta z komputerem.
Ustaw adres karty sieciowej na 192.168.1.5
W Windows Start -> Panel Sterujący -> Centrum sieci i udostępniania, następnie kliknij na "Połączenie lokalne" -> Właściwości -> "Protokół internetowy w wersji 4 (TCP/IPv4)" -> "Użyj następującego adresu IP".
Ustaw Adres IP na 192.168.1.5 i maskę podsieci na 255.255.255.0 , zatwierdź zmiany przez OK
3. Konfiguracja serwera tftp
Dla Windows pobierz program tftpd z http://tftpd32.jounin.net.
Rozpakuj go na dysk C:, stwórz folder c:\tftpd\files.
Pobierz z trunka pliki:
- openwrt-kirkwood-uImage
- openwrt-kirkwood--jffs2-128k.img
- openwrt-kirkwood-iconnect-u-boot.kwb
i zapisz je do utworzonego wcześniej folderu files.
Uruchom tftpd w "Server interface" powinno być 192.168.1.5 jeżeli masz więcej kart sieciowych może tam być adres innej karty, zmień na właściwy.
Teraz wciśnij "Settings", przejdź na zakładkę TFTP i ustaw "Base Directory" na c:\tftpd\files, zatwierdź przez OK.
4. Instalacja najnowszego U-Boota
!! Uwaga ta operacja może uszkodzić U-Boot i spowodować że sprzęt nie wstanie !!
Najlepiej jak na początek spróbujesz uruchomić OpenWRT bez wgrywania nowego U-Boota.
Przejdź do punkut 5 najpierw ! Dopiero w razie problemów zatosuj opis z tego punktu.
Nawet jak uszkodzisz router da się go naprawić za pomocą złacza JTAG.
4.1 Kopia bezpieczeństwa ustawień
Podłącz iConnecta do pradu, w konsoli szeregowej obserwuj pojawiajace się komunikaty. Kiedy pojawi się:
Hit any key to stop autoboot: 0
wciśnij enter. Teraz w konsoli wpisz:
printenv
zostana wyświetlone wszystkie zmienne env, skopiuj wszystko do pliku tekstowego i zapisz go, będzie potrzebny później.
4.2 Flashowanie nowego U-Boota
Ustaw adres serwera tftp na 1.5 i adres iConnecta na 1.200.
setenv serverip 192.168.1.5
setenv ipaddr 192.168.1.200
Wgrywamy teraz nowego U-Boot
mw 0x0800000 0xffff 0x100000
nand erase 0x0 0x100000
tftp 0x0800000 openwrt-kirkwood-iconnect-u-boot.kwb
nand write 0x0800000 0x0 0x100000
Taki powinien być wynik:
iconnect => setenv serverip 192.168.1.5
iconnect => setenv ipaddr 192.168.1.200
iconnect => mw 0x0800000 0xffff 0x100000
iconnect => nand erase 0x0 0x100000
NAND erase: device 0 offset 0x0, size 0x100000
Erasing at 0xe0000 -- 100% complete.
OK
iconnect => tftp 0x0800000 openwrt-kirkwood-iconnect-u-boot.kwb
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood-iconnect-u-boot.kwb'.
Load address: 0x800000
Loading: ############################
done
Bytes transferred=401136 (61ef0 hex)
iconnect => nand write 0x0800000 0x0 0x100000
NAND write: device 0 offset 0x0, size 0x100000
1048576 bytes written: OK
jeżeli nie było żadnych błędów robimy reset.
reset
Jeżeli twój iConnect nie wstał po tej operacji (nie świeci się niebieska dioda) oznacza to że wgranie U-Boot nie powiodło się.
Nie panikuj, należny użyć złącza JTAG do wgrania U-Boota, opis znajdziesz w moim artykule Flashing U-Boot with JTAG.
5. Wzorcowa konfiguracja U-Boota
Aby wyeliminować problemy jakie mogą wprowadzić złe ustawienia najlepiej przywrócić zmienne środowiskowe do ich domyślnych wartości.
Tak wygląda domyślna konfiguracja U-Boota:
iconnect => [b]printenv[/b]
baudrate=115200
bootargs_root=noinitrd ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
bootcmd=setenv bootargs ${console} ${mtdparts} ${bootargs_root}; ubi part rootfs; ubifsmount rootfs; ubifsload 0x800000 ${kernel}; bootm 0x800000
bootdelay=3
console=console=ttyS0,115200
ethact=egiga0
kernel=/boot/uImage
mtdids=nand0=orion_nand
mtdparts=mtdparts=orion_nand:0x80000@0x0(uboot),0x20000@0x80000(uboot_env),-@0xa0000(rootfs)
stderr=serial
stdin=serial
stdout=serial
Environment size: 487/131068 bytes
5.1 Usuwanie zbędnych zmiennych (bezpieczny sposób)
Aby wyczyścić istniejąca zmienne środowiskowe użyj:
setenv nazwa_zmiennej ''
powtórz tą operacje dla każdej zmiennej ktorą chcesz usunąć.
5.2 Wymazanie obszaru env w pamieci flash (ryzykowne)
Możesz też wymazać obszar pamięci flash gdzie przechowywane są zmienne env, to zmusi U-Boota do utworzenia nowej konfiguracji z domyślnymi wartościami. Może to być ryzykowne jeżeli w nowej wersji zmieniono lokalizacje przechowywania zmiennych i wymażesz kawałek U-Boota.
Wykonaj:
nand erase 0x80000 0x100000
reset
Po resecie U-Boot zgłosi dwa błędy:
*** Warning - bad CRC, using default environment
Warning: failed to set MAC address
Aby pozbyć się tych błędów należy przywrócić adres MAC (poszukaj ethaddr w pliku z kopią ustawień) i zapisać zmienne:
setenv ethaddr '00:D0:##:##:##:##'
saveenv
reset
Po restarcie nie będzie już błędów.
6. Instalacja OpenWRT na świeżym U-Boocie
6.1 Przygotowanie środowiska
Z backupu odczytujemy adres MAC, zmienna ethaddr.
Dodajemy MAC, ustawiamy IP serwera tftp na 1.5 a iConnecta na 1.200, zapisujemy i restartujemy.
setenv ethaddr '00:D0:##:##:##:##'
setenv serverip '192.168.1.5'
setenv ipaddr '192.168.1.200'
saveenv
reset
Ustawiamy jeszcze parametry bootowania:
setenv machid 'B36'
setenv loadaddr '0x6400000'
setenv console 'console=ttyS0,115200 panic=20'
setenv bootargs_root 'root=/dev/mtdblock2 rootfstype=jffs2'
Teraz dodajemy skrypty ułatwiające wgranie obrazów:
setenv kernel_name 'openwrt-kirkwood-uImage'
setenv rootfs_name 'openwrt-kirkwood--jffs2-128k.img'
setenv download_kernel 'mw $(loadaddr) 0xffff 0x300000; tftp $(loadaddr) $(kernel_name);'
setenv flash_kernel 'nand erase 0x100000 0x400000; nand write.e $(loadaddr) 0x100000 0x400000;'
setenv download_rootfs 'mw $(loadaddr) 0xffff 0x200000; tftp $(loadaddr) $(rootfs_name);'
setenv flash_rootfs 'nand erase 0x500000 0xfb00000; nand write.e $(loadaddr) 0x500000 0x200000;'
setenv bootcmd 'setenv bootargs $(console) $(bootargs_root); nand read $(loadaddr) 0x100000 0x400000; bootm $(loadaddr)'
saveenv
6.2 Wgranie obrazów systemu
Teraz wgrywamy obraz systemu, wykonując:
run download_kernel
run flash_kernel
run download_rootfs
run flash_rootfs
reset
Wynik:
iconnect => [b]run download_kernel[/b]
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood-uImage'.
Load address: 0x6400000
Loading: #################################################################
######################
done
Bytes transferred=1264864 (134ce0 hex)
iconnect => [b]run flash_kernel[/b]
NAND erase: device 0 offset 0x100000, size 0x400000
Erasing at 0x4e0000 -- 100% complete.
OK
NAND write: device 0 offset 0x100000, size 0x400000
4194304 bytes written: OK
connect => [b]run download_rootfs[/b]
Using egiga0 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.200
Filename 'openwrt-kirkwood--jffs2-128k.img'.
Load address: 0x6400000
Loading: #################################################################
##################################
done
Bytes transferred=1443840 (160800 hex)
iconnect => [b]run flash_rootfs[/b]
NAND erase: device 0 offset 0x500000, size 0xfb00000
Skipping bad block at 0x0b5a0000
Skipping bad block at 0x0b5e0000
Skipping bad block at 0x0b620000
Erasing at 0xffe0000 -- 100% complete.
OK
NAND write: device 0 offset 0x500000, size 0x200000
2097152 bytes written: OK
reset
6.3 Pierwszy start
Boot log dla pierwszego startu:
U-Boot 2012.10 (Feb 12 2013 - 18:24:56) Iomega iConnect
SoC: Kirkwood 88F6281_A0
DRAM: 256 MiB
WARNING: Caches not enabled
NAND: 512 MiB
In: serial
Out: serial
Err: serial
Net: egiga0
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x100000, size 0x400000
4194304 bytes read: OK
## Booting kernel from Legacy Image at 06400000 ...
Image Name: Linux-3.3.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1264640 Bytes=1.2 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Using machid 0xb36 from environment
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Linux version 3.3.8 (openwrt@OpenWRTBuild) (gcc version 4.6.4 20121210 (prerelease) (Linaro GCC 4.6-2012.12) ) #1 Wed Jan 30 08:21:48 MST 2013
[ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine: Iomega iConnect Wireless
/* A lot of other lines */
[ 14.512806] NAND device: Manufacturer ID: 0xad, Chip ID: 0xdc (Hynix NAND 512MiB 3,3V 8-bit)
[ 14.521316] Scanning device for bad blocks
[ 14.633823] Bad eraseblock 1453 at 0x00000b5a0000
[ 14.638673] Bad eraseblock 1455 at 0x00000b5e0000
[ 14.643509] Bad eraseblock 1457 at 0x00000b620000
[ 14.768850] Bad eraseblock 3075 at 0x000018060000
[ 14.773689] Bad eraseblock 3077 at 0x0000180a0000
[ 14.854509] Creating 4 MTD partitions on "orion_nand":
[ 14.859696] 0x000000000000-0x000000100000 : "u-boot"
[ 14.865801] 0x000000100000-0x000000400000 : "uImage"
[ 14.871789] 0x000000400000-0x000002400000 : "rootfs"
[ 14.877811] 0x000002400000-0x000020000000 : "data"
/* A lot of other lines */
[ 16.409415] jffs2_scan_eraseblock(): End of filesystem marker found at 0x260000
[ 16.416814] jffs2_build_filesystem(): unlocking the mtd device... done.
[ 16.423471] jffs2_build_filesystem(): erasing all blocks after the end marker... done.
[ 22.954602] JFFS2 notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[ 22.974126] VFS: Mounted root (jffs2 filesystem) on device 31:2.
[ 22.980637] Freeing init memory: 124K
- preinit -
Press the [f] key and hit [enter] to enter failsafe mode
- regular preinit -
- init -
Please press Enter to activate this console.
[Enter]
BusyBox v1.19.4 (2013-02-12 18:25:46 UTC) 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
-----------------------------------------------------
BARRIER BREAKER (Bleeding Edge, r35572)
-----------------------------------------------------
* 1/2 oz Galliano Pour all ingredients into
* 4 oz cold Coffee an irish coffee mug filled
* 1 1/2 oz Dark Rum with crushed ice. Stir.
* 2 tsp. Creme de Cacao
-----------------------------------------------------
root@OpenWrt:/#
Mamy wgrane OpenWRT.
7. Dostęp do iConnect przez SSH
Aby uzyskać dostęp przez SSH należy najpierw zalogować się przez Telent.
W PuTTY ustawiamy:
IP: 192.168.1.1
Port: 23
Rodzaj połączenia: Telnet
po zalogowaniu wpisujemy:
[b]passwd root[/b]
Changing password for root
New password:
Retype password:
Password for root changed by root
Po tym Telent zostanie zablokowany a uzyskamy dostęp po SSH
8. Dostęp do Internetu
Domyślnie w OpenWRT adres IP ustawiony jest na 192.168.1.1 co może konflitowac z naszym routerem.
Za pomocą WinSCP edytujemy plik /etc/config/network
Jeśli chcemy mieć statyczny adres zmieniamy wartość ipaddr na odpowiednią.
Aby uzyskać adres z serwera DHCP w sieci LAN zmieniamy całą sekcje lan na :
config interface 'lan'
option ifname 'eth0'
option proto 'dhcp'
Jeżeli do tego portu będzie podpięty WAN np. Internet od dostawcy to zmieniamy na:
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
#option macaddr '00:30:##:##:##:##' #Optional
Ustawienie wan oraz lan ma znaczenie ze względu na reguły firewalla.
Należy jeszcze wykonać reset. I powinno wszystko działać.
Zobacz: http://wiki.openwrt.org/doc/uci/network
Przydatne komendy U-Boota
nand bad - pokazuje uszkodzone bloki
bdinfo - informacje o płytce
version - informacje o U-Boot
Dodatkowe informacje
http://www.denx.de/wiki/U-Boot
http://wiki.openwrt.org/toh/iomega/iconnect
http://wiki.openwrt.org/doc/uci/fstab
http://www.pawelwozniak.info/