Table of Contents Table of Contents
Previous Page  62 / 84 Next Page
Information
Show Menu
Previous Page 62 / 84 Next Page
Page Background

EMBEDDED

MAGGIO

62

SOFTWARE

|

HYPERVISOR

per il cruscotto manda un segnale via hypervisor

al guest che gestisce il condizionamento, il quale

accenderà il riscaldamento.

Impatto dell’hypervisor sui debugger

Finora tutto bene, ma cosa succede se durante la

fase di sviluppo il sistema non si comporta come

previsto? Ad esempio se la procedura che dovreb-

be segnalare l’allarme non si attiva, o se il siste-

ma di condizionamento non capisce cosa vuole

l’automobilista? Per trovare la malfunzione è ne-

cessario esaminare il software con un debugger.

In teoria ci sono due modalità di debug: il debug-

ging “run mode” controllato a software e quello

“stop mode” controllato ad hardware.

Il metodo di debug run mode comporta il carica-

mento nel sistema di un software di debug aggiun-

tivo (ad esempio “gdbserver” per processi Linux)

che si occupa del debug effettivo.

L’avanzamento a step singoli, i bre-

akpoint ecc., sono tutti gestiti da

questa unità software, chiamata

!% + À

debugger sul computer di sviluppo

comunica con l’agent, tipicamente

via interfaccia seriale o Ethernet.

Per essere sicuri che tutto funzioni

vengono fermati solo i componenti

sotto debug, ad esempio un proces-

so Linux. Il resto del sistema con-

tinua a girare, per questo motivo

viene chiamato run mode. Il siste-

ma deve continuare a girare per

garantire che la comunicazione con

il debugger rimanga attiva.

Questo tipo di sessione di debug ha

bisogno solo di un opportuno cana-

le di comunicazione. Se al livello

più basso è presente un hypervisor,

il canale viene semplicemente ruotato attraverso

di esso (Figura 3). Non appena questo percorso è

stabilito, né il debugger né tantomeno l’agent sono

consapevoli della presenza dell’hypervisor nel

mezzo, cioè il debug avviene in modo “hypervisor

agnostic”. Questo metodo è perfetto se il sistema

deve continuare l’esecuzione durante il debug, ad

esempio per mantenere attivi dei protocolli di co-

% ˜

À

delle funzioni di un processo o in caso di processi

all’interno di una stessa macchina. Ma questo me-

todo rivela i suoi limiti quando si entra nel merito

dei driver (moduli di Linux), specialmente quando

l’utente deve uscire dalla macchina virtuale e sono

coinvolti altri guest o l’hypervisor. Se c’è un errore

nel segnale di allarme al di fuori del processo nella

suddetta catena di eventi, si rende quindi necessa-

rio un altro metodo di debug.

Fig. 3 – Debug “run mode” con gdbserver

Fig. 4 – Debugger JTAG con sistema target. Questo è il modo in cui un

debugger hardware si collega a un sistema target