Debugging progetti Arduino

buongiorno a tutti.
Avrei una domanda da rivolgere a qualche guru.
Ogni tanto mi capitano situazioni del tipo:

  • a seguito di qualche modifica, il progetto si compila, si carica ma non parte
  • il progetto va in run regolarmente ma dopo qualche tempo si blocca tutto
  • altri problemi simili....
    Probabilmente sono problemi di puntatori non correttamente valorizzati, sfondamento di scritture il qualche matrice, divisioni per 0 o roba simile.
    Anche alzando il livello di warning non vengono fornite info in più a livello di compilazione.
    Esiste qualche modalità per avere qualche informazione su che cosa è capitato?
    Switch di compilazione, tools esterni, altro .....
    grazie

Di che modello di Arduino parliamo ???

Guglielmo

scusa Guglielmo, che cretino che sono!
Arduino UNO R3.
Nell'IDE 1.8.19 non ho trovato nulla.
Ho visto invece che nell'IDE 2.0 in realtà è prevista una modalità DEBUG,
che però non sono riuscito a configurare:
per provare ho messo un BP nel setup() ma senza esito...
Ha compilato regolarmente, nessun tipo di warning nella box OUTPUT.
Forse è in evoluzione, visto quanto mi dicevi sulla versione 2.0!!!

Io di solito uso queste tecniche:

  • scrittura sull'LCD, se presente
  • scrittura sulla seriale, salvo che abbia disponibile solo l'ICSP
  • inserimento di un delay() che blocca momentaneamente l'esecuzione
  • Inserimento di un tone() che fa un bip per confermare il passaggio in un punto
  • trasformazione in commento di righe del codice
  • accensione di un LED collegato appositamente su un pin

si si
ho usato pure io questi metodi "artigianali", non sempre sono efficaci
Speravo ci fosse qualche cosa di più organizzato e che non conosco.
Ad esempio mi è capitato che lo schetch venisse caricato regolarmente ma poi non partiva,
non si vedeva neppure il logo Adafruit su di un display OLD SH1106.
In questo caso si può solo andare per tentativi/supposizioni:
qualcosa è costruito "male" ed il sistema va in crash.
non sempre è facile scoprirlo

L'IDE di Arduino NON prevede alcuna possibilità di debug per la vecchia famiglia AVR ... o si fa con i metodi classici che sono già stati esposti o ... occorre cambiare totalmente ambiente di sviluppo e le possibilità sono diverse ...

  • Usare come IDE Visual Studio ed usare il pluging per il debug sviluppato da Visual Micro

  • Passare ad un ambiente di sviluppo professionale a pagamento tipo CodeVisionAVR

  • Passare ad un ambiente di sviluppo professionale NON dedicato solo agli AVR, ma per tutte le MCU fatte da Microchip, ovvero MPLAB X ... sicuramemnte la strada più potente, ma anche la più complessa.

Guglielmo

beh, non chiedevo così tanto :smirk:
Farò delle prove con Visual Studio.
Grazie a tutti e buon WE

... se si vuole fare VERAMENTE debug ... le strade sono molto poche ... essenzialmente le ultime due che ho indicato, il resto sono "trucchi" che comunque aiutano :wink:

Guglielmo

1 Like

Ad oggi ONLY per la board Arduino Zero (che in pratica ha sopra l'HW aggiuntivo per fare debug, se prendi una cinese "compatibile" Zero NON ha quell'hardware e non hai debug; Arduino Zero 50 euro circa, le cinesi 20 euro circa)

1 Like

ONLY?...

Senza hw aggiuntivo è l'unica.
Da pagina ide 2, debug: The Arduino Zero board can be used without any external hardware

Con programmatore/debugger a parte (Segger J-Link o Atmel-ICE che costano molto) solo con alcune board Arduino con SAMD funziona:
MKR Zero, MKR WiFi 1010,MKR FOX 1200, MKR WAN 1300, MKR WAN 1310, MKR GSM 1400, MKR NB 1500, MKR VIDOR 4000, Nano 33 IoT

Ve dovete mette in testa che pe' fa VERAMENTE debug serve un "debugger" ...
... che nun costa poco :smiling_imp:

E, comunque, da solo non basta, serve un ambiente che lo supporti.

QUESTO va bene per AVR e SAM.

Guglielmo

Una soluzione "intermedia" è usare la piattaforma di sviluppo STM32 con le schede della famiglia Nucleo 32/64 che hanno già integrato a bordo il programmatore/debugger STLink V2.

Non è di sicuro una soluzione che copre ogni esigenza, ma per testare algoritmi "generici" non legati all'hardware oppure librerie che supportano più famiglie di microntrollori può essere utile.
Io ad esempio lo uso ogni tanto con Platformio che è molto facile da configurare per il debug.

Ovviamente ci sono anche altre famiglie di micro e altri debugger (ad esempio l'arci noto Segger Jlink) ma questa soluzione non è troppo costosa.

Se dobbiamo uscire dalle schede Arduino, allora preticamente tutte le "Curiosity Nano" di Microchip hanno i debugger integrato e si trovano sia per AVR che per SAM D ... dopo di che. gratuitamente, si usa MPLAB X che le gestisce nativamente tutte, su tutte le piattaforme (macOS, Win, Linux). :wink:

Guglielmo

Vero, ma con le MCU in questione si può mantenere il framework Arduino per lo sviluppo con tutti i vantaggi che ne conseguono.

... SE e ribadisco il SE lo si sa fare, anche in MPLAB X :grin: ... è solo meno intuitivo e più farraginoso arrivarci, ma lo si fa (provato personalmete ... all'epoca c'avevo organizzato anche un corso :wink:).

Inoltre, se ben ricordo, hanno anche rilasciato un plugin per importare in MPLAB X i lavori Arduino ... però questo non l'ho mai provato ... :roll_eyes:

Guglielmo

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.