Avatar billede mxs Nybegynder
23. februar 2010 - 21:30 Der er 8 kommentarer og
1 løsning

Hvad er forskellen på Arduino'ens SRAM og flash?

Nu har jeg købt mig en Arduino controller, og er ved at programmere den. Meget spændende, men der er noget jeg ikke rigtig forstår, som nok bunder i at jeg ikke har så meget forstand på hardware igen.
Hvis I tager et kig på, http://www.atmel.com/dyn/products/Product_card.asp?part_id=4198&ListAllAttributes=1 kan I se at der er 32 Kb Flash og 2048 byte SRAM, men hvad er forskellen lige? Er det SRAM som bliver brugt under kørslen af programmet, eller er det flash hukommelsen?
Grunden til at jeg spørger er at jeg er ved at lave et lille bibliotek til controlleren som gør lidt brug af nogle virtuelle metoder på nogle objekter, men da jeg ved at virtuelle metodekald godt kan tage lidt hukommelse på runtime, så vil jeg gerne vide hvad det er jeg har at spille med, for hvis det kun er i omkredsen af 2 Kb, så vil jeg nok genoverveje mit design.

På forhånd tak, Martin Slot
Avatar billede thov Forsker
24. februar 2010 - 13:43 #1
Flash hukommelsen er almindeligvis til programmer, og SRAM'en til data som opsamles og behandles.

Den fysiske forskel består i, at SRAM (Statisk RAM) skal have strøm fra et batteri for ikke at 'glemme' indlæst data - desuden er SRAM hurtigere end flash RAM.
Avatar billede mxs Nybegynder
24. februar 2010 - 14:24 #2
Altså bliver SRAM'en brugt til at gemme hukommelse som kommer ind via portene, før de bliver behandlet af et program og Flash bliver brugt som en almindelig comptuers RAM, altså under programudførsel til variabler osv?
Avatar billede thov Forsker
24. februar 2010 - 15:02 #3
Jeg ved det ikke, men jo mere SRAM'en benyttes desto bedre, for flash-RAM har et 'begrænset' (omkring 4 mill.) antal overskrivninger - det har SRAM ikke.

På tidligere tiders 'single board' computere, f.eks. baseret på Intel 8032 CPU'en, havde man styreprogrammet på EPROM (eller EEPROM) og I/O data og variabler på SRAM.

EEPROM'er var ikke så ligetil at ændre (uden at ødelægge programmerne), så hvis Arduino'en nemt kan reservere adresser på flash RAM til data, er det fint - men hvorfor så overhovedet bruge SRAM ?

Jeg er derfor mere tilbøjelig til at tro, uden at kende synderligt til Arduino, at det er som i 'gamle dage' - flash RAM (EPROM) til selve programmet, og alle variabler og data i SRAM.
Avatar billede mxs Nybegynder
24. februar 2010 - 15:13 #4
Thov, okai :) Jeg synes bare det er mærkeligt at controlleren har både EEPROM, SRAM og Flash, men som du siger så kan det være at EEPROM og Flash er til programmet.
Avatar billede thov Forsker
24. februar 2010 - 15:51 #5
De tre typer af hukommelse har hver deres adresseområde og funktion.
Flash'en, som klarer færrest overskrivninger, bruges til programmer.
EEPROM'en klarer flere overskivninger, og benyttes til variabler.
SRAM'en 'slides' ikke, og bruges til data.
Avatar billede mxs Nybegynder
24. februar 2010 - 18:03 #6
Aaah okay!! Jeg troede at EEPROM'en var til selve programkoden, men kan godt se nu at mit program ikke lige havde så meget plads igen. Men det vil sige at jeg har < 2 Kb RAM til rådighed når jeg skal implementere virtuelle metoder.
Avatar billede thov Forsker
25. februar 2010 - 00:16 #7
Der skal vendes nogle bits her og der :-)

Men det er overdådigt, sammenlignet med SBC'er for 20 år siden.
Det var 8kb EPROM til programmer, 256 bit til logiske operatorer og 2kb til data.
Sløvt gik det, for Basic rykkede langtfra. Kompileret Pascal derimod, speedede programafviklingen 40-50 gange.
Avatar billede mxs Nybegynder
25. februar 2010 - 10:20 #8
Som jeg lige kan læse det udfra noget googling er at Arduino'en bruger EEPROM'en til konfigurations variabler osv som skal gemmes imellem rebootning, og at bootloaderen ligger i et låst område på flash'en.
Jeg synes også at kunne læse mig til at Flash og EEPROM'en ikke lige er sådan at tilgå og bruge til variabler.

Jeg synes at det er spændende at begive sig i kast med. Specielt når man ikke har rigtig meget at "rutte" med. Det får en til at tænke lidt mere over hvad og hvordan man skal programmere klogt.

Thov, smid et svar og jeg skal give dig point.
Avatar billede thov Forsker
25. februar 2010 - 14:00 #9
Ja, den er spøjs - Arduino'en
http://www.lisbonne.com/arduino/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester