USB technikai
leírás
Mikor az Universal Serial Bus (USB) eszközt csatlakozatjuk vagy leválasztjuk az USB hots-ról, egy előre beállított esemény generálódik. Az USB Specifikáció, Rev. 1.0, megmagyarázza ezen eseményeket, parancsokat és a követelményeket az USB eszközökkel és az USB host-tal szemben. A célom ezzel a cikkel, hogy megvilágítsam az USB Specifikáció kapcsolatát ezekkel az eseményekkel.
Az Intel 8x930 USB mikrokontroller használja ezt a szemléletet a megvalósítást és a programozási modellt.
Bevezetés
A megnövelt követelmény a számítástechnikában és az automatizálásban szükségessé tette az Universal Serial Bus kifejlesztését, ez egy rugalmassággal rendelkező technológia és könnyű a használata.
Az USB kommunikációs protokoll soros átvitelt tesz lehetővé, az USB gazdagép és az USB csatlakozó közötti kapcsolatot biztosítja.
A gazda nyújtja a szolgáltatást az USB sínen. A soros adatátvitelnek két módja van: teljes sebesség módban az átviteli sebesség 12Mbs, és alacsony sebességű módnál az adatátvitel 1.5 Mbs. A szolgák csatlakoztatása azonnal megtörténik a gazdákon vagy hub-okon keresztül, sorba csillag topológia szerint, a gazda a csillag topológia közepén helyezkedik el.
USB címzések kiosztása hasonló, mint összekapcsolhatóság a PC felé, könnyű használat, rugalmasság és alacsony költség magvalósításával. Ez összeadódik a “plug and play” tulajdonsággal, amelyik egy erős ok az USB mögött. USB-vel, a felhasználók tudják csatlakoztatni vagy lekapcsolni a perifériát anélkül, hogy újra kellene konfigurálni a rendszert, vagy újra csatlakoztatni a gép kikapcsolása nélkül.
Az újra csatlakozatáskor a rendszer automatikusan felismeri az eszközt, és automatikusan betölti a meghajtóprogramot.
Az USB gazda (Host)
USB gazdák a PC-k körül épülnek fel: az USB-t fogadni képes alaplapok és felszerelt USB program struktúra. Az alaplapon, az USB Serial Interface Engine (Soros Csatlakozó Eszköz) modul bejegyzett, mint alkatrész az USB gazdavezérlőbe. Az Intel megvalósította az USB funkcionalitást, mint alkotórészét a PCI chip készletnek. A program struktúra szétválasztható három rétegre:
~Ez csak egy USB gazdás USB rendszerben van így. Használt USB hardver és program struktúrákat a gazda működteti, mint elsődleges eszköz a sínen.
Nyugtázza a csatlakoztatott és eltávolított maghajtókat és kezdeményezi a felsorolási folyamatot és összegyűjti az éppen működő eszközök adatait.
Ha lecsatlakoztatunk egy eszközt, akkor az egy nyugta jelet generál, ami arra hívatott, hogy felderítse a még üzemben lévő eszközöket és megbízhatóan összegyűjtse az éppen üzemelőket, ezen kívül ellenőrzi az elektronikus kapcsolatokat is. Ezekről az eszközökről egy listát készít és természetesen ezt az USB vezérlő tárolja is. A nyugtajel körbefutása alatt semmilyen adatforgalom nem mehet.
Az USB kábel
Az USB kábel négy vezetékből áll. Két vezeték (D+ és D-), használja az adatátvitelre és a nyugta jel körbeküldésére. A másik kettő vezetéken a perifériához megy a feszültség (power—Vbus) és a földvezeték (ground—Gnd). Alacsony költségű, nem zavarvédett kábel esetén a maximális átvitel csak 1.5 Mbs, ez megfelel az alacsony sebességű USB átvitelnek. Zavarvédett (árnyékolt) kábel esetén a sebesség 12 Mbs, ami a teljes sebességű USB átvitelnek felel meg.
USB kábelen az A típusú csatlakozó felé megy a jel (az USB gazda felé), a B típusú csatlakozó felöl (a periféria csatlakozó). Sorrendben kiküszöböli a vevő a zavarokat és ezért nem megengedett az A és B típusú csatlakozók megcserélése. Az USB specifikáció gondoskodik a mechanikai védelemről (az A és a B típusú csatlakozókat fizikailag sem lehet megcserélni) mindkét csatlakozónál.
Az összes B típusú csatlakozókon lévő ellenállásokat lehúzhatjuk mindkét vezetékről, a D+ és D- vezetékről. Teljes sebességű eszköznél az ellenállást a D+ vezetékre kell rakni, az alacsony sebességű eszköznél pedig a D- vezetékre. Ez az ellenállás az oka, hogy különböző feszültség szintek fordulnak elő a D+ és D- vonal között. Ez a megvalósítás a gazda irányába jelentést csatol, és a gazda eldönti, hogy milyen sebességgel csatlakozzon a periféria.
Az USB perifériák
USB perifériák (eszközök) két féle módon működhetnek az USB sínen: hub-ként (gazdaként) és üzemben lévő eszközként.
Tipikus esetben a gazda egyben repeater (ismétlő) is lehet. Egyes gazda átalakítja az egyedüli csatlakozási pontot, azaz a bejövő jelet egyszerre több csatlakozóba továbbítja. Egy példa: a gazdán 4 csatlakozó van, amire másik gazdát (hub-ot) és/vagy üzemelő eszközt (végeszközt) lehet csatlakoztatni.
A végeszközök lehetnek: egér, billentyűzet, joystick, kamera, stb. Gazdák lehetnek monitorok vagy billentyűzetek.
Általában az USB eszközök három részből állnak:
A végpont a legtávolabbi forrás vagy elmenő adat az USB perifériába. A megvalósítási szint törődik a lokális memória beállításával, amelyik adatot tud írni vagy olvasni.
Az USB protokoll
Az USB gazda a sínen 1 másodpercenként küld egy start of frame (SOF) csomagot. A rendelkezésre álló sín sávszélessége megosztott az egyidejűleg csatlakoztatott eszközök között. Minden eszköz 1 másodpercig “beszélhet”. Általánosságban az USB műveletek három csomagból állnak: a vezérjel csomagból, adatcsomagból és a handshake (párbeszéd elektronikus eszközök között) csomagból.
A csomagok felépítése
Mindegyik csomagban található egy Packet ID (PID), ami a csomagok azonosítására szolgál, vagy ha csak a PID van a sínen, akkor az a “kézfogást” jelenti. A művelet indítása az, amikor a gazdavezérlő vezérjel csomaggal küldi az eszköz címét és a végpont számát, a közvetlen adat átvitelt és a logikai vezérlő csatorna típusát. A megcímzett eszköz maga kiválasztja és dekódolja a címét a vezérjelből. Ha a címzés mező a vezérjelen jelez, akkor a gazda kéri az adatot. Amikor az eszköz válaszol az adatcsomaggal, a gazda az adatcsomagot veszi. Általában adatfogadás után a gazda vagy az eszköz egy “kézfogás” csomagot küld. A “kézfogás” csomag lehet ACK, NAK vagy STALL.
Az USB adatátviteli kategóriái
Az adat csere a gazda program között és az eszköz végpont között valósul meg. Információ áram folyhat mindkét irányban vagy csak egy irányban. A gazda kezdeményezi az adatátvitelt, és adatcserét biztosít mindkét végpont között.
Négy típust támogat az USB: vezérlés, megszakítás, izokrón és terjedelem.
Csatlakozási művelet
Az eszköz csatlakoztatása után a gazdavezérlő figyelmeztet és kiválasztja a feszültségvonalat. A gazda bejegyzi a portválasztást. Az eszköz ellenőrzi a csatlakozási állapotot és a gazda felfüggesztett módba kerül, amíg az eszköz nem csatlakozik. Egyszer a gazda ellenőrzi, hogy az eszköz csatlakozott-e a meghatározott portra, ha igen, akkor a portot engedélyezi. A gazda ezek után kibocsát egy alaphelyzet beállító jelet, amit 10 ms-ig tart fent. A 10 ms lejárta után veszi csak figyelembe az engedélyezett portot. Az eszköz nem mindig tudja a rendelkezésre álló időben az alaphelyzetbe állítást megtenni. Erre a problémára folyamatosan keresik a megoldást, az Intel 8x930 USB mikrokontroller megvalósítja az osztott alapbeállítást. Ez a tulajdonság megengedi a mikrokontrollernek, hogy folytassa a kód ismétlését, addig amíg az USB eszköz nem kerül alaphelyzetbe és nem válaszol. Az alapbeállítás előtt a gazda gondoskodik az eszköz vagy hub áramellátásáról, 100 mA energiát kapcsol a Vbus/Gnd vonalra. Lehetnek olyan eszközök, amelyek nem igénylik az energiaellátást a csatlakozóról.
Felsorolás folyamata
A csatlakozó eszköz kér egy csatlakozási címet és ehhez a címhez hozzárendeli a gazda a csatlakozási értéket.
A folyamat négy lépése:
A felsorolási folyamat végén az eszköz be van konfigurálva, készen áll az USB adatátvitelre és a tranzakciók fogadására. Amikor a gazda begyűjtötte és felsorolta az eszköz információkat átadja a gazda rendszerprogramjának. A rendszerprogram mindegyik felismert eszköz vezérlőprogramját telepíti, ha a rendszerben nincs telepítve a vezérlőprogram, akkor egy felszólítás jelenik meg, hogy tegyük be az eszköz telepítőlemezét.
Leválasztás művelete
Azonnal az eszköz leválasztása után a gazda letiltja a portot. Az USB rendszerprogram (ami része az operációs rendszernek) nyugtázza az eszköz lecsatlakoztatását és felszabadítja azokat az erőforrásokat, amiket az eszköz használt. A eszköz leválasztása után éppen az eszközt használó program nem záródik be. Például, ha egy telefon van a rendszeren és lecsatlakozatjuk a gazdáról, akkor a tárcsázó program nem fog bezáródni.
Programozási modell, amit az i8x930 használ
A 8x930 USB mikrokontroller részei: 8 bites mikrokontroller, a chip-ben lévő memória. Mindegyik végponthoz tartozik egy FIFO adatfogadó puffer. Függ az alkalmazás és az adatátvitel típusától, a felhasználó választani tud a különbözően beállított FIFO méretek közül. Átveszi a FIFO az írást, ami a CPU felé történik.
Működés közben közvetlenül használja a Special Function Registers (SFRs) (Speciális Funkciójú Regiszterek-et).
USB gyakorlati tapasztalatok
Plug and Play tökéletes formában – legalábbis azt ígérték az új csatlakozási szabvány, az USB (Universal Serial Bus) fejlesztői. Ez azonban még csak ígéret...
Majdnem három éve jelen vannak már USB eszközök a nemzetközi vásárokon. Újra és újra hallhattunk a közleményekben: “Végre elkészültek és használhatók az új eszközök!” De aztán mindig kiderült: alapvetően nem történt semmi. Csak a Windows 98 bevezetése óta sietnek a hardvergyártók piacra dobni USB termékeket, habár ezt már a Windows 95-höz is megtehették volna. (Windows 95 csak akkor ismeri fel az USB-t, ha külön telepítve van rá az USB támogatás. Ezt a Windows 95 CD-n megtalálható vagy az Internetről le is tölthető.)
Az alábbiakban azt vizsgáltam, hogy a kereskedelemi forgalomban kapható készülékek valóban kielégítik-e a felfokozott várakozást. Több USB eszközzel szerzett tapasztalataimat adom közre, de előtte nézzük meg, hogy mi is a gyakorlatban az-az USB…
Mi az USB?
Az USB az Universal Serial Bus – univerzális soros busz – rövidítése. A közepes sebességű perifériák asztali PC-kre és noteszgépekre történő csatlakoztatására szolgál.
Egy USB eszközt csak kábele vagy csatlakozója alapján lehet megkülönböztetni a hagyományos termékektől. Természetesen a belső felépítésük teljesen más. Az USB kábel nem csak adatokat szállít a készülékhez, hanem áramot is. Így fölöslegessé válik a hálózati kábel. Ez alól csak azok az eszközök kivételek, melyek 500 mA-nél több áramot igényelnek, mert ezek az USB kábelben alkalmazott megoldással már túlterhelnék a gép tápegységét. Az USB 1 bites bitsoros átvitelt tesz lehetővé multiplexszereken keresztül.
USB használatakor magából a PC-ből csak egy-két kábel indul ki (ez abban az esetben van így, ha minden lehetséges eszköz USB csatlakozóval rendelkezik), mivel a kiegészítő eszközökhöz szükséges interface-ek az USB eszközökön, a monitoron vagy billentyűzeten is megtalálhatók. Az ilyen illesztő-helyekkel rendelkező eszközöket hub-nak nevezzük. A hub növeli az USB teljesítményét, frissíti és továbbítja a digitális jeleket. Az USB eszközök tehát láncba fűzhetők, így rendet vághatunk a kábeldzsungelben.
A maximálisan öt méter hosszú kábelen vagy buszon folyó adatátvitel elérheti a 12Mbit/s-ot. Az USB különlegessége, hogy lehetővé teszi az úgynevezett hot plug-int, azaz az eszközök csatlakoztatását vagy leválasztását a programok futása közben.
Előnyök
Hátrányok
Követelmények az USB eszközökhöz
Hardver
Gépünk alaplapjának rendelkezni kell egy USB vezérlővel és megfelelő illesztő-helyekkel. Az alaplapra utólag is szerelhető USB illesztő-hely. Azonban célszerű az alaplapgyártótól rendelni az illesztőt és a csatlakozót, ugyanis ezek mindig alaplap-specifikusak.
Operációs rendszer
Egyenlőre csak a Windows 95 és a Windows 98 támogatja az USB-t. Ahhoz, hogy a Windows 95 hozzáférhessen az USB porthoz és a perifériákhoz, először egy driver-programot kell telepíteni. Erre szolgál a Microsoft USB-Supplementje, mely csak a Windows 95 B verziójától kezdve telepíthető. Először is állapítsuk meg, hogy melyik verziót használjuk. Ehhez kattintsunk a jobb egérgombbal a My Computer ikonra, és az ennek hatására megjelenő System Properties ablak General fülét választva a regiszterkártyában láthatjuk a pontos verziószámot. Csak akkor telepíthetők az USB-Supplement driverei, ha itt a 4.00.950B verziószámot látjuk. A 4.00.950 verzió tulajdonosainak azonban át kell állniuk Windows 98-ra. A driver-programokat tartalmazó Supplement a Windows 95 2.1 CD-jén található az /OTHER/USB rendezőben. A Device Manager fülre kattintva ellenőrizhetjük, hogy az USB driver már a gépünkön van-e. A telepítés után a listában megjelenik a PCI to USB universal Host Controller és az USB Root-Hub sor.
Eszközkezelő
Ha USB eszközöket szeretnénk csatlakoztatni, akkor előzőleg ellenőrizzük, hogy nincs-e hiba a rendszerben.
Lépjünk be a System -> System Properties -> Device Managerbe (Rendszervezérlő -> Rendszer -> Eszközkezelő). Ha a felsorolt eszközökben és csatlakozásokban egy piros vagy sárga kör és egy felkiáltójel látható, az a hiányos telepítésre vagy hibás működésre utal. Ismételjük meg a telepítést az USB-s eszköz csatlakoztatása előtt, mert különben hibajelzéseket kapunk.
USB eszközök Windows 95 alatt
Néhány gyártó nem tartja szükségesnek, hogy a vásárlónak a kezelési útmutatóban vagy a csomagolásban jelezze, hogy melyik Windows-verzióval használható az eszköz. Ennek következtében a vevő abból indul ki, hogy szerzeményét Windows 95-tel és 98-cal egyaránt használhatja. Pedig ez nem mindig van így, amit a Charry billentyűzet, a TrustMaster joystick és a Genius egér is bizonyít: ezeket ugyanis Windows 95 alatt nem lehetett üzembe helyezni. Bár a BIOS probléma nélkül felismerte a billentyűzetet, a driver-program hiába nem működött Windows 95 alatt.
Az Adi 19 color USB-s monitora egyik operációs rendszer alatt sem akart hubként dolgozni. A rendszer ugyan felismerte, de a rákapcsolt eszközöket nem lehetett elindítani.
USB eszközök Windows 98 alatt
Windows 98 alatt csak a Kodak videokamera és az Adi monitor hagyott cserben. A rendszer automatikusan felismeri a kamerát, és kér egy driverfrissítést, amely a mellékelt CD-ről telepíthető. Ezután azonban megjelent a Can not connect to camera üzenet, magyarán: nincs kép.
Az Adi monitor a Windows 98 a 95-höz hasonlóan Generic hubként ismeri fel, de az új operációs rendszer alatt sem lehet további eszközöket hozzákapcsolni.
A hot plug-in
Próbára tettem a készülékeket, hogy egymáshoz kapcsolva üzemelnek-e, szét- és újra összekapcsolhatók-e működés közben (hot plug-in) anélkül, hogy ez a rendszerben és a többi perifériában zavart okozna?
Először Windows 95 alatt fűztem össze őket. Hubnak az Eizo monitort választottam, mivel ez minden gond nélkül működött mindkét operációs rendszer alatt. A tesztelt berendezések Windows 95 alatt helytálltak ebben a vizsgában. Windows 98 alatt ugyanez az eredmény született: ott az Eizo monitor és a Cherry billentyűzet töltötte be a hub szerepét, hozzájuk kapcsolódott a Logitech PageScan scanner, a Genius egér, a ThrustMaster Top Gun joystick, valamint az AVM ISDN-adapter. A programfutás közbeni szét- és összekapcsolás semmit nem változott az USB-részek működése. Az USB csatlakozó és a hub minden egyes összekapcsolódáskor megjelent a monitoron az ismeretlen eszközre utaló jelzés, amit azonnal követett az eszköz automatikus rendszerbe illesztése.
Összegzés
Szinte minden hardvergyártó megígérte, hogy 1998 végéig piacra dob USB eszközöket. Hát ez az ígéret egy kicsit elhamarkodott volt…
Ha még Windows 95-öt használjuk, vásárláskor mindenképpen kérdezzük meg, hogy az eszköz működik-e Windows 95 alatt?
Az USB érezhetően
megkönnyíti a telepítést. Nem kétséges, hogy óriási
előrelépés. Előnyei azonban csak a telepítésre és a
számtalan plusz illesztőhelyre korlátozódnak, az eszközök
kezelésére nem. A nyomtató, a scanner vagy az ISDN adaper
használata ettől még nem lett egyszerűbb – amit sajnos
sokan elfelejtenek az USB okozta eufóriában.