Ett minneskartat register (MMR) är ett hårdvaruregister i ett system (som en mikrokontroller eller inbäddat system) som nås via systemets minnesadressutrymme. Istället för att ha en dedikerad instruktion/utgång (I/O) som är inställd på att interagera med dessa register, behandlas de som om de är platser i systemets RAM eller annat minne.
Här är en uppdelning av vad det betyder:
* Hårdvaruregister: Ett register är en liten lagringsplats inom en hårdvarukomponent. Dessa register kontrollerar ofta beteendet hos kringutrustning (som timers, uarts, ADC -omvandlare, etc.) eller har statusinformation om dessa kringutrustning.
* Minnesadressutrymme: Detta är utbudet av adresser som systemets CPU kan komma åt att läsa och skriva data. Detta inkluderar RAM, ROM och andra minnesenheter.
* Memory-Mapped: Den avgörande aspekten är att adresserna för dessa register kartläggs i samma minnesadressutrymme. CPU kan därför läsa eller skriva till dessa register med hjälp av instruktioner för standardminnesåtkomst (som "Load" eller "butik"). Detta står i kontrast till I/O-mappade system, där dedikerade I/O-instruktioner används.
Hur det fungerar:
När CPU vill interagera med en perifer, använder den helt enkelt en minnesadress som motsvarar det minneskartade registret för den perifera. Att skriva till den adressen modifierar registerets värde och läsning från det hämtar registerets nuvarande värde. Hårdvaran hanterar den faktiska interaktionen med det perifera baserat på minnesåtkomst.
Fördelar med minneskartade register:
* enkelhet: Att använda standardminnesinstruktioner förenklar programmering. Inga speciella I/O -instruktioner behövs.
* Flexibilitet: Möjliggör enklare integration av kringutrustning och mer flexibel minneshantering.
* enhetlighet: Ger ett enhetligt adressutrymme för både minne och kringutrustning, vilket gör det enklare att hantera resurser.
Nackdelar med minneskartade register:
* Adressutrymmeförbrukning: Registren konsumerar en del av systemets begränsade minnesadressutrymme.
* Potential för konflikter: Noggrann planering behövs för att undvika adresskonflikter mellan minne och kringutrustning.
I huvudsak ger minneskartade register ett rent och effektivt sätt att interagera med hårdvaruutrustning med hjälp av en konsekvent minnesåtkomstmodell, vilket förenklar designen och programmeringen av inbäddade system.