Sistemi integrati - Termini
Contatore di programma
Il Program Counter è un registro a 16 o 32 bit che contiene l'indirizzo della successiva istruzione da eseguire. Il PC passa automaticamente alla successiva posizione di memoria sequenziale ogni volta che viene caricata un'istruzione. Le operazioni di salto, salto e interruzione caricano il contatore del programma con un indirizzo diverso dalla posizione sequenziale successiva.
L'attivazione di un reset all'accensione causerà la perdita di tutti i valori nel registro. Significa che il valore del PC (contatore del programma) è 0 al reset, costringendo la CPU a recuperare il primo codice operativo dalla posizione di memoria ROM 0000. Significa che dobbiamo posizionare il primo byte dell'upcode nella posizione ROM 0000 perché è lì che il La CPU si aspetta di trovare la prima istruzione
Ripristina il vettore
Il significato del vettore di ripristino è che punta il processore all'indirizzo di memoria che contiene la prima istruzione del firmware. Senza il vettore di ripristino, il processore non saprebbe da dove iniziare l'esecuzione. Dopo il ripristino, il processore carica il Program Counter (PC) con il valore del vettore di ripristino da una posizione di memoria predefinita. Nell'architettura CPU08, si trova nella posizione $ FFFE: $ FFFF.
Quando il vettore di ripristino non è necessario, gli sviluppatori normalmente lo danno per scontato e non programmano nell'immagine finale. Di conseguenza, il processore non si avvia sul prodotto finale. È un errore comune che si verifica durante la fase di debug.
Stack Pointer
Lo stack è implementato nella RAM e viene utilizzato un registro della CPU per accedervi chiamato registro SP (Stack Pointer). Il registro SP è un registro a 8 bit e può indirizzare indirizzi di memoria compresi tra 00h e FFh. Inizialmente, il registro SP contiene il valore 07 per puntare alla posizione 08 come prima posizione utilizzata per lo stack dall'8051.
Quando il contenuto di un registro della CPU viene memorizzato in uno stack, viene chiamata operazione PUSH. Quando il contenuto di uno stack viene memorizzato in un registro della CPU, viene chiamata operazione POP. In altre parole, un registro viene inserito nello stack per salvarlo e estratto dallo stack per recuperarlo.
Ciclo infinito
Un ciclo infinito o un ciclo infinito può essere identificato come una sequenza di istruzioni in un programma per computer che viene eseguito all'infinito in un ciclo, per i seguenti motivi:
- loop senza condizioni di terminazione.
- loop con una condizione di terminazione che non può mai essere soddisfatta.
- ciclo con una condizione di terminazione che fa ricominciare il ciclo.
Tali loop infiniti normalmente impedivano ai sistemi operativi più vecchi di non rispondere, poiché un loop infinito consuma tutto il tempo disponibile del processore. Le operazioni di I / O in attesa degli input dell'utente sono anche chiamate "cicli infiniti". Una possibile causa del "blocco" di un computer è un ciclo infinito; altre cause includonodeadlock e access violations.
I sistemi integrati, a differenza di un PC, non "chiudono" mai un'applicazione. Restano inattivi in un ciclo infinito in attesa che si verifichi un evento sotto forma di interruzione opre-scheduled task. Per risparmiare energia, alcuni processori entrano in specialesleep o wait modes invece di girare al minimo attraverso un ciclo infinito, ma usciranno da questa modalità su un timer o su un interrupt esterno.
Interrompe
Gli interrupt sono principalmente meccanismi hardware che indicano al programma che si è verificato un evento. Possono verificarsi in qualsiasi momento e sono quindi asincroni rispetto al flusso del programma. Richiedono una gestione speciale da parte del processore e vengono infine gestiti da una routine di servizio interrupt (ISR) corrispondente. Le interruzioni devono essere gestite rapidamente. Se impieghi troppo tempo a gestire un'interruzione, potresti perdere un'altra interruzione.
Little Endian contro Big Endian
Sebbene i numeri siano sempre visualizzati nello stesso modo, non vengono memorizzati nello stesso modo in memoria. Le macchine Big-Endian memorizzano il byte di dati più significativo nell'indirizzo di memoria più basso. Una macchina Big-Endian memorizza 0x12345678 come -
ADD+0: 0x12
ADD+1: 0x34
ADD+2: 0x56
ADD+3: 0x78
Le macchine Little-Endian, invece, memorizzano il byte di dati meno significativo nell'indirizzo di memoria più basso. Una macchina Little-Endian memorizza 0x12345678 come -
ADD+0: 0x78
ADD+1: 0x56
ADD+2: 0x34
ADD+3: 0x12