Title: Hovedprosjekt HPEE0704
1Hovedprosjekt HPEE0704
2 Presentasjon av gruppen USB Sniffer Medlemmene
av gruppen er Bjørn L. Gundersen Johan L.
Tresvig Thang L. Nguyen
3 - Bakgrunn
- Oppgaven er gitt av ATMEL NORWAY AS
- Den går ut på å lage et system som viser trådløs
trafikk som er - kompatibel med IEEE 802.15.4 standarden.
4 - Prosjektbeskrivelse
- 1. Et kretskort skal produseres som inneholder
nødvendig hardware for å lytte til trådløs
trafikk. Kretskortet må også ha USB grensesnitt
til PC. - 2. Lage firmware som setter opp radiomottageren
som en lyttestasjon og videresender all trådløs
trafikk over USB til PCen. - 3. Lage et Windowsprogram som viser
pakkene mottatt fra monitorplattformen.
5 6Hardware
7USB SNIFFER
- Testsettet ATAVRRZ200 fra Atmel har vært
utgangspunktet for vår USB sniffer.
8Program for skjema og utlegg
- Cadence OrCad Capture 10.5
9Program for skjema og utlegg
- Cadence OrCad Layout 10.5
10Kretsens oppbygging
Firelags kretskort
11Kretsens oppbygging
12Mikrokontroller
- AT90USB1287
- 128 KB Flashminne
- 4 KB EEPROM
- 8 KB SRAM
- USB grensesnitt Full Speed
- SPI grensesnitt
- JTAG grensesnitt
- Opptil 16 Mips ved 16 Mhz. 2.7 5.5 Volt
operasjon
13Radiokontroller
- AT86RF230 er en laveffekts 2.4 GHz transceiver
utviklet for ZigBee/IEEE802.15.4 applikasjoner. - AT86RF230 er en SPI-til-antenne løsning.
- Alle RF-kritiske komponenter untatt antenna,
krystall og avkoplingskondensatorer er integrert
i brikken. - Lavt strømforbruk (Typiske verdier)
- -SLEEP 0.1 µA
- -TRX_OFF 1.7 mA
- -RX_ON 16 mA
- -BUSY_TX 17 mA (max. PTX)
- Driftsspenning 1.8V 3.6V
14ZigBee/IEEE802.15.4
- Forholdsvis lav bithastighet (20-250 kbps)
- DSSS-basert (Direct Sequence Spread Spectrum)
- Rekkevidde opptil 100 meter
- Tilgjengelig i ISM bånd ved 868 og 2400 MHz (EU)
- Lav pris (maks 20 av en Bluetooth løsning)
- Lavt strømforbruk, 1 AAA batteri klarer typisk 37
000 timer med vanlig ZB arbeidssyklus - Rask oppkobling for sovende enhet (30 ms)
15Prototype
- Prototypen som vi lager er på størrelse med
USBkeyen fra Atmel. 90X40mm
16Firmware
17Firmware
- Firmwaren som styrer USB pinnen har 2
hovedoppgaver - Å laste ned data fra AT86RF230 (radiomottageren)
- Å sende det videre på USB bussen til PCen
18USB initiering
- Hastighet (Low, Full, High)
- Device
- Enumerering
- Adressering 0-127
- Descriptorer
19USB initiering
Descriptorer er tabeller med informasjon som
hjelper USB hosten til å velge riktig driver for
kommunikasjonen med devicen Det finnes
forskjellige descriptorer Device descriptor -
Angir Produsent, produkt ID, mulige
konfigurasjoner Configuration descriptor -
Angir strømforbruk, antall grensesnitt
i denne konfigurasjonene. Interface descriptor
- USB klasse (HID, Vendor defined) for
dette grensesnittet, antall
endpoints Endpoint descriptor Endpoint nummer,
type overføring (Bulk, Isokron, Interupt,
Control), retning (IN/OUT) og
20Oppkobling mot radiomottaker
- Initierer SPI grensesnittet
- Sette µCeren som Master
- Overføringshastighet (500KB/s)
- Definere I/O pinner
21Oppkobling mot radiomottaker
- Initierer AT86RF230
- RF230 har en rekke tilstander/moduser for å få
- tilgang på alle funksjonene.
- µCeren kan styre hvilken modus RF230 skal stå i
ved å - gi kommandoer via SPI interfacet
- P_ON, oppstart modus
- TRX_OFF, konfigureringsmodus
- RX_ON, lyttemodus
22USB kommunikasjon
- Mottar data fra Windowsprogrammet
- Behandler evn. forespørsler fra USB host
- - GET DESCRIPTOR
- - READ DATA
- - WRITE DATA
- Bygger opp pakkene som sendes til PCen
- Styrer Power modusene til USB grensesnittet
23Databehandling
- Behandler data fra Windowsprogrammet
- Kanalvalg
- Start/Stopp send data, synkronisering mellom
firmware og - Windowsprogram
- Sortering av frames
- Beacon
- Data
- Acknowledge
- MAC command
- Kontrollerer om Radiomottageren har mottatt ny
frame ved å sjekke - IRQ linjen.
- Hvis ja, laste ned frame via SPI grensesnittet
- Utfører CRC kontroll
24Databehandling
- Konverterer pakke til standardformat
- PHY frame, rå data fra radiomottageren
- MAC frame, standarisert tabell gitt av
IEEE 802.15.4 standarden
- Skriver frame til kommunikasjonsbuffer
25Windowsprogram
26Viktige valg i en tidlig fase
- Utviklingsprogram
- USB PC driver
- Disse to valgene henger sterkt sammen, så denne
beslutningsfasen ble viktig.
27Valg av PC driver
- Vi vurderte 4 alternativer for USB PC driver
-
- AtUsbHid.dll
- En dll fil for USB kommunikasjon med Atmel sine
USB mikrokontrollere basert på HID klasse
implementering. Omtales mer siden. - Fordel Fremtidsrettet. Har fungerende
eksempelprogram. - Ulempe Ny kunnskap tar tid, lite
ressurspersoner på området. -
- Virtual Com Port
- UART til USB konvertering. PC kan så kommunisere
med USB port på samme måte som en virtuell RS-232
(COM) Port. - Fordel Enkelt å implementere, flere
ressurspersoner på området. - Ulempe Lite fremtidsrettet.
28Valg av PC driver
- NI VISA
- National Instruments har laget et virtuelt
instrument til USB kommunikasjon som heter
NI-VISA. - Firmware må ikke inneholde USB spesifikke
beskrivelser. - En wizard genererer en driver kun på bakgrunn av
USB enhetens PID og VID. -
- Ulempe Lite ressurspersoner på området, og
ingen eksempler på at dette fungerer. - Egendefinert USB driver
- Tanken på å skrive en egen USB driver fra
bunnen av får selv en dreven embedded-device
programmerer til å skjelve i bena, og kan være
den vanskeligste utfordringen ved å gå over til
USB kommunikasjon. - Fordel Skreddersydd applikasjonen vår.
- Ulempe Veldig tidkrevende og mangel på kunnskap
29Valg av utviklingsprogram
- Vi vurderte følgende alternativer for
utviklingsprogram - LabView
- Visual C pro
- LabView
- Fordel
- Grafisk og intuitiv programmering i G språket.
- Gruppen har litt kunnskap i LabView
programmering fra tidligere studier ved HINT. -
- Ulempe
- Lite tilgjengelige ressurspersoner ved skolen.
- MS Visual C pro
- Fordel
- Fleksibelt programmeringsverktøy.
- Tre av funksjonene i AtUsbHid.dll kan bare
brukes med Visual C. - Atmel har tilgjengelig et enkelt eksempel
programmert i Visual C som bruker AtUsbHid.dll
filen som PC driver. -
30Endelig valg av PC driver og utviklingsprogram
-
- PC driver
- Atmel sin AtUsbHid.dll fil
- Utviklingsprogram
- MS Visual C pro v.6
31Kort om Atmel sin HID Class driver AtUsbHid.dll
- Hid Class kan brukes til å utveksle såkalt
generic data, som i utgangspunktet kan være
hvilken som helst type data. - Alle Microsoft OS fra og med Windows 98SE har
innebygd en hid.dll driver for HID klasse
enheter. AtUsbHid.dll kommuniserer med den
innebygde hid.dll i Windows. - En DLL fil definerer et utvalg av
systemfunksjoner eller drivere i Windows. DLL
filer har samme struktur som en EXE fil og kan
inneholde kode, data og ressurser. - AtUsbHid.dll leveres med en headerfil som må
inkluderes i utviklingsprogrammet for at
funksjonene i dll filen fungerer. - AtUsbHid.dll inneholder funksjoner for lesing og
skriving av USB data og etablering av USB
kontakt. De andre funksjonene kan brukes etter
behov. SetFeature kan sette mikrokontrolleren i
DFU modus, som gjør at firmware enkelt kan
oppgraderes.
32Kort om Atmel sin HID Class driver AtUsbHid.dll
33Kort om MS Visual C pro som utviklingsprogram
- Objektorientert C språk
- Grafiske elementer kan plasseres ved dra og
slipp på det grafiske brukergrensesnittet. Disse
elementene kan tilordnes passende variabler og
funksjoner i C tekstfiler under all grafikken. - All programutførelse skrives i cppfiler, mens
deklarasjoner gjøres i tilhørende headerfil. - Hvert grafisk vindu som skal programmeres, har
hver sin cppfil og headerfil. I tillegg generer
kompilatoren noen tilleggsfiler i
kompileringsprosessen. - Større Windowsprogram inneholder mange cpp og
headerfiler til pop-up vindu og vindu for
innstillinger. - Visual Studio har innebygd et bibliotek med
standard Windows klasser med medlemsfunksjoner.
Dette biblioteket kalles MFC (Microsoft
Foundation Class Library). - Et eksempel på en klasse i MFC er Ctime som
konverterer nåværende systemtid til en
tekststreng som kan inneholde dato og/eller
klokkeslett.
34Programmets oppbygning
- Timerbasert
- Mottak av USB data er timerbasert. Antall byte i
hver frame er angitt i første byte som overføres.
Når hele frame er lastet ferdig i en global
tabell kjøres visualiseringsfunksjon for å vise
innhold i frame på GUI. - Grafisk og tekstbasert visualisering
- Når en framen er mottatt, vil funksjoner
generere tekststrenger for parametere i framen.
Byteverdier angis heksadesimalt, med unntak av
framelength som angis desimalt. - Tilstandsparametre angis som beskrivende tekst,
for eksempel CRC sjekk og tid/dato for mottak.
Signalkvalitet og signalstyrke for sist mottatte
frame er vist grafisk. Resten av framen
visualiseres tekstbasert ved hjelp av
heksadesimale tall. - Utseende
- Programmet har et standard Windows utseende med
enkel menylinje og mulighet for å maksimere og
minimere vinduet. På menylinjen er det også en
Info og About knapp som åpner et vindu med
generell info om programmet.
35Flytdiagram for initialisering
36Timer og View() flytdiagram
37Programmets funksjonalitet
- Programmet har følgende funksjonalitet
- Nåtidsvisning av ZigBee trafikk
- Viser følgende data for hver frame hvis de
finnes - Frametype
- Framecontroll
- Sequence number
- Framelength
- Addressing field
- Auxiliary Security Header
- MAC Payload
- FCS og CRC status
- Signal Quality
- Signal Strength
- Tid og dato for mottatt frames
- Mulighet for å lagre Log av mottatt frames som
tekstfil - Valg av hvilke frametyper som skal visualiseres
- Funksjon for å fryse/pause visualisering av
frames - Funksjon for å blanke ut mottatt data på GUI
- Mulighet for å sette AT90USB1287 i DFU mode.
38 - Utførte oppgaver
- Laget ferdig Gerber filer som brukes til å
- etse kretskort
- Utviklet firmware som videresender all
- data mottatt fra radiomottageren over USB
- Utviklet et Windowsprogram som viser
- data mottatt fra USB
39 - Gjenværende oppgaver
- Etsing og lodding av kretskort
- Lage en funksjon som utfører CRC sjekk av mottatt
data - Tilpasse firmwaren til kretskortet
- Øke USB hastighet
- Lage funksjon i Windowsprogrammet som oversender
- data til kretskort om kanalvalg, frametypevalg
og - start/stopp USB trafikk.
40 Takk for oppmerksomheten!