Prezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
5. Co w środku piszczy
● Router jest wyposażony w procesor AR7240 (zdjęcie z dokumentacji)
6. Konsola szeregowa
● Do dalszych prac wygodnie jest posiadać konsolę szeregową
● Konieczne jest wlutowanie się do PCB w punktach
oznaczonych jako TX i RX
● Przejściówka USB pozwala na komunikację 11500 baud
źródło:
OpenWRT Wiki
7. Pierwsze uruchomienie
U-Boot 1.1.4 (Mar 8 2010 - 10:29:42)
AP91 (ar7240) U-boot
DRAM:
sri
#### TAP VALUE 1 = 9, 2 = a
32 MB
id read 0x100000ff
flash size 4194304, sector count = 64
Flash: 4 MB
Using default environment
In: serial
Out: serial
Err: serial
Net: ag7240_enet_initialize...
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7014
eth0: 00:03:7f:09:0b:ad
eth0 up
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:09:0b:ad
ATHRS26: resetting s26
ATHRS26: s26 reset done
eth1 up
eth0, eth1
Autobooting in 1 seconds
## Booting image at 9f020000 ...
Uncompressing Kernel Image ...
8. Cel
● Nadać routerowi drugie życie
○ Zmienić oprogramowanie na otwarte
○ Wykorzystać interfejsy procesora (USB, PCIe)
9. OpenWRT
● Otwarte oprogramowanie gotowe do zainstalowania
● Bazuje na systemie Linux
● System “paczek” podobny do innych dystrybucji
● Lekki, wystarczy 4MB Flash i 32MB RAM
10. Instalacja OpenWRT
● Projekt OpenWRT zawiera gotowe obrazy
● Według instrukcji potrzeba:
○ ściągnąć gotowy obraz “factory” ze strony OpenWRT
○ poprzez interfejs WWW routera użyć obrazu jako
“firmware update”
ERROR !
11. Instalacja - problem
● Producent zablokował możliwość wgrania obrazu przez
HTTP, konieczne ładowanie Flash z poziomu U-Boota
> setenv serverip 192.168.1.234
> tftpboot 0x81000000 firm.bin
> erase 0x9f020000 +0x7c0000
> cp.b 0x81000000 0x9f020000 0x7c0000
> bootm 0x9f020000
12. Start OpenWRT
● Po zainstalowaniu OpenWRT możemy się zalogować
wojtek@wojtek-laptop ~ $ ssh -l root 192.168.1.133
BusyBox v1.23.2 (2015-07-25 15:09:46 CEST) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
CHAOS CALMER (15.05, r46767)
-----------------------------------------------------
* 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:~# uname -a
Linux OpenWrt 3.18.20 #1 Fri Sep 4 21:55:57 CEST 2015 mips GNU/Linux
14. PCIe - co to jest
● Standardowy interfejs komputerowy, następca PCI
● Używany do szybkich kart rozszerzeń
● Zaawansowany technicznie
○ Mały narzut na przetwarzanie przez OS (w
przeciwieństwie do USB)
○ Szybki
○ Niska latencja
15. PCIe - jak wygląda
● Transmisja za pomocą par
ścieżek (różnicowych) o
kontrolowanej impedancji
● Minimalna konfiguracja “x1”
wymaga:
○ Pary RX
○ Pary TX
○ Pary sygnału zegarowego CLK
grafika Tracy Wilson
16. PCIe - gdzie to jest
● Konieczne jest zlokalizowanie linii PCIe na
płycie.
● Założenia:
○ Ścieżki powinny łączyć CPU z modułem WiFi
○ Szukamy 3 par różnicowych na PCB (ścieżki
idące blisko siebie, otoczone masą)
○ Lane’y PCIe TX/RX są łączone przez
kondensatory
○ Para CLK może być łączona przez kondensatory,
albo rezystory albo bezpośrednio
22. Dopasowanie impedancji
● PCIe pracuje z częstotliwością 2.5GHz !!
● W transmisji sygnału po płytce PCB ujawniają się
zjawiska falowe (odbicia, przesłuchy itp.)
● W przypadku PCIe poniższe muszą być spełnione
○ Impedancje źródła, linii i odbiornika muszą
być równe!
○ Długość ścieżek w jednym lane’ie musi być
równa co do 0.1mm!
○ PCIe jest magistralą punkt-punkt
23. Dopasowanie impedancji
Jakość sygnału PCIe
pokazują tzw. “eye diagram”.
U góry - impedancja zgodna.
U dołu - impedancja
niedopasowana.
Ilustracje z przykładów firmy
Agilent.
24. Jak dobrać się do PCIe
Kolejnym krokiem jest wykorzystanie interfejsu PCIe.
Biorąc pod uwagę poprzednie wiadomości, zdecydowano by:
● Kondensatory postawić “pionowo”, odłączając linie
PCIe do karty WiFi
● Do kondensatorów przylutować kabel o impedancji
różnicowej 100R
● Przylutować kabel do zewnętrznego gniazda PCIe
25. Jak dobrać się do PCIe
Problem #1:
Kondensatory są małe (rozmiar 0402, 1.0x0.5mm).
Rozwiązanie:
Duża ilość topnika i lutownica na gorące powietrze.
26. Jak dobrać się do PCIe
Problem #2:
Linie PCIe muszą mieć impedancję różnicową 100R. Czego
użyć jako przewodu?
Rozwiązanie:
??
27. Jak dobrać się do PCIe
Problem #2:
Linie PCIe muszą mieć impedancję
różnicową 100R. Czego użyć jako
przewodu?
Rozwiązanie:
Kabel SATA
źródło:
Accura webpage
30. Pierwsze uruchomienie
root@OpenWRT:~# opkg update
root@OpenWRT:~# opkg install pciutils
root@OpenWRT:~# lspci
01:00.0 SATA controller: JMicron Technology
Corp. JMB362/JMB363 Serial ATA Controller (rev
03)
root@OpenWRT:~#
31. Kilka testów
Transfer do/z dysku:
root@OpenWRT:~#time dd if=~/test.bin bs=1M
of=/dev/null
100+0 records in
100+0 records out
real 0m 9.17s
root@OpenWRT:~#
Prędkość odczytu: 10.91 MB/s