Pages: [1]   Go Down
Author Topic: Caricamento bootloader su ATMEGA88  (Read 831 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti,
sono un nuovo appassionato di Arduino, e in collaborazione con alcuni amici abbiamo deciso di fare alcuni test su una board Arduino compatibile  che monta un ATMEGA88P.
A breve vorrei provare a caricare il bootloader sul uP e pertanto ho scaricato il manuale del prof. Menniti, e credo di avere capito i passaggi cruciali, ma mi rimane un dubbio.
L'unico punto in cui viene nominato l'ATMEGA88 si accenna alla necessità di usare delle board virtuali, per definire i dettagli del device target.
Se ho ben capito, le board virtuali sono quelle descritte nel capitolo

7B4-Caricare uno sketch con IDE 1.0.1 mediante tecnica ISP

Tuttavia mi mancano alcuni dettagli, che segnalo qui di seguito, sarei grato se poteste darmi una dritta:

  • è corretta la mia ipotesi che per caricare il bootloader sul mio ATMEGA88, basti definire la board virtuale e poi seguire la guida del paragrafo p 5 a pagina 26 (ovviamente usando come target la board appena configurata)?
  • bootloader.file: come faccio a creare quello per ATMEGA88? Ho visto che i device 88 e 328 sono pressoché identici (almeno dando una occhiata online/Google), ma non credo che lo stesso file sia valido per i due device
  • i dettagli sui lock e unlock bits, li desumo dal datasheet? Avete una idea se e come debbano essere cambiati?

Grazie a chiunque possa darmi qualche dritta
Giovanni
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 527
Posts: 12347
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Giovanni, vedo con piacere che hai studiato smiley
Per caricare il bootloader su ATmega88 devi avere un bootloader per ATmega88, non puoi usarne uno qualsiasi, chi ti ha fornito questa scheda dovrebbe averti dato anche il firmware, nel qual caso si può creare una board virtuale specifica.
Comunque, considerando che l'88 è pressoché identico all'8, si potrebbe creare una board virtuale a partire dalla board originale Arduino NG or older with ATmega8, ma il mega8 NON ha l'EFuse che invece è presente sul mega88
Oppure potresti partire da una board "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168" e fare così
1 - copia ed incolla nel file boards.txt le righe di questa board
2 - cambia il codice della board (sono i caratteri iniziali di ogni riga: pro5v, falli diventare altra cosa)
3 - cambia il nome della board (la prima riga)
4 - alla voce MCU scrivi atmega88 (o atmega88P a tentativi)
5 - alla voce maximum_size scrivi 6144
Poi segui la Guida. Io stasera sono fuori, rientro penso verso le 23, se non hai risolto (ma ti aiuteranno altri, non ti preoccupare) vediamo come fare in base alla problematica che hai.

EDIT: naturalmente do' per scontato che la scheda sia identica all'Arduino, cioè con il quarzo/risuonatore da 16MHz; peraltro per non complicarti troppo la vita potresti mettere un 328P al posto dell'88 e non dovresti fare alkcuno sbattimento. Infine ti ricordo che il bootloader serve SOLO se hai necessita di usare la scheda proprio come un Adruino, cioè caricando gli sktech via USB, altrimenti, potresti farne a meno e usare direttamente la tecnica ISP. Al prossimo post fornisci più info sulla scheda che hai (magari un link), e poi anche la versione IDE che stai usando e quant'altro tu ritenga utile farci sapere, più sappiamo prima risolviamo. smiley-wink
« Last Edit: October 06, 2012, 10:21:52 am by Michele Menniti » Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, prima di tutto grazie mille.
In effetti sono stato un poco fumoso, nel senso che in realtà la scheda è un progetto custom che utilizza questo device per questioni di scelta progettuale, quindi non ho margine di manovra sulla scelta del device.
Gli schedini dovrebbero arrivarmi tra un pò di tempo, quindi per il momento non riesco a dare più dettagli, circa l'esito dei trucchi che mi hai insegnato, il mio post serviva soprattutto per sondare il terreno e capire se quello che pensavo di fare aveva possibilità di successo o se era destinato al fallimento. Confermo comunque che l'oscillatore a 16 MHz è compreso nel piastrino.

Se secondo te va bene, io pensavo di far tesoro delle indicazioni che mi hai fornito e non appena avrò sotto mano il pezzo, potrò tornare a chiedere (oppure a dire che tutto è andato liscio come l'olio, ringraziandoti ulteriormente).
Comunque grazie mille, quantomeno adesso so che seppur con un pò di fatica e di consigli dalla comunità potrò trasformare il mio device in un Arduino equivalente.

Solo una ultima domanda: è preferibile editare come [RISOLTO] il thread e poi riesumarlo quando avrò nuove domande? Grazie ancora
Giovanni

« Last Edit: October 06, 2012, 11:26:37 am by giox79 » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Datosi che l'Atmega88 è l'antenato dell'Atmeg328, potresti provare a compilare l'Optiboot per la tua MCU. Il makefile dell'Optiboot ha già l'opzione pronta per compilare per questo micro.

Vai nella cartella dell'IDE di Arduino, poi in /hardware/arduino/bootloaders/optiboot, apri un terminale e poi dai "make atmega88".
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
grazie mille, sono riuscito a creare il file hex corrispondente a atmega88.
A questo punto, se ho ben capito, basta che io vada a creare una board virtuale con una cosa del genere nel file boards.txt

Quote

##############################################################

atmega88.name=Arduino Giovanniw/ atmega88

atmega88.upload.protocol=arduino
atmega88.upload.maximum_size=6144                        <<<<< grazie Michele!!!
atmega88.upload.speed=57600

atmega88.bootloader.low_fuses=0xFF                         <<<<< Questi due mi sa che mi serve il datasheet
atmega88.bootloader.high_fuses=0xDA                       <<<<<
atmega88.bootloader.extended_fuses=0x05
atmega88.bootloader.path=atmega
atmega88.bootloader.file=optiboot_atmega88.hex        <<<<< Ovviamente questo dopo aver copiato il file creato dalla build in atmega
atmega88.bootloader.unlock_bits=0x3F                       <<<<< Questi due mi sa che mi serve il datasheet
atmega88.bootloader.lock_bits=0x0F                          <<<<<

atmega88.build.mcu=atmega88p                                <<<<< o atmega88?!?!?
atmega88.build.f_cpu=16000000L
atmega88.build.core=arduino
atmega88.build.variant=standard


e a quel punto il più dovrebbe essere fatto.
Puoi mica confermarmi che non ci siano grossolani errori in quanto ho scritto?
Non è impossibile che non padroneggiando Arduino abbia preso un palo...
Perdona se faccio domande cui, con un rapido test su scheda, potrei rispondere da solo, ma non ho ancora la scheda e la curiosità è tanta  smiley-razz
Grazie ancora e buon week end.
Giovanni
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 527
Posts: 12347
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Chiedi chiedi, non ti preoccupare. smiley
La prova consigliata da Leo è valida, ovviamente (Leo è uno dei maghi del Forum, ma tu non farglielo sapere smiley-wink)! Devi verificare se funziona, è pur sempre un esperimento, vediamo invece le correzioni alla board che hai scritto:

atmega88.upload.maximum_size=7680                 <<<< stai usando l'optiboot, occupa solo 512 byte
atmega88.bootloader.high_fuses=0xDE                 <<<< è questo il valore corretto per il BOD LEVEL
atmega88.build.mcu=atmega88p                         <<<< sì, ho verificato e nell'AVRDUDE.CONF questo micro c'è.

I lock/unlock bits sono a valore standard, non ti preoccupare, sono praticamente sempre quelli su tutti i micro (dai un'occhiata alle varie board del file boards.txt e ti tranquillizzi smiley-wink)

Come hai giustamente compreso questa nuova board la devi mettere (segui BENE le istruzioni della mia Guida) nel file boards.txt, salvi chiudi ed al riaprire l'IDE 1.0.1 (NON usare 1.0!!) troverai la tua board pronta per il caricamento del bootloader

Non c'è bisogno che scrivi RISOLTO visto che ancora non sai se hai risolto qualcosa, quando hai notizie continua a scrivere su questo TOPIC e noi rispondiamo. Stai tranquillo, in un modo o nell'altro "Arduino Giovanniw/ atmega88" funzionerà! smiley-lol
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Di nuovo grazie, ho provato a salvare e riaprire Arduino 1.0.1 (avevo già letto circa le criticità di 1.0 e lo avevo abbandonato prontamente) e vedo comparire la scheda.
Grazie a tutti, ora aspetto che arrivi il piastrino e cercherò di divertirmi, chiedendo aiuto quando sono nelle canne.
Saluti e buon we.

PS tranquillo non dico niente a Leo, rimarrà un segreto  smiley-razz
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1745
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Datosi che l'Atmega88 è l'antenato dell'Atmeg328, potresti provare a compilare l'Optiboot per la tua MCU. Il makefile dell'Optiboot ha già l'opzione pronta per compilare per questo micro.

Vai nella cartella dell'IDE di Arduino, poi in /hardware/arduino/bootloaders/optiboot, apri un terminale e poi dai "make atmega88".
anche io voglio provare l'atmega88 smiley-grin, ma quando do sul terminale (di mac osx) make atmega88 mi da questo errore: -bash: make: command not found
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

anche io voglio provare l'atmega88 smiley-grin, ma quando do sul terminale (di mac osx) make atmega88 mi da questo errore: -bash: make: command not found

Per compilare un programma servono gli strumenti. Ogni distribuzione ha il suo pacchetto di strumenti di sviluppo, quindi dipende da che distro usi. Di solito si tratta di installare gcc, g++, make, automake ed altri. Su Ubuntu basta di solito installare il pacchetto "build-essential", sulla mia Arch il pacchetto è "base-devel", su altre distro ci sono singoli pacchetti o metapacchetti da installare.
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solo una nota aggiuntiva: su Windows 7 il problema che avevo avuto io era la assenza della variabile che puntava alla folder del compilatore, che mi comportava un errore lievemente diverso, in cui mi si diceva (ormai l'ho risolto, quindi non riesco ad essere più preciso) che non veniva trovato il comando avr-gcc.
Aggiornando la variabile di ambiente e riavviando ho sistemato.
Per MacOsx, non so che dirti, unica cosa, sei sicuro di esserti messo come path nella folder indicata da leo72 e aver poi digitato il comando di make?
La folder è:

/hardware/arduino/bootloaders/optiboot

Perdona la domanda banale, ma son alle prime armi e quindi penso sempre che anche gli altri possano fare i miei errori banali smiley-razz
Logged

Pages: [1]   Go Up
Jump to: