Nuovo utente - M0 PRO o altro?

Buona sera a tutti

Premesso che mi sto affacciando ad arduino per la prima volta, anche se qualche esperienza universitaria con microcontrollori/fpga l'ho avuta.

Tempo fa sono venuto il possesso di tale board, poi un po' per una cosa un po' per l'altra è caduta nel dimenticatoio. Ora mi sono rimesso in testa di farmi un po' di cosette con il fai da te elettronico e volevo ricominciare.

Premesso che ho comprato anche un kit da smanettone che ha al suo interno un arduino uno, ma l'idea di programmare senza una interfaccia di debug non è che mi ispiri molto, anche solo avere uno o due breakpoint in giro per capire cosa sto combinando mi farebbe comodo. E qui torno su quel M0 pro, che ho scoperto che nel frattempo è nato da una branca non ufficiale, scomparsa (non mi interessa molto a questo punto la storia). In ogni caso l'ho, si interfaccia a fatica con la IDE arduino, ho letto che devo riscrivergli il bootloader, la ide ufficiale non lo fa, atmel studio mi da errori strani di "unsopported format". Onestamente non ci sto capendo nulla.

La mia domanda a questo punto è: è uscita in questi anni una nuova board che mi consenta di fare uno sviluppo e debug decente, anche comprando jtag a parte? Mi conviene spostarmi su altri lidi? C'è un terzo programma che dovrei provare ad usare? Mi conviene provare ad utilizzare la IDE linux (ho letto che il termine riga è diverso e magari il problema potrebbe essere quello).

Grazie in anticipo per le vostre risposte

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Fatto

poggiaus:
l'idea di programmare senza una interfaccia di debug non è che mi ispiri molto, anche solo avere uno o due breakpoint in giro per capire cosa sto combinando mi farebbe comodo.

Se ti serve questo, puoi registrati un account gratuito su TinkerCad che ha una sezione di circuiti dove puoi "disegnare" il tuo prototipo con i vari componenti, breadboard, testter, eccetera, incluso ovviamente Arduino, e lanciare lì la simulazione nella quale hai il debug con un suo monitor seriale (anche grafico) e soprattutto con breakpoint e visualizzazione del contenuto delle variabili.
Ha ovviamente anche qualche limite, ossia non puoi usare componenti non previsti dalla biblioteca dell'emulatore o caricare librerie diverse da quelle già presenti, ma per iniziare va più che bene, e, entro quei limiti che ho descritto, va bene anche successivamente perché oltre all'emulazione del circuito (quindi puoi "premere" col mouse i pulsanti, vedere i LED che si accendono, leggere il contenuto di un display LCD, eccetera...) la compilazione del codice è praticamente identica a quella che hai sul tuo PC, ed in alcuni casi ti evita di dover costruire fisicamente un prototipo solo per verificare che un certo algoritmo ti funzioni correttamente.

E qui torno su quel M0 pro, che ho scoperto che nel frattempo è nato da una branca non ufficiale, scomparsa (non mi interessa molto a questo punto la storia). In ogni caso l'ho, si interfaccia a fatica con la IDE arduino, ho letto che devo riscrivergli il bootloader, la ide ufficiale non lo fa, atmel studio mi da errori strani di "unsopported format". Onestamente non ci sto capendo nulla.

Se il tuo scopo è un ambiente con debug, e ti bastano le sue limitazioni, lascia stare cose di quel tipo che ti complichi la vota, risolvi semplicemente con TinkerCad.

Il problema è che appena mi trovo con un componente non standard, o comunque con la comunicazione con un altro sistema mi trovo fregato. Preferirei avere una piattaforma di debug fisica, dove posso andare a inserire breakpoint e valutare le variabili in quei punti

Premesso che la "M0 Pro" è tra le schede "Retired" e che non so in quanti la conoscono o in quanti possono aiutarti, comunque, un piccola serie di informazioni si trova QUI.

