ýESKÉ VYSOKÉ UýENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická
BAKALÁěSKÁ PRÁCE
Praha 2008
Kopecký PĜemysl
ýESKÉ VYSOKÉ UýENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra mČĜení
Záznamník þíslicových dat s rozhraním USB 2.0
Ing. JiĜí Novák, Ph.D
Kopecký PĜemysl
Praha 2008
Prohlášení Prohlašuji, že jsem svou bakaláĜskou práci vypracoval samostatnČ a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v pĜiloženém seznamu. Nemám závažný dĤvod proti užití tohoto školního díla ve smyslu § 60 Zákona þ.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zmČnČ nČkterých zákonĤ (autorský zákon).
V Praze dne ……………………….
…………………………………. podpis
PodČkování DČkuji Ing. JiĜímu Novákovi za þas a trpČlivost pĜi vedení mé práce.
---VLOŽIT ZADÁNÍ BAKALÁěSKÉ PRÁCE--(originál nebo kopie)
Anotace Tato práce je souþástí projektu zamČĜeného na implementaci vysokorychlostního rozhraní JTAG pĜipojitelného k poþítaþi prostĜednictvím sbČrnice USB 2.0 verze highspeed. Konkrétním cílem je seznámit se s principy komunikace pĜes sbČrnici USB, navrhnout
a
realizovat
hardware
s
odpovídajícím
USB
Ĝadiþem
Ĝízeným
mikroprocesorem. Dále navrhnout konfiguraci tohoto modulu tak, aby umožĖoval bezchybný pĜenos dat s využitím vysoké rychlosti datového pĜenosu, podporované tímto rozhranním, pro záznam þíslicových dat.
Annotation This work is part of the project, which is aimed at implementation of JTAG highspeed interface attachable to the computer by high-speed version of Universal Serial Bus 2.0. Concrete aim is to take knowledge about communication through the Universal Serial Bus, design and create hardware with USB controller controlled by microprocessor. The second part is to suggest a solution for this module to achieve high-speed and errorless data transfer designed for data storage.
Obsah Obsah..................................................................................................................... 1 Seznam obrázkĤ .................................................................................................... 2 Seznam tabulek ..................................................................................................... 2 1. Úvod ............................................................................................................... 3 2. Hardware ........................................................................................................ 4 2.1
Blokové schéma .........................................................................................................4
2.2
Specifikace souþástek................................................................................................5
2.3
Návrh obvodového schématu...................................................................................7
2.4
Návrh tištČného spoje ...............................................................................................8
2.5
Zhotovení hardwaru .................................................................................................9
3. Software........................................................................................................ 10 3.1
Standard USB 2.0....................................................................................................10
3.2
Konfiguraþní model Ĝadiþe ....................................................................................13
3.3
Inicializace Ĝadiþe ...................................................................................................14
3.4
Proces enumerace ...................................................................................................16
3.5
PĜenos dat ................................................................................................................21
3.6
Vývojové prostĜedí..................................................................................................25
4. ZávČr............................................................................................................. 26 4.1
Dosažené výsledky...................................................................................................26
PĜíloha A ............................................................................................................. 28 PĜíloha B.............................................................................................................. 31
-1-
Seznam obrázkĤ Obr. 1.1 Blokové schéma modulu................................................................................... 3 Obr. 2.1 Blokové schéma modulu s USB Ĝadiþem ......................................................... 4 Obr. 2.2 Blokové schéma Ĝadiþe [3] ............................................................................... 5 Obr. 2.3 USB device ....................................................................................................... 5 Obr. 2.4 ARM7 kit .......................................................................................................... 6 Obr. 2.5 Schéma obvodu navržené v OrCAD Capture................................................... 7 Obr. 2.6 Osazovací schéma, vrstva TOP Obr. 2.7 Osazovací schéma, vrstva BOTTOM ....................................................... 8 Obr. 2.8 Osazený obvod – TOP ...................................................................................... 9 Obr. 2.9 Osazený obvod – BOTTOM............................................................................. 9 Obr. 3.1 Schéma datového pĜenosu .............................................................................. 12 Obr. 3.2 Inicializace registrĤ [3]
Obr. 3.3 Model konfigurace Ĝadiþe [3] .............. 13
Obr. 3.4 Struktura Mode registru [3] ............................................................................ 14 Obr. 3.5 EMI - adresovatelný prostor ........................................................................... 15 Obr. 3.6 Stavový diagram [1] ....................................................................................... 16 Obr. 3.7 Datový tok hostitel – zaĜízení [6] ................................................................... 21 Obr. 3.8 Zapojení vývojových nástrojĤ ........................................................................ 25
Seznam tabulek Tab. 3.1 Formát požadavkĤ........................................................................................... 17 Tab. 3.2 Standard device requests [1] ........................................................................... 18 Tab. 3.3 Typy deskriptorĤ [1] ....................................................................................... 19 Tab. 3.4 Konfiguraþní deskriptor .................................................................................. 20 Tab. 3.5 Limity pro full-speed hromadné pĜenosy........................................................ 23 Tab. 3.6 Limity pro high-speed hromadné pĜenosy ...................................................... 23
-2-
1. Úvod Má práce je souþástí projektu zamČĜeného na implementaci vysokorychlostního rozhraní JTAG pĜipojitelného k poþítaþi prostĜednictvím sbČrnice USB 2.0 verze highspeed. Cílem je dosáhnout zkrácení þasĤ produkþního programování programovatelných souþástek. Princip funkce modulu je znázornČn na blokovém schématu (obr. 1.1). V rámci mé BakaláĜské práce se jedná o návrh a realizaci hardwaru obsahující odpovídající USB Ĝadiþ, Ĝízený mikroprocesorem a následnou programovou implementaci komunikace pĜes sbČrnici USB 2.0, zajišĢující pĜenos dat na high-speed úrovni, jež dle standardu [1] umožĖuje pĜenosovou rychlost až 480 Mb/s. Navrhované Ĝešení nabízí dostateþnou rychlost a propustnost pĜenosu dat bez nutnosti implementace lokální vyrovnávací pamČti.
Obr. 1.1 Blokové schéma modulu
-3-
2. Hardware 2.1 Blokové schéma PĜi realizaci obvodu bylo nejprve tĜeba analyzovat nároky na toto zapojení. Primárním požadavkem je Ĝadiþ umožĖující komunikaci pĜes rozhraní USB 2.0 highspeed, v ideálním pĜípadČ integrovaný pĜímo v mikroprocesoru. Souþasná nabídka výrobcĤ však umožĖuje Ĝešení pouze s Ĝadiþem USB verze Full-speed. Rychlost 12 Mb/s je však vzhledem ke snaze dosáhnout vysoké pĜenosové rychlosti nedostaþující. Dalším Ĝešením by mohl být þip od FTDI s již nakonfigurovaným USB Ĝadiþem, jehož nevýhodou je však omezená uživatelská konfigurovatelnost. Vybral jsem tedy Ĝadiþ firmy NXP s oznaþením ISP1582 v kombinaci s mikroprocesorem STR710 s externí sbČrnicí a jádrem s 32 bitovým RISC procesorem typu ARM7 firmy STMicroelectronics. Vybraný procesor využiji pro správnou inicializaci a obsluhu Ĝadiþe. Pro další aplikace lze využít funkci Ĝadiþe, podporující DMA pĜenos, tedy bez pĜímé úþasti procesoru. Po nastudování USB specifikace [1] bylo dále tĜeba zajistit všechny prostĜedky pro správnou funkci tohoto rozhraní. Jedná se tedy o USB konektor a vhodný napČĢový regulátor, zajišĢující pĜevod 5 V napájení dodávaného z USB sbČrnice na napájení 3.3 V, potĜebného pro napájení Ĝadiþe. Obvod bude umožĖovat pĜepnutí zdroje napájení buć z USB sbČrnice nebo z externího zdroje, konkrétnČ obvodu s mikroprocesorem. Z blokového schématu (obr. 2.1) je patrné, jak jsou oba obvody propojeny a pomocí jakých signálĤ probíhá jejich vzájemná komunikace.
Obr. 2.1 Blokové schéma modulu s USB Ĝadiþem
-4-
2.2 Specifikace souþástek Požadované parametry na þip s Ĝadiþem splĖuje High-Speed Universal Serial Bus Peripheral Controller ISP 1582 od firmy NXP (Philips). Pro navrhované Ĝešení splĖuje veškeré požadavky a jeho výhodou je také dobrá dostupnost. Hlavní parametry ISP 1582 jsou: •
USB high-speed controller umožĖující pĜenos dat rychlostmi high-speed (480 Mbit/s) a full-speed (12 Mbit/s)
•
High-speed DMA interface
•
VBUS sensing
•
Integrovaná 8 kB konfigurovatelná FIFO pamČĢ
•
Low-power a power-down módy pro sbČrnicí napájená zaĜízení
•
8 bitová adresová sbČrnice a 16 bitová datová sbČrnice
VnitĜní zapojení Ĝadiþe je znázornČné v následujícím blokovém schématu (obr. 2.2).
Obr. 2.2 Blokové schéma Ĝadiþe [3]
Pro správnou funkci Ĝadiþe je tĜeba krystalový oscilátor s frekvencí 12 MHz s oznaþením HC18U V. Jako konektor urþený pro pĜipojení rozhraní USB jsem vybral USB konektor typ B (obr.2.3). Obr. 2.3 USB device
-5-
NapČĢový regulátor stabilizující 5 V napČtí z USB sbČrnice þi externího napájení na napČĢovou úroveĖ 3.3 V jsem vybral od firmy Texas Instruments, typ TPS7333. Regulátor také umožĖuje generování signálu RESET v pĜípadČ podpČtí. V pĜípadČ konektoru, sloužícího k propojení desky s mikroprocesorem, bylo tĜeba sjednotit vývody jednotlivých pinĤ se zapojením na desce s mikroprocesorem. Byl vybrán 50 pinový konektor. Signály DMA jsou vyvedeny na 20 pinový konektor. ěídicí mikroprocesor je souþástí na katedĜe již zhotoveného obvodu ARM7 kit (obr. 2.4). Mezi hlavní parametry procesoru patĜí tyto: •
jádro je tvoĜené 32 bitovým RISC procesorem typu ARM7TDMI
•
programovatelná 256 kB flash pamČĢ
•
datová 16 kB flash pamČĢ
•
až 64 kB RAM
•
48 I/O portĤ
•
10 komunikaþních rozhraní (mimo jiné USB 1.1 podporující pouze full-speed)
•
externí pamČĢové rozhraní (EMI)
Pro programování procesoru se využívá programátoru pĜipojeného pĜes rozhraní JTAG, jenž je k tomuto úþelu urþeno.
Obr. 2.4 ARM7 kit
-6-
2.3 Návrh obvodového schématu PĜi návrhu a výrobČ hardwaru jsem tedy využil již zhotovené desky s procesorem a vČnoval se návrhu desky s USB Ĝadiþem. Návrh schématu jsem provedl v programu OrCAD Capture. Pro návrh bylo tĜeba dodržovat urþité zásady a postupy, se kterými jsem do té doby nemČl zkušenosti. Nastudoval jsem proto publikaci Vít Záhlava OrCAD 10 [2]
a využil konzultací ve škole. Výsledný návrh schématu je na
obrázku (obr. 2.5). Zda je Ĝadiþ napájen z USB sbČrnice þi z externího obvodu, indikuje dvojice LED diod. TĜetí, þervená dioda, signalizuje, pokud Ĝadiþ pĜejde do stavu snížené spotĜeby, který nastane napĜíklad, pokud není po urþitou periodu registrována aktivita na sbČrnici.
Obr. 2.5 Schéma obvodu navržené v OrCAD Capture
-7-
2.4 Návrh tištČného spoje Pro návrh tištČného spoje bylo opČt nejprve nutné, seznámit se s programem OrCAD Layout a osvojit si jeho funkce. Po vygenerování Netlistu souþástek v OrCAD Capture je tĜeba souþástky uspoĜádat a pĜiĜadit jim pĜíslušná pouzdra. VČtšina pouzder jednotlivých souþástek byla dostupná v databázi programu. Pouzdro Ĝadiþe ISP 1582 v databázi dostupné nebylo. Podle rozmČrĤ udávaných výrobcem [3] jsem navrhl vlastní pouzdro souþástky. Jedná se o pouzdro typu HVQFN (Heatsink Very-thin Quad Flat-pack No-leads) [3], þítající 56 pinĤ. TištČný spoj je realizovaný ve dvou vrstvách. ObČ vrstvy jsou vidČt na osazovacím schématu (obr. 2.6, obr. 2.7). RozmČry desky jsou 8 × 5,7 cm. PĜi rozmisĢování souþástek bylo tĜeba dbát na vhodné logické uspoĜádání, které však neovlivní negativnČ funkþnost obvodu. NapĜíklad aby byly pĜíslušné souþástky správnČ uzemnČny, vhodnČ umístČny blokovací kondenzátory atd.. Z tohoto návrhu byly následnČ vygenerovány informace o jednotlivých vrstvách, souþástkách a rozmČrech nezbytné pro výrobu. Výroba tištČného spoje má také své limitující hodnoty, jako je napĜíklad minimální šíĜka spojĤ, jejich vzájemná vzdálenost, vzdálenost souþástky od okraje a pod..
Obr. 2.6 Osazovací schéma, vrstva TOP
Obr. 2.7 Osazovací schéma, vrstva BOTTOM
-8-
2.5 Zhotovení hardwaru Odeslání návrhu tištČného spoje zajistil vedoucí mé práce. Než byl tištČný spoj vyroben, pĜipravil jsem si potĜebné souþástky a následnČ jimi vyrobený obvod osadil pod odborným dohledem. Seznámil jsem se s metodou pájení horkým vzduchem, kterou bylo velmi vhodné použít pro letování þipu s Ĝadiþem, jelikož jeho piny jsou umístČny na spodní stranČ pouzdra bez jakéhokoliv vnČjšího pĜesahu. Výsledný osazený obvod je na obrázcích (obr. 2.8 a obr. 2.9).
Obr. 2.8 Osazený obvod – TOP
Obr. 2.9 Osazený obvod – BOTTOM
-9-
3. Software 3.1 Standard USB 2.0 Pro správnou inicializaci a obsluhu Ĝadiþe v režimu zaĜízení bylo nejprve potĜeba podrobnČ nastudovat specifikaci pro standard USB 2.0 [1]. Universal Serial Bus (USB) je sériová sbČrnice urþená pro pĜenos dat na kratší vzdálenosti. SbČrnice se skládá ze þtyĜ vodiþĤ, GND, D+, D- a VCC (5 V). Data se pĜenášejí po vodiþích D+ a DdiferenþnČ. USB verze 1.1 podporuje maximální pĜenosovou rychlost 12 Mb/s, USB verze 2.0 rychlost 480 Mb/s, pĜiþemž obČ verze jsou zpČtnČ kompatibilní. Verze 2.0 proto musí podporovat všechny 3 módy pĜenosových rychlostí: •
High-speed 480 Mb/s
•
Full-speed 12 Mb/s
•
Low-speed 1,5 Mb/s
SbČrnice propojuje porty kontrolérĤ, které mohou pracovat v režimu hostitel nebo zaĜízení. Všechna zaĜízení jsou pĜipojena k portĤm a porty jsou pĜipojeny k USB hubĤm. Pomocí hubĤ se sbČrnice vČtví. Celá sbČrnice má tedy stromovou strukturu. Funkce USB Ĝadiþe v módu hostitel 1. Detekce pĜipojených zaĜízení. 2. ěízení toku dat. 3. Detekce a obsluha chyb. 4. Poskytnutí napájení. 5. VýmČna dat mezi host kontrolérem a zaĜízeními. Funkce USB Ĝadiþe v módu zaĜízení 1. Rozeznávání paketĤ na sbČrnici. 2. Podpora základních pĜíchozích požadavkĤ. 3. Kontrola chyb. 4. VýmČna dat s kontrolérem hostitele. ěadiþ obvodu ISP 1582 bude ve své funkci pracovat v módu zaĜízení. ěadiþ rozdČluje požadavky do segmentĤ – rámce a mikrorámce (125 ȝs pĜi 480 Mb/s a 1 ms pro 12 Mb/s). Požadavky a pakety jím rozpoznané budou pĜedány Ĝídicímu procesoru, jehož obslužné rutiny požadavky a pakety zpracují.
- 10 -
Po pĜipojení zaĜízení probČhne nejdĜíve tzv. enumerace a následnČ vlastní datový pĜenos. Základem enumerace a další komunikace jsou tzv. deskriptory. Ty nesou informace o parametrech zaĜízení a podporovaných datových pĜenosech. Jsou to datové struktury, které mají definovanou velikost a obsah. Jsou souþástí Ĝadiþe zaĜízení a Ĝadiþ hostitele o nČ musí požádat. Zde jsou uvedeny základní typy deskriptorĤ: 1) Deskriptor zaĜízení - informace o typu zaĜízení a výrobci 2) Konfiguraþní deskriptor - možné konfigurace zaĜízení 3) Deskriptor rozhraní - výþet typĤ rozhraní podporované zaĜízením 4) Endpoint deskriptor - adresa a charakteristika koncového bodu. 5) String deskriptor - volitelný deskriptor s textem. Každé zaĜízení má svou fyzickou adresu, která mu byla pĜidČlena hostitelem. To je však pro komunikaci na vyšších úrovních nedostaþující. Proto se pĜenos dat z hlediska ovládacího softwaru neprovádí na elementární úrovni, ale využívají se virtuální datové cesty mezi koncovými body (endpoints) zaĜízení a jeho ovládacím softwarem. Endpoint je definován jako jednoznaþnČ identifikovatelná þást USB zaĜízení, která stojí na konci toku dat mezi zaĜízením a hostitelem. Endpointy a jejich vlastnosti jsou dány z výroby architekturou zaĜízení. DČlí se na vstupní a výstupní, a oznaþují se þísly 0-15. Každý koncový bod je jedineþný vzhledem ke smČru toku dat a svému þíslu. Celkem tak zaĜízení mĤže mít nejvýše 16 vstupních a 16 výstupních endpointĤ. Propojení dvou endpointĤ vytvoĜí virtuální komunikaþní kanál, tzv. rouru (pipe). Endpoint 0 je obousmČrný a musí být implementován v každém zaĜízení. PĜes nČj se zajišĢuje poþáteþní komunikace, kdy zaĜízení ještČ nemá pĜidČlenu adresu. Endpoint 0 podporuje pouze Ĝídicí typ pĜenosu dat. Virtuální komunikaþní kanály roury podporují rĤzné typy datových pĜenosĤ. Jsou specifikovány þtyĜi základní typy: a) Ĝídicí (configure) – pro nastavení zaĜízení nebo zjištČní jeho stavu b) blokové (bulk) – pro pĜenos vČtších objemĤ dat c) pĜerušovací (interrupt) – pro asynchronní pĜenos dat d) izochronní (isochronous) – pro pĜenos dat od zaĜízení v reálném þase
- 11 -
Každý pĜenos se mĤže skládat z více transakcí a ty z nČkolika paketĤ (obr. 3.1). Typická transakce se skládá ze tĜí paketĤ: -
Token Packet - identifikuje cílové zaĜízení
-
Data Packet - obsahuje pĜenášená data
-
Handshake Packet - potvrzuje pĜenesení dat
Obr. 3.1 Schéma datového pĜenosu
Komunikaci zahajuje kontrolér USB hostitele vysláním Token paketu. Pomocí PID (Packet Identifier) se specifikuje typ transakce (Setup, IN, OUT, Start of Frame). MĤže následovat Data paket, kterým zaĜízení nebo hostitel mĤžou pĜenést libovolná data. V koneþné fázi pĜenosu pošle zaĜízení nebo hostitel informace o stavu v handshake paketu. Mohou nastat þtyĜi pĜípady stavu pĜenosu specifikované v handshake paketu: ACK – pĜíjemce pĜijal paket bez chyb NAK – nelze odeslat/pĜijmou data, nebo není nic k odeslání STALL – požadavek není podporován (slouží též k synchronizaci) NYET – u high-speed pĜenosĤ, zaĜízení pĜijalo data bez chyb, není však pĜipraveno pĜijmout další
- 12 -
3.2 Konfiguraþní model Ĝadiþe ěadiþ je vždy tĜeba pĜed samotnou komunikací pĜes USB sbČrnici nakonfigurovat. K tomu slouží nastavení pĜíslušných registrĤ Ĝadiþe. Toto nastavení registrĤ je obvykle souþástí tzv. Inicializaþní rutiny. Jak a jaké registry budou nastaveny rozhoduje o tom, v jakých módech bude Ĝadiþ pracovat, o zpĤsobech pĜerušení, délce pĜenášených paketĤ, nastavení typu jednotlivých endpointĤ a pĜedurþuje, jakou funkci bude Ĝadiþ plnit. Proces inicializace je znázornČn na schématu (obr. 3.2). ěadiþ je univerzální a mĤže být nakonfigurován do rozdílných módĤ dle potĜeb dané aplikace. Výrobce uvádí hlavní dva módy, jimiž jsou GDMA pro pĜímý pĜístup do pamČti nebo tzv. Mass storage, urþený pro velkokapacitní pamČĢová zaĜízení. Pro pĜedstavu uvádím model, pĜedstavující postup pĜi programování firmwaru Ĝadiþe (obr. 3.3). Po inicializaci následuje proces enumerace, kdy si hostitel vyžádá popis zaĜízení, jeho verzi a dostupné konfigurace a pĜiĜadí mu jedineþnou adresu. Pokud probČhne i enumerace v poĜádku a hostitel disponuje pĜíslušným ovladaþem pro nalezené zaĜízení, následuje fáze samotného procesu dat.
Obr. 3.2 Inicializace registrĤ [3]
Obr. 3.3 Model konfigurace Ĝadiþe [3]
- 13 -
3.3 Inicializace Ĝadiþe PĜi tvorbČ softwaru jsem tedy zaþal právČ fází inicializace Ĝadiþe. Z dokumentace jsem nastudoval funkce jednotlivých registrĤ, nadefinoval jim pĜíslušnou adresu a pĜednastavil hodnoty, jež v prĤbČhu inicializace nastaví registry na potĜebou hodnotu. Na ukázku uvádím význam jednotlivých bitĤ prvního z registrĤ jež je tĜeba pĜi inicializaci nastavit. Je jím Mode registr, jehož adresa je 0Ch (obr. 3.4).
Obr. 3.4 Struktura Mode registru [3]
Do registru je samozĜejmČ možno pĜistupovat i bČhem další þinnosti Ĝadiþe a modifikovat tak jeho chování, þi jen zjistit aktuální nastavení, napĜíklad vyþtením bitu VBUSSTAT, který slouží pouze pro þtení a jehož hodnota signalizuje, zda je zaĜízení pĜipojeno k hostiteli þi nikoliv. PĜi prvotní inicializaci jsem povolil globální pĜerušení (bit GLINTENA), což zajistí, že Ĝadiþ bude generovat pĜerušení pro Ĝídicí mikroprocesor, pokud rozezná aktivitu na USB sbČrnici. Mikroprocesor STR710 umožĖuje detekci externích pĜerušení, pĜiþemž dokáže reagovat pouze na spádovou þi nábČžnou hranu. Nepodporuje tedy úrovĖovou detekci pĜerušení, což bylo nutno brát na vČdomí pĜi nastavení generování pĜerušovacího signálu Ĝadiþem v Interrupt Configuration registru. ěadiþ tedy bude signalizovat pĜerušení vygenerováním 60 ns pulsu. Hlavní funkcí USB Ĝadiþe je schopnost rozeznávat komunikaci na USB sbČrnici a interpretovat ji pro Ĝídicí mikroprocesor. Pro tento úþel je v Ĝadiþi výrobcem implementována funkce USB SIE (USB Serial Interface Engine). Tato funkce automaticky rozeznává a generuje typy jednotlivých paketĤ (PID), kontroluje kontrolní souþty, þi vyhodnocuje handshake pakety jako jsou ACK nebo NAK. PrávČ v pĜípadČ tČchto paketĤ USB SIE generuje pĜerušení. To, pĜi jakých událostech bude toto pĜerušení generováno, je dále nastaveno v Interrupt Enable registru. Jde napĜíklad
- 14 -
o reset sbČrnice (BUS RESET), pĜechod do stavu snížené spotĜeby (SUSPEND) a návrat z nČj do aktivního stavu (RESUME). DĤležitou událostí, kterou je nezbytné obsloužit, je také obdržení set-up paketu na endpoint 0. Každý endpoint lze samostatnČ nastavit jako zdroj pĜerušení. Jelikož modul zatím není pĜipraven pro použití pĜímého pĜístupu do pamČti DMA, nejsou pĜíslušné registry konfigurovány a nadefinování konkrétních endpointĤ je tedy posledním krokem inicializace. ObousmČrný Ĝídicí endpoint 0 není uživatelsky konfigurovatelný, jelikož jeho parametry jsou definovány pĜímo standardem [1]. Rozhodl jsem se použít dva endpointy (IN/OUT) pro blokový pĜenos dat, jehož maximální velikost paketu je maximální, jakou umožĖuje USB sbČrnice verze highspeed pro blokový pĜenos, tedy 512 bajtĤ. Pro verzi full-speed je tato hodnota 64 bajtĤ. Protože bude v prĤbČhu pĜenosu dat velmi pravdČpodobnČ tĜeba posílat rĤzné kontrolní a informaþní zprávy, je velmi vhodné nadefinovat dva endpointy (IN/OUT) pro pĜerušovací pĜenos. Tento typ pĜenosu je vhodné využít právČ v pĜípadČ, kdy je tĜeba poslat nebo pĜijmout data relativnČ zĜídka, ovšem vyžadují rychlé doruþení. Typy jednotlivých endpointĤ jsou nastaveny v registru Enpoint Type a jejich maximální velikost paketĤ v registru Endpoint MaxPacketSize. Pro zápis a þtení z registrĤ Ĝadiþe lze využít externí pamČĢové rozhraní (EMI) mikroprocesoru. Pomocí signálu Chip Select (CS) si lze v pamČti procesoru mapovat pamČĢový prostor vyhrazený pro komunikaci s USB Ĝadiþem. Procesor umožĖuje þtyĜi signály typu Chip Select. Aktivací kteréhokoliv z nich se v pamČti rezervuje pĜíslušný bank pamČti umožĖující adresovat pamČĢový prostor až 16 MB. Dohromady lze tedy mapovat
až 64 MB
externí
pamČti.
Rozložení
jednotlivých bankĤ s jejich adresami je na obrázku (obr. 3.5). V mém pĜípravku postaþí využít pouze jeden bank externího pamČĢového prostoru pamČti, konkrétnČ Bank 0 pomocí signálu CSn.0. V programu budu tedy pĜistupovat k jednotlivým registrĤm pĜiþtením adresy pĜíslušného registru k bázové adrese Banku 0 (60000000h). Jako pĜíklad uvádím þtení z Mode registru: c = *(u16*)(EXTMEM_BASE + rega_mode); Obr. 3.5 EMI - adresovatelný prostor
- 15 -
3.4 Proces enumerace Enumerace je proces detekce a identifikace pĜipojeného zaĜízení, Ĝízená hostitelem. Po pĜipojení zaĜízení si hostitel zjistí, na jaký port je zaĜízení pĜipojeno (stav Attached). NáslednČ je tĜeba tento port povolit a nakonfigurovat (stav Powered). Po té hostitel zaĜízení inicializuje do výchozího stavu (stav Default) pĜíkazem reset, což znamená, že zaĜízení odpovídá na defaultní adresu a komunikace probíhá pĜes Default Control Pipe. ZaĜízení se nachází ve stavu Default a jeho registry jsou nastaveny na pĜeddefinované hodnoty. Smí odebírat maximálnČ 100 mA. NáslednČ si hostitel vyžádá formou požadavkĤ (tzv. standard requests) deskriptor zaĜízení a pĜiĜadí zaĜízení unikátní adresu (stav Address). Na závČr si hostitel vyžádá deskriptor popisující konfigurace zaĜízení. ZaĜízení je poté nakonfigurováno a pĜipraveno k použití (stav Configured). Pokud není po urþitý þasový interval registrována aktivita na sbČrnici, pĜechází zaĜízení do neaktivního stavu (stav Suspended). Následující diagram (obr. 3.6) znázorĖuje pĜechod mezi jednotlivými stavy.
Obr. 3.6 Stavový diagram [1]
- 16 -
Reakce zaĜízení na žádosti USB hostitele jsou závislé na stavu, ve kterém se zaĜízení nachází. Všechna zaĜízení odpovídají na požadavky hostitele prostĜednictvím Default Control Pipe, což je komunikaþní roura vytvoĜená mezi nulovými koncovými body zaĜízení a hostitele. PĜes tuto defaultní Ĝídicí rouru probíhá takzvaný Ĝídicí pĜenos. V následující tabulce uvádím formát požadavkĤ hostitele na zaĜízení tak, jak ho definuje standard [1].
Tab. 3.1 Formát požadavkĤ
Jednotlivé požadavky a jejich parametry jsou odeslány k zaĜízení prostĜednictvím Setup paketu. Hostitel je zodpovČdný za konkrétní odesílané hodnoty. Velikost každého Setup paketu je 8 bajtĤ. V knihovnČ Common.h definuji strukturu, která musí svým formátem odpovídat pĜedchozí tabulce:
W\SHGHIVWUXFWBGHYLFHBUHTXHVW^
XQVLJQHGFKDUEP5HTXHVW7\SH
XQVLJQHGFKDUE5HTXHVW
XQVLJQHGVKRUWZ9DOXH
XQVLJQHGVKRUWZ,QGH[
XQVLJQHGVKRUWZ/HQJWK
`'(9,&(B5(48(67
- 17 -
Obdrží-li Ĝadiþ zaĜízení Setup paket, uloží jeho obsah do vyrovnávací pamČti, nastaví Interrupt registr na hodnotu tomu odpovídající a generuje puls signalizující mikroprocesoru externí pĜerušení. Program v mikroprocesoru vyþte obsah Interrupt registru a jeho obsah porovná s maskou povolených pĜerušení. NáslednČ zavolá obslužnou rutinu pro dané pĜerušení. První funkcí z této rutiny je funkce, kterou jsem logicky pojmenoval
6HWXS7RNHQB+DQGOHU . Z ní je volána funkce s názvem
,63B5HDG&RQWURO(QGSRLQW6HWXS v níž se vyþítá Setup buffer jehož obsah je pĜiĜazen jednotlivým položkám v již zmínČné struktuĜe '(9,&(B5(48(67. Podle jejího obsahu program rozpoznává, jaké konkrétní požadavky jsou vyžadovány, napĜíklad jaký typ deskriptoru si hostitel žádá a následují funkce slouží k správnému zpracování tČchto požadavkĤ. Pokud zaĜízení bez komplikací obdrží data obsažená v Setup paketu, je tĜeba zapsat do Control Function registru na bit DSEN. Tímto Ĝadiþ zaĜízení odešle handshake signál. Následující tabulka (tab. 3.2) pĜehlednČ uvádí jednotlivé parametry všech požadavkĤ na data ze zaĜízení.
Tab. 3.2 Standard device requests [1]
- 18 -
Jak již bylo uvedeno, pokud je zaĜízení zinicializováno, jsou jeho registry nastaveny na defaultní hodnoty (viz. kapitola 3.3) a nachází se ve stavu Default. V procesu enumerace tedy následuje krok, kdy si host vyžádá deskriptor zaĜízení, což odpovídá požadavku GET_DESCRIPTOR. Aby bylo možno rozeznat, jaký deskriptor je požadován, je tĜeba znát hodnotu wValue, která odpovídá jednotlivým deskriptorĤm. To je opČt definováno standardem [1] a znázornČno v následující tabulce (tab. 3.3).
Tab. 3.3 Typy deskriptorĤ [1]
Pokud tedy hodnota deskriptoru v požadavku GET_DESCRIPTOR odpovídá hodnotČ Device, pak je požadován deskriptor zaĜízení. Jeho struktura je v programu nadefinovaná v knihovnČ usb200.h a musí opČt pĜesnČ odpovídat tomu, jak ji definuje standard [1]. Device deskriptor má vždy velikost 18 bajtĤ.
W\SHGHIVWUXFWB86%B'(9,&(B'(6&5,3725^ XQVLJQHGFKDU E/HQJWK
YHOLNRVWGHVNULSWRUX
W\SGHVNULSWRUX
XQVLJQHGFKDU E'HVFULSWRU7\SH
XQVLJQHGVKRUWEFG86%
ĀtVOR86%VSHFLILNDFH
XQVLJQHGFKDU E'HYLFH&ODVV
WĢtGD]DĢt]HQt
XQVLJQHGFKDU E'HYLFH6XE&ODVV
SRGWĢtGD]DĢt]HQt
XQVLJQHGFKDU E'HYLFH3URWRFRO
SURWRNRO]DĢt]HQt
XQVLJQHGFKDU E0D[3DFNHW6L]H
PD[LPiOQtYHOLNRVWSDNHWX
XQVLJQHGVKRUWLG9HQGRU
,'YìUREFH
XQVLJQHGVKRUWLG3URGXFW
,'SURGXNWX
XQVLJQHGVKRUWEFG'HYLFH
YìUREQtĀtVOR]DĢt]HQt
XQVLJQHGFKDU L0DQXIDFWXUHU
SRSLVYìUREFH
XQVLJQHGFKDU L3URGXFW
SRSLVSURGXNWX
XQVLJQHGFKDU L6HULDO1XPEHU
VpULRYpĀtVOR]DĢt]HQt
XQVLJQHGFKDU E1XP&RQILJXUDWLRQV
`86%B'(9,&(B'(6&5,3725
- 19 -
SRĀHWPRçQìFKNRQILJXUDFt
Položky 14 - 16 pĜedstavují pouze index na String deskriptor, kde se nachází pĜíslušný popis. Ve specifikaci USB 2.0 je kapitola 9 vČnována popisu struktury USB zaĜízení, aĢ už jednotlivým požadavkĤm þi deskriptorĤm popisujících tato zaĜízení. Soubor, ve kterém program naplní deskriptory konkrétními hodnotami a obslouží dané požadavky, jsem pojmenoval Chap_9.c. Funkce &KDSB*HW'HVFULSWRU tedy identifikuje,
jaký
deskriptor
je
požadován,
a
jeho
obsah
je
funkcí
&KDSB%XUVW7UDQVPLW(3 odeslán do bufferu Ĝadiþe (Data port registr) a odtud automaticky odeslán skrz endpoint 0 IN k hostiteli. Pokud zaĜízení obdrží status, že hostitel v poĜádku obdržel deskriptor zaĜízení, je oþekáván požadavek na nastavení adresy zaĜízení. Ten obslouží funkce &KDSB6HW$GGUHVV jež nastaví Address registr na adresu zaslanou hostitelem. ZaĜízení nyní pĜechází ze stavu Default do stavu Address. ZaĜízení mĤže obdržet požadavek Set address i ve stavu Address. Pokud je nová adresa rovna 0, pak pĜechází zpČt do stavu Default. Pokud je nová adresa nenulová, zaĜízení zĤstává ve stavu Address a používá novČ nastavenou adresu. Hodnota adresy nesmí být nikdy vČtší než 127, jelikož standard USB 2.0 podporuje maximálnČ 127 pĜipojených zaĜízení s jedineþnou adresou na jeden host kontrolér. Na základČ poþtu možných konfigurací zaĜízení (v našem pĜípadČ jen jedna) a funkci, jakou má zaĜízení plnit, je zaĜízení hostitelem nakonfigurováno a pĜechází do stavu Configured. V pĜípadČ požadavku na konfiguraþní deskriptor zaĜízení obvykle nevrací jen 9 bajtĤ konfiguraþního deskriptoru, ale zároveĖ i deskriptory rozhraní a endpointĤ (proto deskriptor obsahuje slovo Z7RWDO/HQJWK nesoucí celkovou délku vrácených dat). Struktura tohoto deskriptoru je uvedena v následující tabulce (tab. 3.4).
Tab. 3.4 Konfiguraþní deskriptor
- 20 -
3.5 PĜenos dat PĜenos dat pĜi procesu enumerace popsaném v pĜedchozí kapitole je provádČn skrz defaultní rouru mezi nulovými koncovými body. Pokud je zaĜízení nakonfigurováno, jsou také pĜipraveny jednotlivé koncové body, nadefinované pro zvolenou konfiguraci zaĜízení. Na následujícím obrázku je podrobnČji znázornČn datový tok mezi hostitelem a USB zaĜízením.
Obr. 3.7 Datový tok hostitel – zaĜízení [6]
Podle funkce, kterou zaĜízení plní, jsou USB zaĜízení dČlena do nČkolika tĜíd. Jako jednoduchá USB zaĜízení lze oznaþit tzv. HID (Human Interface Device), mezi která patĜí napĜíklad myš nebo klávesnice nebo také nČkterá mČĜicí zaĜízení (voltmetry, termometry). Ke komunikaci používá Ĝídicí a pĜerušovací pĜenosy z dĤvodu potĜeby asynchronního pĜenosu dat. Více nároþná je tĜída velkokapacitních pamČĢových zaĜízení (Mass Storage Device - MSC). Tuto kategorii tvoĜí USB Flash pamČti þi disky s USB rozhraním. Každé MSC zaĜízení musí mít implementovány alespoĖ dva bulk endpointy pro obousmČrnou komunikaci mezi zaĜízením a hostitelem Využití hromadného pĜenosu je vhodné i pro aplikaci, ve které se uplatní mĤj pĜípravek. Nyní uvedu hlavní parametry hromadného pĜenosu, osvČtlující výhody jeho použití.
- 21 -
Hromadný (bulk) pĜenos je navržen pro zaĜízení, která potĜebují pĜenášet velké bloky dat v rĤzných okamžicích, kdy mĤže pĜenos použít veškeré dostupné pĜenosové pásmo. Proto je tento typ pĜenosu vhodný do USB systému s velkou þástí volného pĜenosového pásma. Pokud tomu tak není, trvá pĜenos delší dobu. Vzhledem k tomu, že náš systém je urþen pro zkrácení þasu produkþního programování programovatelných souþástek a kapacita pĜenosového pásma nebude využita k jinému úþelu, je vhodné využít právČ hromadného pĜenosu. Další vlastností tohoto pĜenosu je, že garantuje správné doruþení dat. V pĜípadČ chyb na sbČrnici jsou pĜenosy opakovány. PĜenos je ukonþen tehdy, když bylo pĜeneseno pĜesnČ tolik dat, kolik bylo požadováno. Hostitel získá z konfiguraþních informací o zaĜízení údaj o maximální velikosti dat pro hromadný (bulk) endpoint, pĜenesených v rámci jedné transakce. Pro verzi full-speed je tato hodnota maximálnČ 64 bajtĤ a pro verzi high-speed až 512 bajtĤ. Tato hodnota se vztahuje k vlastním datĤm a nejsou do ní zapoþítávána data protokolu. Je-li tĜeba pĜenést menší objem dat, není tĜeba doplĖovat na hodnotu maximální. Naopak, pokud je tĜeba pĜenést vČtší objem dat, než udává hodnota wMaxPacketSize pro daný endpoint, jsou tato data rozdČlena do více paketĤ. High-speed OUT enpoint musí implementovat takzvaný PING protokol. Ten slouží ke zjištČní, zda má endpoint místo pro další datové transakce, což vede k zefektivnČní využívání þasu na sbČrnici. Hostitel se dotazuje zaĜízení speciálním PING tokenem, na nČjž mĤže obdržet odpovČć typu NAK (endpoint nemá místo pro wMaxPacketSize) nebo ACK (endpoint má místo). Synchronizace mezi vysílaþem a pĜíjemcem dat je pro hromadné pĜenosy udržována pomocí takzvaných toggle data bitĤ, pĜepínaných po úspČšném ukonþení transakce. Maximální poþet úspČšných transakcí bČhem rámce je omezen na ménČ než 72 osmibajtových pĜenosĤ pro verzi full-speed. ěadiþ ISP1582 však podporuje verzi USB high-speed, pro niž platí omezení na ménČ než 14 pĜenosĤ na mikrorámec o velikosti 512 bajtĤ. Tato omezení jsou dána frekvencí sbČrnice a þasováním mikrorámce. Standard [1]
uvádí limity pro blokové pĜenosy pro verzi full-speed
(tab. 3.5) i pro verzi high-speed (tab. 3.6).
- 22 -
Režie protokolu (13 bajtĤ)
(3 SYNC bajty, 3 PID bajty, 2 Endpoint + CRC bajty, 2 CRC byty a 3 bajtová pauza mezi pakety)
Velikost dat
Max. pĜenosová rychlost (bytes per second)
Využití rámce pro pĜenos
Max. poþet pĜenosĤ v rámci
Zbývajících bajtĤ
BajtĤ informace na rámec
1
107000
1%
107
2
107
2
200000
1%
100
0
200
4
352000
1%
88
4
352
8
568000
1%
71
9
568
16
816000
2%
51
21
816
32
1056000
3%
33
15
1056
64
1216000
5%
19
37
1216
Max
1500000
1500
Tab. 3.5 Limity pro full-speed hromadné pĜenosy Režie protokolu (55 bajtĤ)
(3x4 SYNC bajty, 3 PID bajty, 2 EP/ADDR + CRC bajty, 2 CRC16 bajty a 3x(1+11) bajtĤ pauzy mezi pakety (EOP atd.))
Velikost dat
Max. pĜenosová rychlost (bytes per second)
Využití mikrorámce pro pĜenos
Max. poþet pĜenosĤ v rámci
Zbývajících bajtĤ
BajtĤ informace na rámec
1
1064000
1%
133
52
133
2
2096000
1%
131
33
262
4
4064000
1%
127
7
508
8
7616000
1%
119
3
952
16
13440000
1%
105
45
1680
32
22016000
1%
86
18
2752
64
32256000
2%
63
3
4032
128
40960000
2%
40
180
5120
256
49152000
4%
24
36
6144
512
53248000
8%
13
129
6656
Max
60000000
7500
Tab. 3.6 Limity pro high-speed hromadné pĜenosy
- 23 -
Jak již bylo zmínČno v kapitole vČnující se inicializaci Ĝadiþe, nadefinoval jsem si dva endpointy urþené pro oboustranný hromadný pĜenos dat a dva endpointy pro pĜerušovací pĜenos umožĖující rychlé odeslání zĜídka odesílaných dat. USB Ĝadiþ podporuje 7 vstupních a 7 výstupních, uživatelsky plnČ konfigurovatelných endpointĤ. Endpoint 1 IN/OUT jsem nadefinoval jako Interrupt endpoint. PĜerušovací pĜenosy poskytují garantovanou maximální periodu, ve které je požadavek obsloužen a v pĜípadČ chyby pĜi doruþení jeho znovuvyslání. Pro high-speed zaĜízení pĜerušovací pĜenosy specifikují maximální velikost dat až 1024 bytĤ. V defaultní konfiguraci však high-speed zaĜízení nesmí obsahovat interrupt endpoint s velikostí dat vČtší než 64 bytĤ. Pokud je tedy po pĜerušovacím pĜenosu požadován pĜenos vČtšího objemu dat, je tĜeba pro zaĜízení nadefinovat jeho alternativní konfiguraci. Pro mou aplikaci, pro pĜenos velkého objemu dat, používám hromadný pĜenos a pokud bude tĜeba neodkladnČ doruþit nČjakou informativní zprávu, postaþí vždy maximální velikost paketu 64 bajtĤ. ZaĜízení si tedy vystaþí pouze s jednou, defaultní konfigurací. Pro pĜenos velkého objemu dat je tĜeba mít dostupné co nejširší pĜenosové pásmo. Endpoint 2 IN/OUT je tedy nadefinován pro pĜenos 512 bajtĤ v rámci jedné hromadné transakce. Pro zefektivnČní pĜenosu využívá Endpoint 2 IN i Edpoint 2 OUT takzvaného Double Bufferingu. Jde v podstatČ o postup, kdy se využívají dva buffery, pĜiþemž z jednoho jsou data þtena na výstup a do druhého
jsou souþasnČ data
zapisována. Poté, co jsou data z prvního bufferu odeslána, si oba buffery prohodí funkce. Výhodou takového Ĝešení je, že pro odeslání/pĜijmutí dat jsou vždy pĜipravena data a nedochází tak ke zbyteþným prodlevám. Tím je zaruþena vysoká propustnost pĜenosu dat. Tato metoda je napĜíklad využívána u grafických karet pĜi vykreslování animací pro vytvoĜení dojmu plynulého pohybu.
- 24 -
3.6 Vývojové prostĜedí Pro psaní programu jsem využil vývojové prostĜedí IAR Embedded Workbench v kombinaci s jlink USB-JTAG Debuggerem rovnČž od firmy IAR SYSTEMS [5], které mi byly poskytnuty na katedĜe mČĜení jako vývojové prostĜedky. Zapojení USB-JTAG Debuggeru k procesoru a jeho propojení s deskou USB Ĝadiþe je na obrázku (obr. 3.8). K práci s procesorem jsem využil veškeré dostupné dokumentace a ukázkové kódy dostupné od výrobce [3],[4].
Obr. 3.8 Zapojení vývojových nástrojĤ
- 25 -
4. ZávČr 4.1 Dosažené výsledky Pro seznámení se s rozhraním USB jsem mimo jiné využil pĜednášek pana Ing. JiĜího Nováka vČnovaných tomuto tématu. Poskytly mi první vhled do této problematiky. Další informace, které bylo nutné získat pro správnou implementaci rozhraní, jsem þerpal pĜedevším z dokumentace ke standardu, ale také z þlánkĤ na internetu. Tato práce svým charakterem nabízí propojení teoretických znalostí s jejich uplatnČním pro konkrétní aplikaci a to na hardwarové i softwarové úrovni. Práce se na obou úrovních skládala z fází návrhu a realizace. V obou pĜípadech jsem pracoval s nástroji, se kterými jsem do té doby mČl jen minimum zkušeností. Bylo tedy nutné, nastudovat potĜebnou literaturu a osvojit si nové pojmy. Konkrétní kroky pĜi realizaci jednotlivých fází jsou uvedeny v této práci. Na hardwarové úrovni se podaĜilo zrealizovat funkþní obvod, který na jedné stranČ podporuje komunikaci pĜes USB sbČrnici a na stranČ druhé poskytuje pĜipojení kontrolního mikroprocesoru urþeného pro konfiguraci zaĜízení a zpracovávání požadavkĤ Ĝadiþem rozpoznaných. Vhodným návrhem a realizací softwaru pro tento mikroprocesor byl Ĝadiþ nastaven pro základní komunikaci s host kontrolérem a následnČ nakonfigurován do stavu, kdy je zaĜízení pĜipraveno uskuteþnit hromadný pĜenos pro záznam dat. V pĜíloze A pro ilustraci uvádím výpis zpráv zobrazených po pĜipojení zaĜízení k poþítaþi. Na pĜiloženém CD je rovnČž k dispozici soubor s výpisem deskriptorĤ pĜipojeného zaĜízení, získaného z programu USBlyzer, který slouží k sledování komunikace na USB sbČrnici. Výsledný pĜípravek je pĜipraven pro jeho využití v projektu zamČĜeném na implementaci vysokorychlostního rozhraní JTAG, kde bylo tĜeba dosáhnout jeho pĜipojení k poþítaþi prostĜednictvím sbČrnice USB 2.0 verze high-speed pro zkrácení produkþního programování programovatelných souþástek. Rozhraní USB je v souþasnosti velmi rozšíĜené a jak již bylo zmínČno, lze ho uplatnit v rozliþných aplikacích. Bylo proto velmi užiteþné se s ním detailnČ seznámit a tyto teoretické poznatky si postupnČ upĜesĖovat v závislosti na omezeních konkrétní aplikací. Význam USB rozhraní také potvrzují zprávy o chystané verzi USB 3.0, jenž bude dosahovat 10x vČtšího výkonu, tedy teoretického maxima pĜenosové rychlosti až 4,8 Gb/s. Tato verze bude zpČtnČ kompatibilní s verzemi pĜedchozími a tak budu moci využít své poznatky z této práce
i v pĜípadných budoucích aplikacích.
- 26 -
Seznam použité literatury
[1] Universal Serial Bus Revision 2.0 specification. http://www.usb.org [2] Záhlava V.: OrCAD 10. Vydavatelství GRADA, 2004. [3] NXP: “ISP1582 Technical documents”. http://www.nxp.com [4] STMicroeletronics: “Documents and files for family STR7“. http://www.st.com [5] IAR: IAR Embedded Workbench. http://www.iar.com [6] HW.cz: „USB 2.0 - díl 1”, „USB 2.0 - díl 2“, „USB 2.0 - Typy a formáty pĜenosĤ“. http://www.hw.cz [7] Kocourek P., Novák J.: PĜenos informace. Skripta ýVUT, Praha 2003.
- 27 -
PĜíloha A Microsoft Windows XP – nalezen nový hardware
-
Aby však mohly zaĜízení a host vzájemnČ plnohodnotnČ komunikovat, tedy aby mohl být napĜíklad uskuteþnČn blokový pĜenos dat, je tĜeba, aby mČl
host
kontrolér k dispozici vhodný ovladaþ, popisující funkce pĜipojeného zaĜízení.
-
ZaĜízení PHILIPS ISP 1582 Test však není zaĜízení, které lze zaĜadit do nČkteré ze standardnČ definovaných tĜíd zaĜízení. Po upĜesnČní požadavkĤ pro cílový projekt bude tedy nutné, napsat pĜíslušný ovladaþ.
- 28 -
Linux – Fedora -
Po zadání pĜíkazu pro vypsání USB zaĜízení /sbin/lsusb -v je vypsán podrobný popis zaĜízení v podobČ jednotlivých deskriptorĤ.
Bus 001 Device 005: ID 04cc:1b41 Philips Semiconductors Device Descriptor: bLength
18
bDescriptorType
1
bcdUSB
2.00
bDeviceClass
255 Vendor Specific Class
bDeviceSubClass
255 Vendor Specific Subclass
bDeviceProtocol
255 Vendor Specific Protocol
bMaxPacketSize0
64
idVendor
0x04cc Philips Semiconductors
idProduct
0x1b41
bcdDevice
0.00
iManufacturer
1
iProduct
2
iSerial
3
bNumConfigurations
1
Configuration Descriptor: bLength
9
bDescriptorType
2
wTotalLength
46
bNumInterfaces
1
bConfigurationValue
1
iConfiguration
4
bmAttributes
0xe0
Self Powered Remote Wakeup MaxPower
0mA
Interface Descriptor: bLength
9
bDescriptorType
4
bInterfaceNumber
0
bAlternateSetting
0
bNumEndpoints
4
bInterfaceClass
255 Vendor Specific Class
bInterfaceSubClass
255 Vendor Specific Subclass
bInterfaceProtocol
255 Vendor Specific Protocol
iInterface
5
- 29 -
Endpoint Descriptor: bLength
7
bDescriptorType
5
bEndpointAddress bmAttributes
0x81
EP 1 IN
3
Transfer Type
Interrupt
Synch Type
None
Usage Type
Data
wMaxPacketSize bInterval
0x0040
1x 64 bytes
4
Endpoint Descriptor: bLength
7
bDescriptorType
5
bEndpointAddress bmAttributes
0x01
EP 1 OUT
3
Transfer Type
Interrupt
Synch Type
None
Usage Type
Data
wMaxPacketSize bInterval
0x0040
1x 64 bytes
4
Endpoint Descriptor: bLength
7
bDescriptorType
5
bEndpointAddress bmAttributes
0x82
EP 2 IN
2
Transfer Type
Bulk
Synch Type
None
Usage Type
Data
wMaxPacketSize bInterval
0x0200
1x 512 bytes
0
Endpoint Descriptor: bLength
7
bDescriptorType
5
bEndpointAddress bmAttributes
0x02
EP 2 OUT
2
Transfer Type
Bulk
Synch Type
None
Usage Type
Data
wMaxPacketSize bInterval
0x0200
1x 512 bytes
0
- 30 -
PĜíloha B
PĜiložené CD obsahuje: •
Soubory návrhu tištČného spoje.
•
Zdrojové kódy programu.
•
Dokumentace k programu.
•
Výpis z programu USBlyzer ve formátu HTML.
•
Tato práce ve formátu PDF.
- 31 -