Domanda

Non ho a testare un codice di basso livello su un'architettura ARM. In genere la sperimentazione è abbastanza complicato sul tavolo reale, quindi stavo pensando di QEMU.

Quello che mi piacerebbe ottenere un qualche tipo di informazioni di debug come printfs o gdb. So che questo è semplice con Linux dal momento che implementa sia il driver di periferica per la QEMU Integrator e la caratteristica gdb, ma io non sto lavorando con Linux. Inoltre ho il sospetto che l'estrazione di questo tipo di funzionalità dal codice sorgente del kernel di Linux sarebbe complicato.

sto cercando da un po 'di semplice del sistema operativo che già implementa una di quelle caratteristiche. Avete qualche consiglio?

È stato utile?

Soluzione

Non hai bisogno di un sistema operativo di destinazione per il debug del codice che è in esecuzione all'interno di QEMU -. QEMU già fa per voi

In particolare, supporti QEMU debug remoto da GDB - è possibile eseguire QEMU con le opzioni della riga di comando appropriate ed esportare un'interfaccia che una copia di GDB (in esecuzione sulla macchina host) può collegarsi a. A quel punto, è possibile eseguire il debug del programma nel GDB praticamente proprio come se si stesse eseguendo sulla macchina host.

http://wiki.osdev.org/GDB sembra avere le informazioni un po 'più di base; forse non abbastanza per tutto iniziare, ma almeno si dà l'idea di base e alcuni termini da cercare nella documentazione QEMU e GDB. Saltare il bit su "Implementazione GDB Stub", che non si applica qui dal QEMU ha già uno, e iniziare la sezione su "Utilizzo emulatore Stub". La forma breve è semplicemente che si avvia QEMU con l'opzione -s (esportare una connessione GDB su localhost: 1234) e l'opzione -S (attesa per un GDB "Continue" comando prima di avviare l'esecuzione), e poi in GDB sul vostro ospite che dici target remote :1234 invece di run. Inoltre, naturalmente, è necessario utilizzare una versione ARM di GDB piuttosto che un nativo-x86.

(Inoltre, se siete disposti a pagare per una soluzione commerciale, ARM toolchain di CodeSourcery ha l'integrazione IDE per impostare tutto questo automaticamente, incluso il supporto per "printf" per stampare nella console debugger. Che funziona su una scheda fisica, anche se hai un debugger hardware diniego abituale di me di essere un dipendente di CodeSourcery applica -.. ma io trovo molto facile da usare)

Aggiornamento 2012:. toolchain di CodeSourcery è ora chiamato Mentor Graphics Sourcery CodeBench, ma tutte le applica sopra ancora

Altri suggerimenti

Mi rendo conto che mi rivolgo il problema originale qui piuttosto che la vostra soluzione proposta (forse è meglio?), Ma di utilizzare GDB (o Insight / GDB) direttamente sul bersaglio, utilizzare uno strumento a basso costo JTAG e OpenOCD . Un esempio di tale set-up e come implementare lo si può trovare qui .

Se avete un budget più grande, un debugger JTAG più completamente descritto può essere utile, come ad esempio la Abatron BDI3000 con bdiGDB firmware che permette a distanza il debug e il dispositivo di programmazione tramite Ethernet con gDB e nessun driver speciali o agente di destinazione di debug.

Forse un microkernel come OKL4 sarebbe adatto alle tue esigenze?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top