Käyttöjärjestelmäkehitys mikrokontrollerille
Manninen, Jere; Ivanov, Anton; Ronkainen, Markus (2025)
Manninen, Jere
Ivanov, Anton
Ronkainen, Markus
2025
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025060621146
https://urn.fi/URN:NBN:fi:amk-2025060621146
Tiivistelmä
Opinnäytetyö käsittelee käyttöjärjestelmäkehitystä mikrokontrollerille. Kokonaisuus jaettiin kolmeen vastuualueeseen: sarjaportin ajurit & oikosiirto, skeduleri ja muistinhallinta. Projektin tarkoituksena oli oppia tarkemmin käyttöjärjestelmän toiminnasta ja soveltaa opittuja laiteläheisen kehityksen taitoja.
Tietoja eri alueista etsittiin pääasiallisesti useasti eri verkkolähteistä, mutta myös kirjoista ja teknisistä dokumenteista.
Kehitys toteutettiin suurimmaksi osaksi C-kielellä, ilman valmiita kirjastoja. Muutama osa järjestelmästä kirjoitettiin suoraan ARM32 assembly-kielellä. Työkaluina koodin kääntämiseen ja linkittämiseen käytettiin GNU työkaluja Arm-prosessoriarkkitehtuurille. Laitteen ohjelmointiin käytettiin STlink työkaluja. GDB:tä käytettiin käyttöjärjestelmän debuggaukseen yhdessä STlink työkaluihin kuuluvan GDB palvelimen kanssa.
Toteutettu skeduleri on hyvin yksinkertainen, kiertovuorottelujärjestelmällä toimiva irrottava skeduleri. Skedulerissa on paljon mahdollisuuksia jatkokehitykselle, esimerkiksi prioriteettijärjestelmä tehtäville.
Sarjaporttiajurin nykyisessä versiossa tiedon lähetys tapahtuu tarkistamalla lähetysrekisterin tila silmukassa ja vastaanotto toteutetaan puskurilla. Seuraavassa versiossa hyödynnetään oikosiirtoa tiedonsiirtoon, sitä ei vain saatu toimimaan ajoissa.
Muistinvaraaja pystyy varaamaan 16 kilotavua tilaa SRAMissa kekomuistia varten, se käyttää linkitetyt listat muistialueen hallintaan, se voi varata, vapauttaa muistia ja myös yhdistää vierekkäisiä vapaita muistilohkoja yhdeksi vapaaksi muistilohkoksi. Seuraava versio voi keskittyä muistin turvallisuuteen ja realloc-ominaisuuteen.
Tietoja eri alueista etsittiin pääasiallisesti useasti eri verkkolähteistä, mutta myös kirjoista ja teknisistä dokumenteista.
Kehitys toteutettiin suurimmaksi osaksi C-kielellä, ilman valmiita kirjastoja. Muutama osa järjestelmästä kirjoitettiin suoraan ARM32 assembly-kielellä. Työkaluina koodin kääntämiseen ja linkittämiseen käytettiin GNU työkaluja Arm-prosessoriarkkitehtuurille. Laitteen ohjelmointiin käytettiin STlink työkaluja. GDB:tä käytettiin käyttöjärjestelmän debuggaukseen yhdessä STlink työkaluihin kuuluvan GDB palvelimen kanssa.
Toteutettu skeduleri on hyvin yksinkertainen, kiertovuorottelujärjestelmällä toimiva irrottava skeduleri. Skedulerissa on paljon mahdollisuuksia jatkokehitykselle, esimerkiksi prioriteettijärjestelmä tehtäville.
Sarjaporttiajurin nykyisessä versiossa tiedon lähetys tapahtuu tarkistamalla lähetysrekisterin tila silmukassa ja vastaanotto toteutetaan puskurilla. Seuraavassa versiossa hyödynnetään oikosiirtoa tiedonsiirtoon, sitä ei vain saatu toimimaan ajoissa.
Muistinvaraaja pystyy varaamaan 16 kilotavua tilaa SRAMissa kekomuistia varten, se käyttää linkitetyt listat muistialueen hallintaan, se voi varata, vapauttaa muistia ja myös yhdistää vierekkäisiä vapaita muistilohkoja yhdeksi vapaaksi muistilohkoksi. Seuraava versio voi keskittyä muistin turvallisuuteen ja realloc-ominaisuuteen.