Hej och välkommen till forumet!
Det här med adresser kan vara mycket förvirrande för en nybörjare speciellt som det finns på lite olika
nivåer.
Ett exempel:
En processor har en intern adress-buss säg 1000 adresser för enkelhetens skull.
Dessa adresser är mappade inne i processorn t.ex. 0-499 är RAM, 500-989 är FLASH
och 990-999 är EEPROM. Här har du ingen möjlighet att "mappa in" nån form av externt
minne i processorns adressrymd, du har helt enkelt ingen extern adressbuss.
Däremot har processorn kanske både I2C och SPI-bussar avsedda för att ansluta periferienheter
eller kanske en seriebuss eller vanliga IO-pinnar som du kan fippla till 0 eller 1 som du behagar.
Men om du tar t.ex. ett FRAM-minne (funkar nog precis som ett RAM, men behåller all info
när du bryter spänningen). Så kan du ansluta det via en buss vi säger att du ansluter det
till SPI-bussen. (Jag väljer inte I2C som exempel, I2C har en form av adressering för att säga
vilken krets på I2C-bussen man vill prata med, det har iiiiingenting med processorns interna adressrymd att göra).
Nu får man lusläsa databladet för exakt vad man ska på SPI-bussen för att få FRAM:et att
lagra något eller läsa ur något. Principen är iaf ungefär som följer:
Dra Chip select (ofta 0 - 0V) på FRAM-kretsen låg så FRAM-kretsen fattar att vi vill snacka med den.
Skicka iväg lämpligt kommando på SPI-bussen som innehåller ett kommando att vi vill
skriva till den och vilken adress samt vad vi vill skriva, invänta "OK" från kretsen via SPI-bussen.
Släpp Chip select (ofta 1 - kanske 3.3V) på FRAM-kretsen.
Liknelsen är ungefär så här:
Du är CPU:n, din kompis är FRAM:et, SPI är luften mellan er som ni kan skrika i, och ni kan bägge prata svenska
Du ligger i sängen och räknar antalet kvisthål i första brädan i taket, du kommer fram till 87.
Istället för att försöka hålla det i ditt eget huvud så skriker du åt din kompis ute i köket:
DUUUU, lagra 87 på plats 1! Din kompis svarar "ÅKEJ!"
Du räknar nu antalet kvisthål i andra brädan i taket, du kommer fram till 5 stycken.
Du ropar åt din kompis ute i köket:
DUUUU, lagra 5 på plats 2! Din kompis svarar "ÅKEJ!"
Du räknar nu antalet kvisthål i tredje brädan i taket, du kommer fram till 0 stycken.
Du ropar åt din kompis ute i köket:
DUUUU, lagra 0 på plats 3! Din kompis svarar "ÅKEJ!"
O.s.v.
Dagen efter ropar du åt din kompis
DUUUU, ge mig innehållet i plats 2. Din kompis svarar 5!
Vad jag vill komma fram till är att adresserna för FRAM-kretsen har inget med din interna adressrymd i CPU:n att göra, de bor bara i huvudet på ditt FRAM. Du får själv hålla ordning på var du valt att lagra i FRAM:et, på vilken adress och varför. På detta vis behöver du egentligen bara ha en enda byte i din CPU för att räkna kvisthål och
du lagrar det sedan externt och kan gå och hämta det igen.
Hoppas det hjälper och inte stjälper.
MVH: Mikael