MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

 

Gonk è la componente di più basso livella della piattaforma Firefox OS, composta da un kernel Linux basato sull'Android Open Source Project (AOSP) e il livello di astrazione hardware dell'userspace (HAL, Hardware Abstraction Layer). Lo scopo di questo articolo è illustrare le componenti di Gonk, per maggiori informazioni sull'architettura di Firefox OS e su quale sia il ruolo di Gonk nel sistema, è possibile leggere la guida sull'architettura di Firefox OS.

Visione d'insieme di Gonk

Gonk è il livello più basso (Kernel) dello stack di Firefox OS che funge da interfaccia tra Gecko e l'hardware, controllando quest'ultimo e rendendo disponibili le funzionalità hardware alle API Web implementate in Gecko. Gonck può essere visto come la "scatola magica" che si occupa di tutto il complesso lavoro necessario per il controllo del dispositivo a livello hardware.

Gonk è una distribuzione Linux minimale che include alcuni componenti di Android, come la fotocamera e il GPS, ed è esteso da Mozilla sfruttando progetti open source come libusb, bluez, e altri. Questa struttura rende semplice il porting da parte degli OEM di componenti già disponibili per altrte implementazioni Android (come i driver, il firmware, i demoni del livello service) su dispositivi Firefox OS.

Gonk è la destinazione del porting di Gecko, così come lo sono anche OS X, Windows e Android.

Note: Siccome i diversi dispositvi disponibili possono avere chipset e specifiche hardware differenti anche le distribuzioni di Gonk possono variare.

Dato che il progetto Firefox OS definisce Gonk, sono disponibili interfacce per Gecko che non sono disponibili su sistemi operativi differenti; per esempio Gecko dispone dell'accesso diretto alla parte telefonica e al buffer del display.

Architettura di Gonk

Ogni diverso dispositivo ha una combinazione di Gonk creata ad-hoc per il suo hardware e contenente librerie di sistema, driver e componenti del firmware richieste per il funzionamento del sistema operativo e delle altre componenti hardware. Queste componenti sono determinate dagli OEM in collaborazione con gli sviluppatori del chipset e con gli ODM. L' immagine seguente mostra un' esempio di implementazione di Gonk.

Questo esempio mostra i seguenti componenti principali (che rappresentano solo una porzione di tutti i possibili componenti presenti nelle implementazioni di Gonk):

  • Kernel Linux: Usa le librerie di android (GPS, Camera, ecc.) e di altri progetti open source (Linux, libusb, bluez e così via).
  • Radio Interface Layer (RIL): Interagisce con il modem (hardware telefonico) dei telefoni. Consiste di due componenti:
    • demone rild: Interagisce con il firmware del modem.
    • rilProxy: Fa da proxy tra i messaggi di rild e tra il processo b2g.
  • Processo mediaserver: Consente la riproduzione audio e video. Gecko comunica con il mediaserver attraverso il meccanismo Android RPC.
  • Processo netd: Il demone di rete che interagisce direttamente con le interfacce di rete (Wi-Fi) dell'hardware.
  • Bluetooth, ecc: Bluetooth e altri demoni service-level consentono l'accesso alle funzionalità hardware.

Gonk inoltre avvia, gestisce e spenge il processo b2g, che è il layer Gecko di Firefox OS. Il processo b2g si comporta come un client per i demoni esposti da Gonk; questi interagiscono direttamente con l'hardware ed espongono a Gecko le funzioni hardware del telefono. Gecko comunica con questi demoni attraverso una il protocollo IPC. Questi componenti si scambiano comandi e protocolli per richiedere e fornire servizi. 

Note: Per ulteriori informazioni riguardo l'architettura Gonk vedere la guida all' architettura di Firefox OS.

Effettuare il porting di Gonk

Siccome Firefox OS è basato sul kernel di Android, effetturare il porting di firmware, driver, demoni di servizio e di altri componenti verso Firefox OS richiede poco sforzo. Se un componente custom (ad esempio un modulo RIL od un nuovo demone) è necessario, oppure se è necessaria una modifica al reference design dell' ODM, ulteriori integrazioni e test potrebbero rivelarsi necessari.

In b2g i client comunicano con un demone di sistema tramite una il protocollo IPC. Il client avvia una connessione tramite socket verso il demone, invia la richiesta (utilizzando il protocollo di richiesta del server) tramite la stessa connessione, riceve la risposta e chiude la connessione. Gli OEM sono responsabili per la struttura e per l'implementazione della comunicazione inter-processo tra client e server.

Note: per ulteriori informazioni riguardo il funzionamento del processo di porting vedere Porting di Firefox OS.

Come Mozilla lavora sui porting di Gonk insieme agli OEM e ai produttori di telefoni

Ogni implementazione di Gonk è il risultato della collaborazione di Mozilla, gli OEM e relativi produttori di componenti (ODM, produttori di chipset).

Mozilla rende disponibile il codice ed i file di supporto a Gonk necessari per l'implementazione in Firefox OS e per la sua distribuzione. Le repository comprendono il kernel Linux (con pochi cambiamenti) e aggiunte per il funzionamento con Gecko.

Gli OEM sono responsabilii per la creazione, compilazione, testing, certificazione e distribuzione dell'immagine di Firefox OS per uno specifico dispositivo. Per quanto riguarda la versione di Gonk di queste immagini di Firefox OS gli OEM sono responsabili per la maggior parte degli sforzi al fine di garantire la compatibilità tra le chiamate delle Web API e le funzioni dell'hardware del dispositivo. Il tipo e lo scopo dello sforzo richiesto è fortemente dipendente dallo specifico chipset utilizzato nel telefono (e dagli altri componenti).

Componenti del dispositivo

Gli OEM collaborano con i produttori del chipset e con gli ODM per rendere disponibili tutti i componenti relativi allo specifico dispositivo, al fine di far funzionare correttamente il sistema operativo. Per esempio, il produttore della scheda Wi-Fi dovrebbe fornire il chipset e il software affiliato. Questi componenti possono includere:

  • Driver - Per le funzionalità telefoniche, come modem (dati e voce), Wi-Fi, Bluetooth, display, fotocamera, audio e così via.
  • Firmware - Qualche componente (ad esempio la scheda di rete) potrebbe caricare il firmware tramite la memoria flash.
  • Demone di sistema - Per l'invocazione e la gestione di vari componenti hardware. Questo include supporto per librerie e script di avvio.

Integrazione tra Gonk e Gecko

Gli OEM devono assicurare che le funzionalità hardware del dispositivo mobile siano correttamente e completamente aperte alle implementazioni per le Web API di Gecko. Questo prevede:

  • Costruire o adattare (in Gonk) i demoni di sistema assieme ai driver associati o al firmware per gestire le funzionalità hardware.
  • Impostare (in b2g) tutti i metodi richiesti per la comunicazione tra i demoni di sistema.

Codice sorgente di Gonk

Il repository principale di B2G su Github contiene il progetto supportato per i port di Gonk su vari terminali. Lo si può quindi considerare come il repository di Gonk. La lista dei terminali supportati è disponibile nel file B2G/config.sh.

La maggior parte del lavoro quotidiano su Gonk consiste nel porting del sistema su diverse piattaforme e nell'assicurarsi che Gecko funzioni bene su questi terminali.

 

Tag del documento e collaboratori

 Hanno collaborato alla realizzazione di questa pagina: chrisdavidmills, EdoPut, Redsnic, Lorenzo_FF, klez
 Ultima modifica di: chrisdavidmills,