Asymmetric multiprocessing of Linux and hard real-time systems
Sinkkonen, Jouko (2021)
Kandidaatintyö
Sinkkonen, Jouko
2021
School of Energy Systems, Sähkötekniikka
Kaikki oikeudet pidätetään.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2021090745499
https://urn.fi/URN:NBN:fi-fe2021090745499
Tiivistelmä
Industrial control applications and lifesaving devices require hard real-time for them to function properly. While real-time operating systems and bare metal programs can meet these needs, their nature complicates the implementation of higher-level features like human machine interfaces. For this reason, general-purpose operating systems can be combined with real-time ones, forming asymmetric multiprocessing (AMP).
This thesis covered various tools and ways of creating AMP-supported systems and also went through the process of creating two such systems. The used platform was Digilent’s development board Zybo Z7-10, which has a system on-chip called Zynq-7000 with a dual-core ARM processor and an FPGA. In the first practical example, Linux ran on the first core, loaded the bare metal program on the second one and the two communicated via the remote processor messaging framework. However, the bare metal did not do anything outside of waiting for messages to arrive from Linux and interrupts were not gotten to work so these things would have to be addressed next. The second example featured two bare metal programs running simultaneously on the Zynq and communicating via block RAM, located in the FPGA. Interrupts would be the next thing to implement for the dual bare metal system, but its lack of GPOS is a significant obstacle if higher level features were needed. Both systems serve as good starting points for developing AMP systems with working communication and remote launching capabilities, but they would still require more work to implement additional features that would be useful in real-life situations. Teolliset säätöjärjestelmät ja hengenpelastuslaitteet vaativat kovaa reaaliaikaisuutta toimiakseen oikein. Reaaliaikaiset käyttöjärjestelmät ja bare metal -ohjelmat voivat vastata näihin tarpeisiin, mutta niiden luonne tekee korkean tason ominaisuuksien toteuttamisen hankalaksi. Tästä syystä voidaan muodostaa asymmetristä moniprosessointia (AMP) yhdistämällä yleiskäyttöiset käyttöjärjestelmät reaaliaikaisten kanssa.
Tämä työ tutustui erinäisiin työkaluihin, sekä tapoihin implementoida AMP ja kävi myös läpi kahden sellaisen järjestelmän luomisprosessin. Käytettynä laitteistona oli Digilentin valmistama Zybo Z7-10 kehitysalusta, jonka Zynq-7000 järjestelmäpiiri sisältää tuplaydin ARM prosessorin ja FPGA:n. Ensimmäisessä käytännön esimerkissä Linux pyöri ensimmäisellä ytimellä, latasi bare metal -ohjelman toiselle ytimelle ja ne kaksi kommunikoivat sen jälkeen remote processor messaging kehyksellä. Bare metal ei kuitenkaan tehnyt mitään viestien odottamisen ulkopuolella eikä keskeytyksiä saatu toimimaan, joten nämä asiat pitäisi korjata seuraavaksi. Toisessa esimerkissä kaksi eri bare metal -ohjelmaa suoritettiin samanaikaisesti Zynqillä ja ne kommunikoivat FPGA:han sijoitetun BRAM-lohkon kautta. Keskeytykset olivat seuraava askel tällekin järjestelmälle, mutta yleiskäyttöisen käyttöjärjestelmän puute on huomattava este, mikäli korkeamman tason ominaisuuksia haluttaisiin implementoida. Molemmat järjestelmät toimivat hyvinä lähtökohtina AMP järjestelmien luomiselle, mutta ne vaatisivat vielä työtä, jotta niihin saataisiin lisää oikean elämän sovelluksissa hyödyllisiä ominaisuuksia.
This thesis covered various tools and ways of creating AMP-supported systems and also went through the process of creating two such systems. The used platform was Digilent’s development board Zybo Z7-10, which has a system on-chip called Zynq-7000 with a dual-core ARM processor and an FPGA. In the first practical example, Linux ran on the first core, loaded the bare metal program on the second one and the two communicated via the remote processor messaging framework. However, the bare metal did not do anything outside of waiting for messages to arrive from Linux and interrupts were not gotten to work so these things would have to be addressed next. The second example featured two bare metal programs running simultaneously on the Zynq and communicating via block RAM, located in the FPGA. Interrupts would be the next thing to implement for the dual bare metal system, but its lack of GPOS is a significant obstacle if higher level features were needed. Both systems serve as good starting points for developing AMP systems with working communication and remote launching capabilities, but they would still require more work to implement additional features that would be useful in real-life situations.
Tämä työ tutustui erinäisiin työkaluihin, sekä tapoihin implementoida AMP ja kävi myös läpi kahden sellaisen järjestelmän luomisprosessin. Käytettynä laitteistona oli Digilentin valmistama Zybo Z7-10 kehitysalusta, jonka Zynq-7000 järjestelmäpiiri sisältää tuplaydin ARM prosessorin ja FPGA:n. Ensimmäisessä käytännön esimerkissä Linux pyöri ensimmäisellä ytimellä, latasi bare metal -ohjelman toiselle ytimelle ja ne kaksi kommunikoivat sen jälkeen remote processor messaging kehyksellä. Bare metal ei kuitenkaan tehnyt mitään viestien odottamisen ulkopuolella eikä keskeytyksiä saatu toimimaan, joten nämä asiat pitäisi korjata seuraavaksi. Toisessa esimerkissä kaksi eri bare metal -ohjelmaa suoritettiin samanaikaisesti Zynqillä ja ne kommunikoivat FPGA:han sijoitetun BRAM-lohkon kautta. Keskeytykset olivat seuraava askel tällekin järjestelmälle, mutta yleiskäyttöisen käyttöjärjestelmän puute on huomattava este, mikäli korkeamman tason ominaisuuksia haluttaisiin implementoida. Molemmat järjestelmät toimivat hyvinä lähtökohtina AMP järjestelmien luomiselle, mutta ne vaatisivat vielä työtä, jotta niihin saataisiin lisää oikean elämän sovelluksissa hyödyllisiä ominaisuuksia.