Come funziona il processo di avvio di Android?
Il processo di avvio di Android dall'accensione
Poiché le piattaforme mobili e i sistemi embedded hanno alcune differenze rispetto ai sistemi desktop nel modo in cui si avviano e si avviano inizialmente questo post discuterà le fasi iniziali di avvio di un telefono Android in alcuni dettagli. Dato che abbiamo usato la Beagle Board come riferimento in alcuni esempi precedenti, tutte le specifiche qui sono relative a un sistema simile.
1. Accensione ed esecuzione del codice ROM di avvio
All'accensione la CPU sarà in uno stato in cui non sono state fatte inizializzazioni. Gli orologi interni non sono impostati e l'unica memoria disponibile è la RAM interna. Quando le alimentazioni sono stabili l'esecuzione inizierà con il codice della Boot ROM. Questo è un piccolo pezzo di codice che è hardwired nella CPU ASIC. Per maggiori informazioni sulla ROM di avvio e sulle configurazioni, studiate il capitolo sull'initalizzazione in
il TRM dell'Omap 3530.
- A. Il codice della Boot ROM rileverà il supporto di avvio usando un registro di sistema che mappa alcune sfere fisiche sull'asic. Questo serve a determinare dove trovare il primo stadio del boot loader.
- B. Una volta stabilita la sequenza del supporto di avvio, la ROM di avvio cercherà di caricare il primo stadio del boot loader nella RAM interna. Una volta che il boot loader è in posizione il codice della ROM di avvio eseguirà un salto e l'esecuzione continuerà nel boot loader.
- **2. Il boot loader
Il boot loader è un programma speciale separato dal kernel Linux che viene utilizzato per impostare le memorie iniziali e caricare il kernel nella RAM. Sui sistemi desktop i boot loader sono programmi come GRUB e in Linux embedded uBoot è spesso il boot loader di scelta. I produttori di dispositivi spesso usano i loro boot loader proprietari. I requisiti di un boot loader per Linux che gira su un sistema ARM possono essere trovati nel documento Booting sotto /Documentation/arm nell'albero dei sorgenti del kernel.
- A. Il primo stadio del boot loader rileverà e imposterà la RAM esterna.
- B. Una volta che la RAM esterna è disponibile e il sistema è pronto per eseguire qualcosa di più significativo, il primo stadio caricherà il boot loader principale e lo collocherà nella RAM esterna.
- C. Il secondo stadio del boot loader è il primo programma principale che verrà eseguito. Questo può contenere codice per impostare file system, memoria aggiuntiva, supporto di rete e altre cose. Su un telefono cellulare può anche essere responsabile del caricamento del codice per la CPU del modem e dell'impostazione delle protezioni di basso livello della memoria e delle opzioni di sicurezza.
- D. Una volta che il boot loader ha finito qualsiasi compito speciale, cercherà un kernel Linux da avviare. Lo caricherà dal supporto di avvio (o da qualche altra fonte a seconda della configurazione del sistema) e lo metterà nella RAM. Metterà anche alcuni parametri di avvio in memoria affinché il kernel li legga quando si avvia.
- E. Una volta che il boot loader ha finito, esegue un salto al kernel Linux, di solito qualche routine di decompressione, e il kernel assume la responsabilità del sistema.
Articoli simili
- Dove ha sbagliato Intel nello sviluppo del processo a 10nm, perché ci vuole troppo tempo perché Intel perfezioni il suo processo a 10nm?
- Netflix non funziona sulla mia Apple TV nel 2021. Esce subito dopo l'avvio. Hai qualche idea?
- Come rendere l'avvio del vostro dispositivo Android più veloce
- Non posso entrare nel mio Facebook e il processo di recupero non funziona perché non ricordo la password. Cosa devo fare?