Le variabili globali in sistemi embedded

B

bharaths_jois

Guest
Prendiamo in considerazione un sistema embedded, il cui software è costituito da variabili globali. Q1) Qual è lo spazio allocato per le variabili globali? Se la RAM, si prega di specificare quale sezione di RAM. Q2) Una variabile locale viene creata e occupa la memoria quando la portata del programma in cui è dichiarata la variabile è in esecuzione. A destra:?: Allo stesso modo, quando le fa le variabili globali occupano la memoria? Grazie in anticipo saluti, Bharath
 
[Quote = bharaths_jois] Si consideri un sistema embedded, il cui software è costituito da variabili globali. Q1) Qual è lo spazio allocato per le variabili globali? Se la RAM, si prega di specificare quale sezione di RAM. [/Quote] Le variabili globali (per quella materia qualsiasi variabile) viene assegnato dalla RAM. Per le variabili del compilatore gcc non inizializzate andrà. Sezione BSS e le variabili inizializzate va. Sezione dati. I nomi di sezione varia in base al compilatore. [Quote = bharaths_jois] Q2) Una variabile locale viene creata e occupa la memoria quando la portata del programma in cui è dichiarata la variabile è in esecuzione. A destra:?: [/Quote] Il suo corretto, per essere precisi sono assegnati dallo stack. [Quote = bharaths_jois] Allo stesso modo, quando le fa le variabili globali occupano la memoria? [/Quote] Lo spazio per le variabili globali è riservata al momento della compilazione stessa. Durante il caricamento del programma di codice di avvio c farà in modo che lo spazio riservato è inizializzato correttamente.
 
Grazie. Andare avanti con questo, ho imparato che una copia di ciò che ha mai andare la RAM sarà nel file hex e, quindi, nella ROM. E il codice di avvio, che viene eseguito durante l'avvio della modalità di applicazione del sistema copierà il contenuto della ROM di superficie adeguata di RAM, è questo diritto?
 
Questo è corretto, ma per inizializzato hex file di variabili contiene solo informazioni sul numero di byte deve essere allocata nella RAM. Così codice di avvio che si riserva molto spazio e riempire l'area con tutti zeri. Per inizializzata hex variabile contiene i dati inizializzati e con dimensioni nel caso codice di avvio consentono di copiare i dati da un file hex (ROM) a RAM.
 
Grazie ancora. Come l'uso di qualsiasi classe di memoria decidere lo spazio in cui la variabile sarebbe andato? Anche utilizzando un const, come sarebbe questo importa? Dove vanno queste variabili (globale e locale)? vale a dire dove sarebbe un sit const globale e dove sarebbe un const locale sedere?
 
Le costanti sono sempre memorizzati nella ROM / FLASH indipendentemente dal fatto che sono locali o globali, tuttavia il compilatore si occuperà di limitare il campo di applicazione costanti locali. Non possibile per discutere l'attuazione delle costanti, in generale, in quanto dipende da famiglia di processori individuale e compilatori.
 
Per gcc compilatore tutte le variabili globali e statiche vengono memorizzate in datasement. se la variabile viene inizializzata quindi tale variabile rientra nella categoria di IDS (segmento di dati inizializzato). Se la variabile non è inizializzata quindi tale variabile rientra nella categoria di UID (Un segmento di dati inizializzata).
 
Con qualsiasi compilatore, è possibile ottenere informazioni sulla configurazione della memoria e la posizione di variabili specifiche, ad esempio i file di mappatura. Poiché non esiste un sistema di destinazione o del compilatore è stato detto nella domanda originale, mi piace ricordare, che molte cose ha detto nel corso della discussione, probabilmente maggio essere errato. E. g. per un processore con una pila separata dai dati spazio (8051 o PIC), variabili locali in genere non si trovano sulla pila.
 

Welcome to EDABoard.com

Sponsor

Back
Top