MMU in multitasking

programski jeziki in programiranje

Moderator: tilz0R

MMU in multitasking

OdgovorNapisal/-a zanka » 21 Jan 2017, 01:05

Za firbec me zanima, koliko vas, programerjev mikrokrmilnikov, koristi vgrajen MMU (memory management unit) v svojem programu, in kako rešujete multitasking (scheduler)?
Uporabniški avatar
zanka
 
Prispevkov: 1793
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 93 krat
Prejel zahvalo: 153 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 29

Re: MMU in multitasking

OdgovorNapisal/-a tilz0R » 21 Jan 2017, 03:56

Imaš kakšen krmilnik v mislih? Za MMU na MCU še nisem slišal.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1393
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 182 krat
Prejel zahvalo: 341 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: MMU in multitasking

OdgovorNapisal/-a SamoBr » 21 Jan 2017, 04:20

Kaj je to MMU in kako deluje ?
SamoBr
 
Prispevkov: 2590
Pridružen: 14 Jun 2015, 14:45
Zahvalil se je: 123 krat
Prejel zahvalo: 222 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 41

Re: MMU in multitasking

OdgovorNapisal/-a tilz0R » 21 Jan 2017, 04:22

Memory Managment unit. Skrbi da si taski med seboj ne pokvarijo pomnilnika. Rezervira tudi pomnilnik za vsak task (proces).

Tole bi blo v grobem.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1393
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 182 krat
Prejel zahvalo: 341 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: MMU in multitasking

OdgovorNapisal/-a mujo » 21 Jan 2017, 09:48

Jaz ga ne uporabljam, ker ga uporabljeni mikrokrmilniki nimajo (Cortex M).
Mislim pa, da bi bil koristen.

Na "embedded računalnikih" (ARM Cortex A) pa linux skrije MMU, in se z njim ne ukvarjam.
mujo
 
Prispevkov: 730
Pridružen: 21 Jan 2015, 10:50
Kraj: MB
Zahvalil se je: 1 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 17

Re: MMU in multitasking

OdgovorNapisal/-a MitjaN » 21 Jan 2017, 22:24

Na mikrokrmilnikih, če boš že srečal kaj takega, bo to MPU. MPU in MMU sta dve različni zadevi. Sicer je namen zelo podoben, vendar je MMU bistveno bistveno kompleksnejši kot MPU.

Po mojem mnenju je uporaba MPU-ja brez RTOS-a bolj jalovo početje. Hitro se ti namreč zgodi, da spremeniš kodo, nastavitev MPU ja pa ne spremeniš. RTOS s podporo za MPU pa uredi 90% stvari sam od sebe. Naslednji korak pa je instrumentacija, namreč če že imaš MPU, potem je zelo fajn, če imaš uštimano delovanje ob nepravilnem delovanju. Najmanj kar je, je da se nekam zapiše kdo je je kriv za nastalo situacijo in kaj je takrat počel. Podobno, kot če imaš prekinitev (ali reset) ob prelitju sklada. Nič ti ne pomaga če se ti MCU resetira, ti pa veš samo, da je šel sklad preko.

MMU pa je bistveno več kot MPU. Poleg zaščitnih mehanizmov vpelje še koncept navideznega spomina. Sam si sploh ne predstavljam, da bi se z MMU jem ukvarjal. Če že imaš opravka z sistemom, ki ima MMU, potem imaš že pripravljen OS, ki ti MMU popolnoma skrije.
MitjaN
 
Prispevkov: 57
Pridružen: 24 Feb 2015, 12:45
Zahvalil se je: 2 krat
Prejel zahvalo: 24 krat
Uporabnika povabil: aly
Število neizkoriščenih povabil: 4

Re: MMU in multitasking

OdgovorNapisal/-a tilz0R » 21 Jan 2017, 22:26

Vem, kaj je MPU, dvomim pa da to vsi vejo. Dobro bi bilo, če napišeš kaj to sploh je.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1393
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 182 krat
Prejel zahvalo: 341 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: MMU in multitasking

OdgovorNapisal/-a MitjaN » 23 Jan 2017, 10:06

tilz0R moj komentar je letel na OP. Če je prišlo čez, da namigujem, da ti ne ločiš med MPU in MMU, se opravičujem.

Sicer se ne čutim poklicanega, da razlagam, kaj je MPU bom pa vseeno poskusil.

Torej MPU (Memory Protection Unit) je enota, ki skrbi da koda, ki se trenutno izvaja nima dostopa do spominskega prostora ki ji ne pripada. Če npr. koda reče daj vrednost v akumulatorju zapiši na naslov 0x8952, potem MPU pogleda ali ima koda trenutno dovoljenje za pisanje na ta naslov in če ga ima, potem se stvar izvede. Če pa ga nima, pa MPU proži prekinitev. Tako kot vsaka stvar se tudi MPU nastavlja preko registrov. Z njimi lahko nastaviš kateri del spomina je trenutno na voljo in kakšne pravice (samo branje, ali branje in pisanje) so dodeljene. Tipično MPU-ji podpirajo več setov različnih nastavitev, zato da ga ni potrebno vsakič znova rekonfigurirati. Tako lahko, ko se izvaja koda, ki pošilja podatke po UARTU, dovoliš tej kodi dostop samo do UARTA-a in rama za bufferje, ko pa se izvaja koda, ki skrbi za prikaz menijev na LCD-ju pa ji pustiš dostop do periferije ki pelje LCD (I2C vodilo ali pa kar GPIO) in do menijske strukture. To narediš samo z izbiro kateri set nastavitev v MPU-ju naj bo trenutno aktiven.

Ideja MPU-ja je, da če se kodi, ki pelje menije sfuzla in preko kazalce začne pisati vse naokoli, ne bo imela dostopa in bodo ostali procesi tekli nemoteno. Še boljši primer so sistemski registri. Če imaš en GPIO nastavljen kot vhod na katerega si vezal tipko proti masi in upor proti napajanju. Takrat res nočeš, da bi kdo rekel naj bo ta pin izhod in naj se postavi na "1". Če se ti to zgodi, in pritisneš tipko ti bo odletel pin. Takrat ob resetu MCU konfigurirap in potem z MPU-jem preprečiš dostop do kritičnih registrov. Torej je MPU v osnovi zaščitni mehanizem, ki ščiti delovanje ob napakah v kodi.
MitjaN
 
Prispevkov: 57
Pridružen: 24 Feb 2015, 12:45
Zahvalil se je: 2 krat
Prejel zahvalo: 24 krat
Uporabnika povabil: aly
Število neizkoriščenih povabil: 4


Vrni se na Software

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost