Embedded systemen en firmware
Wat is de juiste reden dat in de firmware van kleine microcontrollers vaak dynamische geheugenreservering zoals malloc wordt vermeden?
- AOmdat in microcontrollers helemaal geen C-functies kunnen worden gebruikt
- BOmdat het RAM klein is en reserveren door fragmentatie kan mislukken en de tijd die reserveren kost moeilijk te voorspellen is
- COmdat dynamisch gereserveerd geheugen ook na het uitschakelen van de voeding niet verdwijnt
Antwoord en toelichting tonen
Antwoord: B. Omdat het RAM klein is en reserveren door fragmentatie kan mislukken en de tijd die reserveren kost moeilijk te voorspellen is
Als bij een microcontroller met slechts enkele KB tot enkele honderden KB RAM herhaaldelijk wordt gereserveerd en vrijgegeven, raakt de vrije ruimte in kleine stukken verdeeld en kan een grote reservering mislukken, ook al is het totaal voldoende. Bij apparaten die maandenlang werken, bestaat het risico dat het ooit mislukt. Omdat de benodigde tijd bovendien niet constant is, is het ongeschikt voor real-time verwerking. Daarom wordt vaak een ontwerp gebruikt waarbij het benodigde geheugen vooraf statisch wordt gereserveerd.