Una volta realizzato il prototipo con la Arduino UNO lo posso trasferire su una qualsiasi altra piattaforma Arduino?
Per esempio Arduino Nano, Arduino Mini, ecc...
E se volessi realizzare la versione finale non prototipale? Devo sempre usare la Arduino UNO e poi i filetti volanti?
erpomata:
Una volta realizzato il prototipo con la Arduino UNO lo posso trasferire su una qualsiasi altra piattaforma Arduino?
Per esempio Arduino Nano, Arduino Mini, ecc...
Devi solo stare attento alle tensioni in gioco ed al clock, alcuni modelli "piccoli" vanno a 3V3 e 8 MHz. Per il resto non ci sono "controindicazioni"
E se volessi realizzare la versione finale non prototipale? Devo sempre usare la Arduino UNO e poi i filetti volanti?
In questo caso userai un circuito realizzato con un Atmega328 senza tutto il resto, penso. Cerca "arduino standalone".
leo72:
In questo caso userai un circuito realizzato con un Atmega328 senza tutto il resto, penso. Cerca "arduino standalone".
Prendo lo spunto da questo per una domanda che volevo porre in TRD apposito
Ma il bootloader cos'e'
lavoro da una vita nel campo dell'automazione e so' cosa un Loader , un firmware ed una applicazione
Di solito il loader e' un qualcosa che risiede in eprom e consente di "mettere in strada" lo strumento
Parti con il loader per caricare il firmware che sara' poi quello che interpretera' ed eseguira' la nostra applicazione
Arrivati a questo punto non si sentira' piu' parlare di loader a meno che non venga rilasciato un aggiornamento del firmware
Ripeto .. il bootloader cos'e' , cosa rappresenta in Arduino
Perche ho letto qui nel forum di programmi da 32K che sfruttano anche lo spazio che di solito viene "rubato" dal bootloader
Io sono uno che ascolta ( legge ed archivia ) le voci che gridano
il bootloader è quel codice, normalmente eseguito all'avvio del microcontrollore Atmel "cuore" di Arduino che ti consente di caricare nuovi programmi senza la necessità di un programmatore ad hoc ma con una semplice connessione seriale/usb.
Per utilizzare un microcontrollore Atmel (ma anche PIC, MSP...) senza bootloader avresti bisogno di un apposito programmatore con il quale vai a "caricare" ogni volta il tuo firmware. Essendo il bootloader un programma sempre residente nella memoria programma del microcontrollore, ecco che ti "occupa" parte di questa.
lucadentella:
il bootloader è quel codice, normalmente eseguito all'avvio del microcontrollore Atmel "cuore" di Arduino che ti consente di caricare nuovi programmi senza la necessità di un programmatore ad hoc ma con una semplice connessione seriale/usb.
Immagino che in questo caso si avra' bisogno di un programmatore di Eprom o qualcosa di simile dedicato
Per utilizzare un microcontrollore Atmel (ma anche PIC, MSP...) senza bootloader avresti bisogno di un apposito programmatore con il quale vai a "caricare" ogni volta il tuo firmware. Essendo il bootloader un programma sempre residente nella memoria programma del microcontrollore, ecco che ti "occupa" parte di questa.
Qui invece ..
"caricare" ogni volta il tuo firmware dici
Il mio firmware e' quello che io chiamo applicazione
Per me il firmware e' quello che esegue quanto io ho scritto ; nel caso di Arduino essendo compilato sara' una specie di file binario
Il dubbio che mi rimane e'
Se il loader e' quello che mi consente di trasferire il mio progetto a bordo del chip chi e' che interpretera' ed eseguira' il mio Sketch ?
L'IDE quando compila carica' l'uno e l'altro ?
se tu non avessi "a bordo" del microcontrollore un bootloader, per caricare il tuo firmware dovresti utilizzare un programmatore dedicato... anche Arduino lo può diventare:
il bootloader funziona così:
il microcontrollore all'accensione esegue sempre il firmware a partire da un indirizzo "base": qui viene programmato il bootloader
il bootloader controlla se vi sono le condizioni per l'upload di un nuovo firmware da PC, altrimenti "salta" all'esecuzione del firmware precedentemente programmato
Quindi quando tu scrivi uno sketch nell'IDE e lo programmi quello che avviene è:
il compilatore parte dal tuo codice e genera un firmware binario compilato
l'IDE resetta il tuo Arduino e non appena parte il bootloader, inizia la procedura di upload
il bootloader riceve via seriale il nuovo firmware e lo "scrive" nella memoria programma partendo da un punto che è "oltre" tutto il codice del bootloader
al riavvio, il bootloader dopo le due istruzioni farà un "jump" alla prima istruzione del tuo programma mandandolo in esecuzione
Il micro comincia ad eseguire codice dalla prima locazione in flash, questa può essere impostata tramite fuse per essere divisa in due sezione, una di questa è quella destinata al bootloader che risiede nelle prime locazioni flash. Devi immaginare la flash come un disco partizionato in due.
Il micro è capace di eseguire codice e scrivere sulla flash allo stesso tempo, praticamente, questo avviene quando clicchi sull'icona dell'ide di arduino. Il codice presente nella sezione del bootloader viene eseguito per primo dopo il reset, se dopo tot tempo il bootloader non riceve dei comandi via seriale effetua un boot alla prima locazione di memoria che risiede nella seconda sezione della flash, così si avvia il tuo codice.
Se bootloader riceve dei comandi validi via seriale prenderà delle decisione, queste di solito sono quelle di cominciare a scrivere nella seconda sezione flash.
Alla fine per semplicità le due sezione li possiamo chiamare bootloader flash e user flash.
Sembra chiaro che il codice del bootloader lavora come un programmatore di flash dalle capacità ridotte per limitare lo spazio occupato al minimo indispensabile.
Nelle applicazioni definitive su board dedicate il codice del bootloader non è necessario oppure potrebbe essereci un codice con capacità diagnostiche.
MauroTec:
Il micro comincia ad eseguire codice dalla prima locazione in flash, questa può essere impostata tramite fuse per essere divisa in due sezione, una di questa è quella destinata al bootloader che risiede nelle prime locazioni flash. Devi immaginare la flash come un disco partizionato in due.
Non è corretto.
Il bootloader risiede sempre nella parte più alta della memoria, occupa per l'esattezza l'ultima porzione che va da (MemMax-DimBootloader) a (MemMax-1). Siccome nell'Atmega328 il bootloader può avere diverse dimensioni, esso può essere di 512, 1024, 2048 o 4096 byte, ed essendo la flash dell'Atmega328 di 32 kB, il bootloader occuperà rispettivamente le locazioni da $7E00/$7C00/$7800/$7000 a $7FFF, ultima locazione della memoria.