Esiste un modo per simulare un programma eseguito prima di masterizzarlo sulla scheda?


24

A volte i programmi possono presentare errori di runtime. A volte sono difficili da trovare e possono essere facilmente persi. Esiste un modo per testare il programma prima di masterizzarlo effettivamente sulla scheda?


Potrebbe essere correlato a arduino.stackexchange.com/q/84/25
powtac


Potresti avere il problema che l'errore si verifica solo su un Arduino fisico (non potrei fare un esempio, però).
Polar

@Polar In termini di logica del programma, non riesco a immaginare come. Potresti forse pubblicare qualche esempio?
asheeshr,

Risposte:


19

Esistono alcuni progetti di Arduino Simulator.

Forse uno dei più maturi è il Virtronics Simulator per Arduino , il video di YouTube qui .

Virtronics Arduino Simulator

La pagina Virtronics collegata sopra elenca anche alcuni altri simulatori Arduino, sia gratuiti che a pagamento.

Dato l'interesse che Arduino suscita, è probabile che ci siano molti più simulatori simili là fuori, quindi non ha senso cercare di elencarli tutti in una risposta qui.

Ciò che vale la pena notare è che esiste anche un'app per iPhone Arduino Simulator : questa non è una raccomandazione, non l'ho ancora vista in funzione.


In una nota a margine:

L'Arduino è di per sé una scheda di prototipazione / sperimentazione. È ideale per programmare codice sperimentale, eseguirne il debug, modificare e quindi riprogrammare il nuovo codice, praticamente tutte le volte che si desidera . Se il codice si blocca, ripristina e riflash con eventuali modifiche.

Pertanto, il merito di usare un simulatore, che non può mai emulare perfettamente i vari tempi del mondo reale o altri problemi che un'applicazione potrebbe dover affrontare, è discutibile.

Se il costo di Arduino è la preoccupazione, ci sono un paio di opzioni aperte:

  • Arduino Nano economico clona da eBay - Ho diverse schede Meduino Nano Enhancement , funzionano in modo eccellente e hanno un prezzo inferiore a $ 10 inclusa la spedizione in tutto il mondo: Miglioramento Meduino Nano
  • Crea il tuo Arduino - Il sito Arduino ti guida attraverso la creazione di uno su una breadboard , che non ha nemmeno bisogno di te per saldare nulla!

Grazie per aver condiviso il link al Virtronics Simulator!
powtac,

Sì, è molto più facile eseguire il debug e il reflash. Il flash ATMega328 è valutato a 10000 cicli di riscrittura, quindi anche se lo riscrivi 10 volte ogni singolo giorno ti diverti più di due anni prima :-) Abbastanza divertente per un hobbista. Se ti interessa solo un po 'di più, puoi usare schede più recenti per eseguire il debug e quando iniziano a consumarsi (diciamo dopo 5000 cicli?) Puoi usarle per applicazioni stabili e acquistarne una nuova per il debug.
Lorenzo Donati supporta Monica il

8

È possibile trovare errori di runtime se è possibile scorrere manualmente il programma con Arduino collegato ed eseguire il debug ( dopo aver scaricato il codice su Arduino). Questo è disponibile in Visual Micro sebbene richieda Visual Studio. È possibile impostare i punti di interruzione, valutare le variabili e modificare i valori delle variabili. È inoltre possibile ottenere la visualizzazione della memoria nel tempo:

inserisci qui la descrizione dell'immagine


Molto pulito. Quanto è maturo questo progetto - o, piuttosto, questo IDE ha funzionato senza intoppi nella tua esperienza?
boardbite

Non l'ho usato per la profilazione, e l'ho usato solo brevemente, ma si integra abbastanza bene e funziona bene per me. Apprezzo molto la possibilità di eseguire il debug senza ricorrere a Serial.print

4

Un modo per farlo sarebbe quello di creare un programma wrapper per il codice effettivo che simuli tutti gli input e accetti gli output (creando così un loop di feedback) come per l'ambiente reale. Ciò richiederebbe un impegno variabile a seconda del tipo di programma, del grado di test e del numero di input.

Tieni presente che durante la scrittura del programma wrapper, dovresti seguire un approccio black-box .

inserisci qui la descrizione dell'immagine

In caso contrario, il codice esterno non può testare il programma nel miglior modo possibile come tenendo presente il codice vero e proprio durante la creazione del codice di prova potrebbe pregiudizi di ignorare i casi limite o aree problematiche (Questo è stato osservato per accadere mentre si fa white-box test che è l'alternativa).


Conosci qualche esempio? La maggior parte del codice Arduino che ho visto manca di test unitari adeguati anche per le parti che non richiedono input / output.
Jakob,

@Jakob Di solito scrivo il mio codice per i test. È pratico per piccoli progetti.
asheeshr,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.