Per il bootloader non credo tu possa riprogrammarlo ... ma non avendola mai usata non posso essere più preciso.

La UNO è invece tranquillamente supportata da Atmel Studio (che sta andando a morire, in favore di Microchip MPLAB X) dove è possibile anche fare il debug (ovviamente occorre uno strumento che supporti tale funzione, es. Atmel ICE).

Guglielmo

Beh, passare da una schedina da 50 euro che prometteva di fornire un, seppur modesto, ambiente di sviluppo ad un dispositivo di debugging da uno/due centinaia di euro (Atmel ICE) mi fa riconsiderare l'idea di usare Arduino o, quantomeno, guardare su altri fronti.

Per un minimo di debug puoi usare la seriale.
Di solito ci facciamo tutto :slight_smile:

poggiaus:
Beh, passare da una schedina da 50 euro che prometteva di fornire un, seppur modesto, ambiente di sviluppo ad un dispositivo di debugging da uno/due centinaia di euro (Atmel ICE) mi fa riconsiderare l'idea di usare Arduino o, quantomeno, guardare su altri fronti.

Non so cosa pensavi di fare con Arduino, ma non usarlo solo perchè il suo free ide non permette il debugging avanzato, mi sembra alquanto esagerato!
Sviluppo software da più di trent'anni (svariati linguaggi, molti di scripting), uso Arduino da qualche mese ed onestamente, passato l'impatto iniziale, non sento tutta questa necessità.
Chiaramente se potessi piazzare qualche breakpoint o verificare al meglio variabili e stati, sarei contentissimo, ma si puo' fare tranquillamente in altro modo, come si è sempre fatto fino a qualche anno fa, quando per fare il debug in javascript, si poteva mettere solo qualche alert qui e la, o fare il debug in TSQL era impossibile.
Voglio dire, se si riusciva a fare il debug di migliaia di righe, senza un ambiente avanzato, allora si puo' fare anche con qualche centinaio di righe e qualche manciata di variabili, non credi? :slight_smile:

Federico

tonioB:
Per un minimo di debug puoi usare la seriale.
Di solito ci facciamo tutto :slight_smile:

