Pages: [1]   Go Down
Author Topic: Occupazione Ram: Uno vs Mega  (Read 434 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5789
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

usando il ramo 1.5 dell'IDE si riceve alla compilazione oltre alla flash occupata anche la Ram usata.
Con mio stupore la differenza di valori tra Uno e Mega e' molto alta, specialmente nella Ram che compilando solo su Mega farebbe credere che non entri quel programma nella Uno, invece poi compilando con la Uno ci entra.

1) Da dove deriva tale differenza, (che in parte e' anche sulla occupazione flash) ?
2) Quel valore di Ram occupata indica solo matematicamente quello occupato dalle var globali ?

Thanks  smiley

Mega
Quote
Sketch uses 24.288 bytes (9%) of program storage space. Maximum is 258.048 bytes.
Global variables use 2.313 bytes (28%) of dynamic memory, leaving 5.879 bytes for local variables. Maximum is 8.192 bytes.

Uno
Quote
Sketch uses 23.206 bytes (71%) of program storage space. Maximum is 32.256 bytes.
Global variables use 1.827 bytes (89%) of dynamic memory, leaving 221 bytes for local variables. Maximum is 2.048 bytes.
Low memory available, stability problems may occur
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Test, ogni volta che scegli una piattaforma, devi pensare che il compilatore ha a che fare con una MCU differente.

Ora, io non so né che programma hai compilato né che cosa fa quel software, per cui così ad occhio posso dirti che nel caso del MEGA devi ragionare con una MCU che usa 3 byte per gli indirizzamenti e che quindi quando salva lo stack deve mettere 3 byte per i salti. Poi lib che usano diverse capacità della CPU mettono anch'esse più o meno dati in memoria, per cui altri dati che vengono immagazzinati. Tieni poi conto della seriale, che sulla MEGA sono 2 per cui raddoppi anche i buffer e tutte le routine di gestione ecc...
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La MEGA ha 4 seriali, la Leonardo 2.  smiley-mr-green
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
God Member
*****
Karma: 9
Posts: 550
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusatemi, ma viene messo la parte per gestire le altre 3 seriali anche quando non le dichiaro nel programma?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, giusto.
Mi sono sbagliato. Quindi ancora più RAM occupata solo per quello.

@m_ri:
non tutto, ma una parte del codice c'è perché disassemblando uno sketch che usa solo 1 seriale trovo dei riferimenti anche ad altre seriali.
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La gestione delle SerialEvent si.
Poi se le dichiari il compilatore "sovrascrive" quelle vuote. --> http://www.html.it/pag/15502/l-overloading/
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5789
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie Leo,
compilando l'esempio Dimmer ufficiale, sotto communication, si nota proprio il discorso sulle seriali, la ram occupata e' molto di piu' anche senza usarle tutte.

Ma perche' poi addirittura l'occupazione di flash e' doppia ?  smiley-eek-blue

Uno
Quote
Sketch uses 2.250 bytes (6%) of program storage space. Maximum is 32.256 bytes.
Global variables use 187 bytes (9%) of dynamic memory, leaving 1.861 bytes for local variables. Maximum is 2.048 bytes.

Mega
Quote
Sketch uses 4.264 bytes (1%) of program storage space. Maximum is 258.048 bytes.
Global variables use 673 bytes (8%) of dynamic memory, leaving 7.519 bytes for local variables. Maximum is 8.192 bytes.

perche' questo comando non altera il calcolo della ram ?
Code:
inputString.reserve(200);

Che significa di preciso questo calcolo indicato dal'ide 1.5 ?
« Last Edit: September 13, 2013, 02:31:42 pm by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Indica lo spazio occupato dalle variabili inizializzate e non inizializzate (.data  e .bss)


--> http://www.nongnu.org/avr-libc/user-manual/malloc.html
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1]   Go Up
Jump to: