Keskeytyspohjainen pulssilaskuri sulautetussa Linux-järjestelmässä
Ihonen, Joonas (2013)
Ihonen, Joonas
2013
Sähkötekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2013-06-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201306171268
https://urn.fi/URN:NBN:fi:tty-201306171268
Tiivistelmä
Linux on viime vuosina saavuttanut suuren suosion sulautettujen järjestelmien käyttöjärjestelmänä. Alunperin PC-käyttöön suunniteltu Linux-ydin ei sellaisenaan tarjoa kovin kattavia reaaliaikaisuusominaisuuksia, mutta erinäisiä reaaliaikapäivityksiä on saatavilla. Tässä työssä on tarkasteltu Linux-ydintä, johon on asennettu RT Patch -niminen reaaliaikapäivitys.
Työn päämääränä oli toteuttaa pulssilaskuri sulautettuun Linux-järjestelmään. Tässä työssä pulssilaskurilla tarkoitetaan laskuria, joka laskee digitaalisen signaalin muutosten määrää, aikaväliä ja taajuutta. Pulssilaskuria sovellettiin käytännössä kierrosnopeuden mittaamiseen.
Pulssilaskuri toteutettiin Linuxin laiteajurina. Laiteajurin suunnittelu Linuxille vaatii hyvää laitteiston ja käyttöjärjestelmän tuntemista. Keskeytyksiä käyttävä laiteajuri ei saa aiheuttaa ongelmia rinnakkaisuudessa eikä reaaliaikaisuudessa.
Pulssilaskuri mittaa tapahtumia asynkronisesti, mutta tavallisesti siltä luetaan arvoja synkronisesti. Tällöin keskiarvon laskentamenetelmään on kiinnitettävä huomiota hyvän tarkkuuden saavuttamiseksi. Työssä tarkasteltiin keskiarvon oikeellisuutta kahdella eri keskiarvomenetelmällä.
Valmiin laiteajurin toimintaa varmennettiin mittaamalla reaaliaikaisuutta ja tarkkuutta. Reaaliaikaisuutta arvioitiin mittaamalla latenssia ja keskeytyskäsittelijän pituutta. Tarkkuutta arvioitiin vertaamalla laiteajurin laskemia arvoja signaalinlähteenä toimivan funktiogeneraattoriin asetettuihin arvoihin.
Laiteajurin testeissä mitattiin 1000Hz testisignaalilla keskihajonnaksi 0,54Hz ja poikkeamaksi 2,9Hz. Samalla taajuudella mitattiin latenssin keskiarvoksi 25µs ja huonoimman tapauksen arvoksi 85µs. Suurimmaksi toimintataajuudeksi määritettiin kokeellisesti 85kHz.
Työn päämääränä oli toteuttaa pulssilaskuri sulautettuun Linux-järjestelmään. Tässä työssä pulssilaskurilla tarkoitetaan laskuria, joka laskee digitaalisen signaalin muutosten määrää, aikaväliä ja taajuutta. Pulssilaskuria sovellettiin käytännössä kierrosnopeuden mittaamiseen.
Pulssilaskuri toteutettiin Linuxin laiteajurina. Laiteajurin suunnittelu Linuxille vaatii hyvää laitteiston ja käyttöjärjestelmän tuntemista. Keskeytyksiä käyttävä laiteajuri ei saa aiheuttaa ongelmia rinnakkaisuudessa eikä reaaliaikaisuudessa.
Pulssilaskuri mittaa tapahtumia asynkronisesti, mutta tavallisesti siltä luetaan arvoja synkronisesti. Tällöin keskiarvon laskentamenetelmään on kiinnitettävä huomiota hyvän tarkkuuden saavuttamiseksi. Työssä tarkasteltiin keskiarvon oikeellisuutta kahdella eri keskiarvomenetelmällä.
Valmiin laiteajurin toimintaa varmennettiin mittaamalla reaaliaikaisuutta ja tarkkuutta. Reaaliaikaisuutta arvioitiin mittaamalla latenssia ja keskeytyskäsittelijän pituutta. Tarkkuutta arvioitiin vertaamalla laiteajurin laskemia arvoja signaalinlähteenä toimivan funktiogeneraattoriin asetettuihin arvoihin.
Laiteajurin testeissä mitattiin 1000Hz testisignaalilla keskihajonnaksi 0,54Hz ja poikkeamaksi 2,9Hz. Samalla taajuudella mitattiin latenssin keskiarvoksi 25µs ja huonoimman tapauksen arvoksi 85µs. Suurimmaksi toimintataajuudeksi määritettiin kokeellisesti 85kHz.