Concordo. Non è sicuramente la stessa cosa di avere breakpoint (magari condizionali) e variable watch, ma è quanto facciamo un poco tutti. A volte uso anche un display LCD I2C.
Ma per testare alcune routine uso anche io stesso TinkerCad, non c'è generalmente bisogno di simulare l'intero hardware (a meno che non sia tra quello previsto dall'emulatore), ed in alcuni casi più estremi che include anche problemi hardware (cosa che non puoi "simulare") si torna al semplice Serial.print() oppure mostro i valori chiave su LCD (magari solo alla pressione di un pulsante), oppure faccio un programmino che logga i dati e li scrive su SD..

poggiaus:
… un dispositivo di debugging da uno/due centinaia di euro (Atmel ICE) mi fa …

Beh … “fare le nozze coi fichi secchi” non va mai bene … tu chiedi un VERO strumento di debug e allora tocca anche che lo paghi. Pova a guardarti in giro e vedi i costi dei vari programmer/debugger degni di tale nome e ti accorgerai che in ambito Microchip/Atmel, Atmel ICE è anche piuttosto economico.

Accostati a SEGGER e vedi quanto costano i vari J-link :smiley:

Guglielmo

P.S.: E comunque, in ambito Arduino, come ti hanno già indicato, tutti hanno sempre fatto il debug con una manciata di Serial.println() sparse qua e là … non sarà il massimo, ma va benone :wink:

gpb01:
... "fare le nozze coi fichi secchi" ...

Sai che non conoscevo questo proverbio :slight_smile:
Utile a sapersi, grazie :wink:

Federico

gpb01:
fare le nozze coi fichi secchi

Io le ho fatte con le lumache... :-[ e andavano a ruba :wink:

Intervengo perchè ho una curiosità: ma questi ambienti che ti consentono di fare il debug avanzato, riescono anche a fartelo fare su comunicazioni real time? Ad es. farti debuggare l'elaborazione di un segnale in ingresso da un sensore? Si salvano i dati e te li ripropongono con calma durante il debug?
Mi immagino situazioni anche complesse dove l'interazione real time influisce sul risultato...

Sono curioso perchè non mi sono mai posto ancora il problema e vorrei capire eventuali limiti di questi strumenti.

Comunque, se posso dire la mia, tornare a fare il debug con le Serial.print, da un lato è una palla, dall'altro ti costringe a ragionare di più tendendo a farti scrivere software più corretto da subito invece che farti propendere per software quick and dirty da aggiustare poi con il debug.
A me ha fatto questo effetto.
Lo ammetto sono pigro e mi ero lasciato un po' andare... Arduino mi sta facendo tornare sulla retta via :wink:

maubarzi:
...
A me ha fatto questo effetto.
Lo ammetto sono pigro e mi ero lasciato un po' andare... Arduino mi sta facendo tornare sulla retta via :wink:

Confermo, lo stesso vale per me...
... pur di non ricompilare, si sta più attenti a quello che si scrive :slight_smile:

Federico

maubarzi:
… ma questi ambienti che ti consentono di fare il debug avanzato, riescono anche a fartelo fare su comunicazioni real time? Ad es. farti debuggare l’elaborazione di un segnale in ingresso da un sensore? Si salvano i dati e te li ripropongono con calma durante il debug?

… li andiamo su software di cattura e debbugger piuttosto costosetti … parlaimo di alcune migliaia di EURO … ma si, è possibile ed è normalmente usato anche per fare il debug di sistemi RTOS.

Un ottimo prodotto in tale ambito (debug/cattura RTOS) è Tracealyzer … estremamente potente, ma anche piuttosto complesso da usare (io lo utilizzo in ambito Microchip PIC32).

Guglielmo

Quindi catturano e riproducono con corretta temporizzazione in base all'avanzamento di debug.
Di fatto è una piena virtualizzazione e/o simulazione dell'esecuzione.
Ma è basato sul cip reale oppure è tutto "simulato"?
Se si usa il cip reale, va comunque compilato con adattamenti per il debug, quindi dovrebbe inserire un minimo di rallentamento nell'esecuzione.

maubarzi:
Se si usa il cip reale, va comunque compilato con adattamenti per il debug, quindi dovrebbe inserire un minimo di rallentamento nell'esecuzione.

Per i chip "seri" la cosa è già prevista nell'hardware (spesso esiste lo stesso chip senza/con una sezione HW in più dedicata al "trace") e non hai rallentamenti :wink:

Nel caso di RTOS inoltre la MCU NON è mai utilizzata al 100% (anzi, NON lo deve assolutamente essere) quindi ... può fare tante altre cosette nei tempi morti :smiley:

Guglielmo

denghio :wink:

Un'altra possibilità è di sviluppare prima le parti di codice critiche inglobandole in un programma per PC e "stubbandone" input e output, debuggarle a dovere e solo in seguito portarle su Arduino, una volta che si è certi del funzionamento.

Ovviamente è bene fare MOLTA attenzione ai tipi di dato, usando quelli a lunghezza nota e non i comuni int, ad esempio, la cui dimensione dipende dalla piattaforma.

gpb01:
Beh ... "fare le nozze coi fichi secchi" non va mai bene ... tu chiedi un VERO strumento di debug e allora tocca anche che lo paghi. Pova a guardarti in giro e vedi i costi dei vari programmer/debugger degni di tale nome e ti accorgerai che in ambito Microchip/Atmel, Atmel ICE è anche piuttosto economico.

Accostati a SEGGER e vedi quanto costano i vari J-link :smiley:

Non ritengo la cosa inconcepibile, dico soltanto che se prima mi ero interessato ad arduino e la scheda M0 con la promessa di un debug incorporato a costo relativamente esiguo, il comprare l'ICE mi ha fatto quantomeno pensare a valutare altre soluzioni.