Arduino · 3 agosto 2013 3

Accorciamo i tempi del bootloader della Leonardo/Micro/Esplora

Arduino LEONARDO

Arduino LEONARDO

Chi ha una Arduino Leonardo o una Micro oppure una Esplora si sarà accorto che dopo un reset la scheda attende circa 8 secondi prima di avviare lo sketch salvato sulla memoria Flash: l’attesa è scandita dalla pulsazione del led integrato. Tale tempo è stato inserito per dar modo all’utente di spedire dall’IDE un nuovo sketch nel caso in cui egli voglia cambiare il programma memorizzato. Ma 8 secondi sono obiettivamente un tempo molto lungo. Grazie alla presenza dei sorgenti (potenza dell’open source!) possiamo modificare il bootloader secondo le nostre esigenze e ricompilarlo. Qui di seguito spiego come inserire un’attesa di soli 3 secondi prima dell’avvio dello sketch utente.

[notice]N.B.: le operazioni che seguono valgono per Linux ma, con poche modifiche, sono adattabili anche ad altri sistemi operativi.[/notice]

  • Prima di tutto assicuriamoci di avere gli strumenti necessari alla compilazione di un programma sorgente in C/C++: a seconda delle distribuzioni, i pacchetti possono variare ma, generalmente, si tratta di avere installato sul proprio sistema make, gcc, autoconf, automake.
  • Fatto ciò, abbiamo bisogno dei sorgenti del progetto LUFA versione 111009, un driver che permette di gestire la porta USB nvia software.
  • Scaricato il suddetto pacchetto, scompattiamolo in una cartella a scelta e poi copiamo la cartella LUFA-11109 all’interno della cartella /arduino-1.0.5/hardware/arduino/bootloaders.
  • Adesso dobbiamo modificare il file Makefile del bootloader. Questo file è /arduino-1.0.5/hardware/arduino/bootloaders/caterina/Makefile. Apritelo con un editor di testo (se usate Windows, non apritelo con Notepade ma con un altro editor più professionale, esempio Notepad++) ed eseguite le seguenti modifiche:
  1. togliere il commento (segno #) alla riga 52, che diventa:
    VID = 0x2341
  2. togliere il commento alla riga 57, che diventa:
    PID = 0x0036
  3. cambiare la riga 130 così:
    LUFA_PATH = ../LUFA-111009
  • Il passo successivo è la modifica del sorgente del bootloader. Aprite il file /arduino-1.0.5/hardware/arduino/bootloaders/caterina/Caterina.c e posizionatevi alla riga 65. L’originale è questa:
    #define TIMEOUT_PERIOD 8000
    Il numero che vedete indica il numero di millisecondi che il bootloader deve aspettare prima di avviare lo sketch utente. Cambiate quel valore in un numero inferiore, ad esempio 3000 per attendere 3 secondi oppure 5000 per 5 secondi.
  • Fatte le modifiche indicate, non resta che compilare i sorgenti. Aprite un terminale in /arduino-1.0.5/hardware/arduino/bootloaders/caterina/ e date i seguenti comandi:
    make clean
    make all
  • Se tutto è andato per il verso giusto, al termine dell’operazione vi troverete nella cartella un nuovo file denominato Caterina.hex. Questo è il nuovo bootloader, cho dovrete scrivere sulla scheda con un programmatore esterno (tipo USBtinyISP) oppure usando un Arduino UNO con lo sketch ArduinoISP caricato sopra.
  • Per scrivere il nuovo firmware, dovete sostituirlo al firmware della vostra scheda che, a seconda del tipo di Arduino posseduto, si chiama Caterina-Leonardo.hex, Caterina-Micro.hex oppure Caterina-Esplora.hex.

Una volta scritto il nuovo bootloader, collegate la scheda e poi premete il reset per avviare il bootloader: noterete che il lampeggio del led integrato questa volta dura di meno, esattamente il tempo da voi indicato nel sorgente.

New Caterina Bootloaders
New Caterina Bootloaders
New_Caterina_bootloaders.zip
Version: 1.0
12.6 KiB
2206 Downloads
Dettagli...