Käyttöjärjestelmä AVR-mikro-ohjaimelle
Koivuranta, Janne (2011)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2011121918819
https://urn.fi/URN:NBN:fi:amk-2011121918819
Tiivistelmä
Tämän opinnäytetyön tavoitteena oli suunnitella ja toteuttaa Atmel AVR mikro-ohjaimella toimiva yksinkertainen käyttöjärjestelmä. Käyttöjärjestelmän ominaisuuksiin haluttiin sisällyttää laitteistopohjaisella keskeytyksellä toimiva vuorottaja, joka jakaa suoritinaikaa ajossa oleville ohjelmille. Lisäksi käyttöjärjestelmä tarjoaa tarvittavat palvelut ajossa olevien ohjelmien väliseen synkronointiin. Kaikkien käyttöjärjestelmän palveluiden suoritukseen kuluva aika on ennakoitavissa, joten kyseessä on reaaliaikainen moniajokäyttöjärjestelmä.
Käyttöjärjestelmä toteutettiin kokonaan assemblyllä, eli symbolisella konekielellä. Se kehitettiin GNU/Linux-ympäristössä GNU-projektin assemblerin, debuggerin ja Emacs-tekstieditorin avulla. Käyttöjärjestelmän toimintojen testaamista varten toteutettiin lisäksi C-kielisiä testiohjelmia. Tällä haluttiin havainnollistaa assembly- ja C-kielten yhteiskäyttöä, käyttöjärjestelmää hyödyntävä ohjelmoija voi toteuttaa sovelluksensa valitsemallaan ohjelmointikielellä.
Käyttöjärjestelmään pyrittiin sisällyttämään vain ehdottoman tarpeellisia toimintoja, jotta sen rakenne pysyisi mahdollisimman selkeänä ja lähdekoodin luettavuus hyvänä. Lisätoimintoja, joiden tarpeellisuudesta ei ollut täyttä varmuutta, pyrittiin välttämään, mutta samalla pyrittiin ennakoimaan järjestelmän tuleva laajentaminen lisätoiminnoilla ja eri suoritinarkkitehtuurien tuella. Tavoitteena oli, että kaikkien järjestelmään sisällytettyjen toimintojen olemassaolo on perusteltua.
Opinnäytetyön aihe valittiin, koska haluttiin oppia ymmärtämään käyttöjärjestelmän toiminta ja myös käytännön toteutus alusta lähtien. Samalla haluttiin oppia hieman monimutkaisemman ohjelman toteuttaminen puhtaasti assembly-kielisenä sekä assembly- ja C-kielen yhteiskäyttö samassa projektissa.
Käyttöjärjestelmä toteutettiin kokonaan assemblyllä, eli symbolisella konekielellä. Se kehitettiin GNU/Linux-ympäristössä GNU-projektin assemblerin, debuggerin ja Emacs-tekstieditorin avulla. Käyttöjärjestelmän toimintojen testaamista varten toteutettiin lisäksi C-kielisiä testiohjelmia. Tällä haluttiin havainnollistaa assembly- ja C-kielten yhteiskäyttöä, käyttöjärjestelmää hyödyntävä ohjelmoija voi toteuttaa sovelluksensa valitsemallaan ohjelmointikielellä.
Käyttöjärjestelmään pyrittiin sisällyttämään vain ehdottoman tarpeellisia toimintoja, jotta sen rakenne pysyisi mahdollisimman selkeänä ja lähdekoodin luettavuus hyvänä. Lisätoimintoja, joiden tarpeellisuudesta ei ollut täyttä varmuutta, pyrittiin välttämään, mutta samalla pyrittiin ennakoimaan järjestelmän tuleva laajentaminen lisätoiminnoilla ja eri suoritinarkkitehtuurien tuella. Tavoitteena oli, että kaikkien järjestelmään sisällytettyjen toimintojen olemassaolo on perusteltua.
Opinnäytetyön aihe valittiin, koska haluttiin oppia ymmärtämään käyttöjärjestelmän toiminta ja myös käytännön toteutus alusta lähtien. Samalla haluttiin oppia hieman monimutkaisemman ohjelman toteuttaminen puhtaasti assembly-kielisenä sekä assembly- ja C-kielen yhteiskäyttö samassa projektissa.