Produkty Novinky Články Návody Kontakty

USB host

Zprovoznění rozhraní USB host na modulu SAM9260 nám otevře cestu k řadě zařízení, s kterými se dá komunikovat přes USB rozhraní. Ať už jde starou dobrou USB klávesnici nebo USB monitor. V podstatě jsme limitováni pouze podporou daného zařízení v Linuxu, resp. existencí ovladače pro dané zařízení pro systém Linux. Základní příklad, který si vyzkoušíme, je připojení USB flash disku, tedy USB mass storage zařízení.

Zapojení

Zapojit rozhraní USB host modulu SAM9260 je jednoduché. Stačí připojit USB konektor typu A a vratnou pojistku 500mA typu polyswitch. Vratná pojistka má za úkol zabránit proudovému přetížení zdroje napětí +5V na základní desce Baseboard v případě, že se zařízení připojené k modulu přes USB nechová dle specifikace (max. povolený odběr s USB host je právě 500mA).
obrázek sam9260-usbhost
Obrázek 1.1 Modul SAM9260 - zapojení USB host rozhraní
Referenční zapojení rozhraní USB host modulu SAM9260 je v případě použití základní desky Baseboard vidět na obrázku 1.1.
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 vždy nejprve 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.
Pojistka polyswitch je již přítomná na základní desce. Konektor USB také a to dokonce dvojitý - konektor J17. Signály dolního konektoru jsou vyvedeny na pinhead J57 na základní desce, zatímco signály horního konektoru jsou přivedeny na pinhead J58. Můžete si tedy vybrat.
Signály HDMA a HDPA rozhraní USB host z modulu přivedeme na dolní konektor dvojkonektoru J17 typu 2x USB A. To znamená, že propojíme piny 30 a 29 pinheadu J2 na modulu s piny 1 a 2 pinheadu J57 na základní desce. Toť vše. Pokud byste trvali na použití horního konektoru dvojkonektoru J17, tak byste museli signály HDMA a HDPA z modulu SAM9260 přivést na piny 1 a 2 pinheadu J58.

USB mass storage

Rozhraní USB host máme zapojeno, takže nám nic nebrání jej otestovat. Nejjednodušším testem bude připojit přes něj k modulu nějaké nekomplikované USB zařízení. Takovým zařízením, který má dnes každý, je USB flash disk. Navíc je to zařízení, které je podporováno obecným ovladačem USB mass storage. Takže není nutné se nějak trápit s ovladačem - ten je už zakompilován do jádra.
Zapneme napájecí napětí, počkáme, až nabootuje modul do přihlašovacího promptu a přihlásíme se do Linuxu. Pak zasuneme USB flash disk (nebo třeba chytrý telefon s flash pamětí dostupnou jako USB disk) do spodního konektoru konektoru J17 na základní desce. Na systémové konzoli by se mělo objevit hlášení:
scsi0 : usb-storage 1-1:1.0 
scsi 0:0:0:0: Direct-Access     A-DATA   USB Flash Drive  0.00 PQ: 0 ANSI: 2
sd 0:0:0:0: [sda] 7892087 512-byte logical blocks: (4.04 GB/3.76 GiB) 
sd 0:0:0:0: [sda] Write Protect is off 
sd 0:0:0:0: [sda] Assuming drive cache: write through 
sd 0:0:0:0: [sda] Assuming drive cache: write through  
        sda: sda1 
sd 0:0:0:0: [sda] Assuming drive cache: write through 
sd 0:0:0:0: [sda] Attached SCSI removable disk
Toto hlášení říká, že bylo připojeno USB storage zařízení s názvem A-DATA USB Flash Drive o velikosti 4.04GB z toho 3.76GB je volných. Toto zařízení bylo do systému namapováno jako zařízení /dev/sda, přičemž na zařízení je jeden jediný oddíl přístupný jako /dev/sda1. Skvělá zpráva - rozhraní USB host funguje!
Připojený USB flash disk sice funguje, ale ještě na něj nemůžeme přistupovat, protože souborový systém na USB disku není připojený do kořenového adresáře Linuxu. To změníme snadno - připojíme si oddíl USB disku /dev/sda1 do adresáře /media/usb:
# mount /dev/sda1 /media/usb
Pokud systém nenahlásil žádnou chybu, tak je vše v pořádku a obsah USB disku je dostupný v adresáři /media/usb. Pozornější čtenáři se možná zarazí a namítnou, že jsme příkazu mount nepředali typ souborového systému na USB flash disku. U běžných souborových systémů to nevadí - příkaz mount se souborový systém připojovaného zařízení pokusí určit sám.
Poznámka: Adresář /media/usb musí existovat. V připravené linuxové distribuci, nahrané na modulu SAM9260 z výroby, tomu tak je.
Když budeme chtít USB flash disk vytáhnout, je třeba jeho souborový systém odpojit. Jinak hrozí poškození dat na USB disku. To zařídíme příkazem:
# umount /dev/sda1
Další hrátky s rozhraním USB host budou následovat.