Produkty Novinky Články Návody Kontakty

Přístup přes telnet

Ovládání modulu SAM9260 přes telnet je další běžně využívanou variantou. Na rozdíl od sériového portu se však k modulu přistupuje vzdáleně protřednictvím sítě ethernet (obrázek 1.7).
obrázek sam9260-pripojeni-telnet
Obrázek 1.7 Připojení přes telnet
Telnetové spojení s modulem lze ovšem navázat jen tehdy, jestliže jsou modul a telnetový klient (např. náš počítač s Putty) vzájemně propojeni přes počítačovou síť, jestliže je modul nabootován až do systému Linux a jestliže v systému Linux běží služba (daemon) protokolu telnet. Tato služba se chová jako server, který na TCP portu 23 čeká na žádost o otevření nového spojení s modulem.
Z povahy telnetového spojení je zřejmé, že tento typ přístupu nelze použít pro sledování hlášení během bootování modulu.

Zapojení

Modul SAM9260 má integrované kompletní ethernetové rozhraní, které podporuje komunikaci rychlostmi 10/100Mbit. MAC vrstva rozhraní je realizována periférií EMAC mikrokontroléru AT91SAM9260, zatímco externí obvod DM9161AEP tvoří PHY vrstvu. Zbývající chybějící součástky: signálové oddělovací trafo, konektor typu RJ45 a indikační LED diody jsou dostupné na základní desce Baseboard. Jediné, co vlastně potřebujeme, je propojit vývody obvodu PHY s konektorem RJ45, s oddělovacím trafem a s indikačními LED diodami.
obrázek sam9260-eth
Obrázek 1.8 Modul SAM9260 - zapojení síťového rozhraní
Referenční zapojení ethernetového rozhraní modulu SAM9260 je v případě použití základní desky Baseboard vidět na obrázku 1.8. Součástí konektoru typu RJ45, označeném na základní desce jako P6, je vedle indikačních LED diod i oddělovací trafo, takže zapojování bude ještě o něco jednodušší.
Modul zasuneme do pájecího pole základní desky a nachystáme si několik drátových propojek různých barev.
Jako první připojíme k modulu napájecí napětí +5V a zem GND - stejnojmenné pinheady na boku základní desky propojíme s piny 1 a 3 pinheadu J3 na modulu SAM9260.
Dále přivedeme signály ETHTD-, ETHRD- a ETHRCT z PHY vrstvy na konektor P6 - propojíme piny 4, 6 a 8 pinheadu J3 na modulu s piny 3, 6 a 5 pinheadu J49 na základní desce. Obdobně přivedeme na konektor P6 i signály ETHTCT, ETHTD+ a ETHRD+ z PHY vrstvy - propojíme piny 3, 5 a 7 pinheadu J3 na modulu s piny 2, 1 a 4 pinheadu J49 na základní desce.
Zapojování zakončíme připojením indikačních LED diod osazených u konektoru P6. Na obrázku 1.8 jsou tyto označeny jako LINK (D26), S100 (D25), RED (D28) a GRN (D27). Čísla v závorce udávají pak označení ve schématu. Paralelně k LED diodám LINK a S100 jsou zapojeny i LED diody integrované do konektoru P6.
Zpět k samotnému zapojení indikačních LED diod: výstupy obvodu PHY pro ovládání LED diod: ETHLEDS100, ETHLEDLINK a ETHLEDFDX přivedeme na LED diody S100 (D25), LINK (D26) a RED (D28) na základní desce - propojíme piny 9, 11 a 10 pinheadu J3 na modulu s piny 1, 2 a 3 pinheadu J32 na základní desce. LED dioda LINK (žlutá) a žlutá LED dioda v konektoru P6 budou indikovat připojení linky/aktivitu (svítí/bliká); LED dioda S100 (zelená) a zelená LED dioda v konektoru P6 budou indikovat aktuální komunikační rychlost 10/100Mbit (nesvítí/svítí). A konečně dioda RED (červená) bude indikovat full duplex/kolize (svítí/bliká). LED dioda GRN zůstane nevyužita. Tímto jsme dokončili zapojení ethernetového rozhraní.

Telnetový klient

Pro připojení k modulu přes protokol telnet potřebujeme program zvaný telnetový klient, který dokáže navázat spojení se službou běžící v Linuxu na straně modulu. Opět, stejně jako v případě spojení pře sériový port, nám poslouží program Putty.
Nejprve však uvedeme výchozí parametry síťového rozhraní modulu, tak jak jsou nastaveny v předinstalovaném Linuxu a v zavaděči U-Bootu:
  • IP adresa: 192.168.1.12
  • Maska podsítě: 255.255.255.0
  • Brána: 192.168.1.254
IP adresu modulu nastavíme v Putty do pole Host Name, v poli Connection type zvolíme typ spojení Telnet a zkontrolujeme, že cílový port je nastaven na 23. V poli Saved Sessions napíšeme jméno předvolby a uložíme ji stiskem tlačítka Save. Tím jsme připraveni na otevření spojení s modulem.

Změna MAC adresy a první PING

Před použitím síťového rozhraní nás čeká ještě jeden úkon - musíme změnit výchozí MAC adresu síťového rozhraní.
Každé síťové rozhraní má přiřazenu jedinečnou adresu, pomocí které se jednotlivé síťové rozhraní na síti ethernet na vzájemně identifikují. Nazývá se MAC adresa. Je to něco jako IP adresa, ale na nižší úrovni. Seznam MAC adres je spravován globálně institucí IEEE, která přiděluje rozsahy MAC adres jednotlivým výrobcům. Tak je zajištěna globální jedinečnost MAC adresy. Pak je tu ještě možnost použít speciálního rozsahu MAC adres - jsou to adresy, které si můžeme nastavit sami. Za jejich jedinečnost v rámci sítě odpovídáme tudíž my. A právě tuto druhou možnost využijeme, když si budeme nastavovat naši vlastní MAC adresu.
Poznámka: Jestliže chcete mít jistotu, že MAC adresa vašeho modulu je jedinečná, a nechcete používat lokální rozsah, tak můžete použití MAC adresu nějaké staré vyřazené síťové karty. Případně si můžete najít na stránkách IEEE prefix MAC adresy takového výrobce síťových karet, které v síti určitě nemáte. Např. firma DEC, resp. DIGITAL.
Výchozí MAC adresa modulu SAM9260 je zakompilována v binárním souboru sekundárního zavaděče U-Bootu a její hodnota je 02:FF:FF:FF:FF:FF. Hodnota 02 v nejvýznamnějším bajtu zajišťuje, že druhý bit tohoto bajtu je nastaven na 1. Tak se označují lokálně přidělené MAC adresy. Všechny MAC adresy přidělované globálně mají totiž tento bit nulový. Zbylých nižších pět bajtů může u lokálně přidělované MAC adresy nabývat libovolné hodnoty. Zvolíme si tedy pro ně nějaká hezká čísla, řekněme, že naše nová MAC adresa bude 02:40:50:60:70:90.
Samotné nastavení MAC adresy provedeme v prostředí zavaděče U-Bootu. Linux totiž nastavení MAC adresy přebírá z U-Bootu a během svého zavádění ji nastavuje do síťového rozhraní.
Spustíme si program Putty, nahrajeme si předvolbu pro sériový port a otevřeme spojení stiskem tlačítka Open. Zapneme napájecí napětí na základní desce a jakmile uvidíme, že zavaděč U-Boot startuje (hláška U-BOOT s číslem verze a datem sestavení) stiskneme libovolnou klávesu, abychom přerušili automatické zavedení jádra Linuxu. Tím se dostaneme do promptu U-Bootu.
obrázek sam9260-dump-uboot-mac
Obrázek 1.9 Změna MAC adresy a ping
MAC adresa je uložená v proměnné prostředí U-Bootu (něco jako proměnná v linuxovém shellu) z názvem ethaddr. Změnu hodnoty proměnné na naši novu MAC adresu provedeme příkazem (celý postup je na obrázku 1.9:
u-boot> setenv ethaddr 02:40:50:60:70:90
Úspěšnost si můžeme zkontrolovat vyčtením aktuální hodnoty pomocí příkazu:
u-boot> printenv ethaddr
Aby hodnota proměnné ethaddr zůstala zachována i mezi restarty a po odpojení napájení, musíme ji uložit do paměti DataFlash (případně NandFlash) modulu. To zajistíme snadno příkazem:
u-boot> saveenv
U-Boot potvrdí uložení všech proměnných prostředí do DataFlash/NandFlash.
A můžeme jít do finále - zkusíme, jestli síťové rozhraní funguje. Připojíme modul do počítačové sítě. Měly by se rozsvítit obě LED diody na konektoru P6. Příkazem ping směrovaným třeba na naši síťovou bránu ověříme, že vše funguje jak má:
u-boot> ping 192.168.1.254
Pokud vše funguje, U-Boot odpoví takto:
macb0: Starting autonegotiation... 
macb0: Autonegotiation complete 
macb0: link up, 100Mbps full-duplex (lpa: 0x45e1) 
Using macb0 device 
host 192.168.1.254 is alive 
Síťové rozhraní máme nastaveno a oživeno. Teď už můžeme nabootovat do Linuxu. Zadáme příkaz:
u-boot> run bootcmd
Linux nabootuje a bude čekat na přihlášení. Služba telnetd je automaticky spuštěna jako poslední krok při inicializaci systému.

Přihlášení

Spustíme Putty a nahrajeme si předvolbu pro telnetové spojení. Otevřeme spojení tlačítkem Open. Objeví se uvítací obrazovka modulu a přihlašovací prompt (obrázek 1.10). Přihlásíme se jako superuživatel root, heslo toor (stejně jako přes sériový port). Zobrazí se úvodní hlášení Busyboxu a prompt. Pak už můžeme Linux ovládat stejně jako přes sériovou konzoli. Ovšem s tím rozdílem, že hlášení jádra zde zobrazeny nebudou, ty jsou posílány na systémovou konzoli (ve výchozím nastavení je to port DBGU). Pokud o ně stojíme, musíme si otevřít druhé okno Putty a připojit se tentokrát přes sériový port.
obrázek sam9260-dump-telnet
Obrázek 1.10 Přihlášení přes telnet

Odhlášení a vypnutí systému

Ukončení spojení provedeme prostým uzavřením okna Putty nebo zadáním příkazu exit. Ukončené spojení ovšem neznamená, že by se modul vypnul. Ne, ten běží spokojeně dál až do zadání příkazu poweroff nebo reboot. Důkazem mého tvrzení je fakt, že si můžeme znovu otevřít telnetové spojení.
Příkaz poweroff provede bezpečné vypnutí systému, ovšem nesmíme se nechat zmást tím, že bezprostředně po zadání příkazu dojde k ukončení spojení ze strany modulu. Modul ještě není připraven na vypnutí napájení. Ukončení spojení způsobilo vypnutí síťového rozhraní, což je jeden z prvních kroků při ukončování běhu systému. Že už můžeme vypnut napájení přes telnet prostě nepoznáme. Hlášku Power down uvidíme pouze a jen na systémové konzoli, tj. přes sériový port DBGU.