Home
Accesso / Registrazione
 di 

Porting di un firmware su Arduino

10 risposte [Ultimo post]
ritratto di Luigi Francesco Cerfeda
Online
Titolo: User++
Utente++
Ultima visita:
4 min 28 sec fa
Utente dal: 16/01/2013
Messaggi: 61
Utente PREMIUM

Salve a tutti, potreste darmi delle indicazioni su come portare un firmware da un micro ATMEGA16 al micro di Arduino Due.

Credo di aver capito che fare un porting non è affatto una cosa semplice e ogni porting è diverso da un altro, però vi chiedo di darmi delle linee guide generali per avere un'idea più chiara dell'argomento.

Grazie

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
6 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 900
Utente PREMIUM
Allora, in linea generale se

Allora, in linea generale se il firmware è già compilato, la cosa non è possibile.
Se, invece, puoi procurarti il sorgente, oppure lo hai creato tu per cui non hai problemi ad averlo, la cosa che devi verificare è l'accesso ai singoli registri, le varie istruzioni che sono state utilizzate, la configurazione dei pin, l'eventuale compatibilità con i timer e così via dicendo comparando come vengono gestiti nei due microcontrollori gli stessi registri che ci servono.
In pratica si tratta di studiare massivamente i datasheet dei due microcontrollori e poi di scrivere istruzioni incompatibili con quello nuovo.
Nel caso in cui siano diversi (e sicuramente lo saranno visto che passi da un AtMega16 ad un SAM3X), devi fare le modifiche che servono…
Credo potresti avere anche il problema del supporto perché mi sembra di sapere, ma non ne sono affatto sicuro, che l'Atmega16 non sia supportato dalle librerie di Arduino.
Però non sono sicuro, ripeto.
Nel caso, anche se avessi il sorgente in C lo dovresti sistemare per renderlo compilare le dalla GUI di Arduino, eventualmente includendo le librerie che servono.

ritratto di Luigi Francesco Cerfeda
Online
Titolo: User++
Utente++
Ultima visita:
4 min 28 sec fa
Utente dal: 16/01/2013
Messaggi: 61
Utente PREMIUM
Una passeggiata ! :D

Mi potresti indicare dei riferimenti per capire meglio l'argomento?
Magari con qualche esempio di porting di firmware semplici semplici.

In realtà non ho ben chiaro quale sia la "struttura" di un firmware complesso.
(Nei miei studi ho incontrato esercizi in cui si richiedeva solo di realizzare sottoprogrammi in assembly in una ventina di istruzioni )

Grazie :)

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
6 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 900
Utente PREMIUM
No guarda, io purtroppo non

No guarda, io purtroppo non ho esempi pronti da poterti portare...
Sul sito di Arduino, però, ci sono un paio di discussioni che potrebbero servirti:
http://arduino.cc/forum/index.php?topic=152188.0
http://arduino.cc/forum/index.php?topic=907.0

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
6 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 900
Utente PREMIUM
Forse forse Emanuele potrebbe

Forse forse Emanuele potrebbe darti qualche indicazione :)

ritratto di Emanuele
Offline
Titolo: Moderator
Moderatore
Ultima visita:
3 ore 6 min fa
Utente dal: 28/07/2007
Messaggi: 1022
Utente PREMIUM
Porting firmware

Luigi,
dovresti fornire qualche indicazione supplementare, come ad esempio in che linguaggio è scritto il firmware e se il codice è ottimizzato con i giusti include. Poi che librerie utilizza e tutte le altre info del caso.

ritratto di Luigi Francesco Cerfeda
Online
Titolo: User++
Utente++
Ultima visita:
4 min 28 sec fa
Utente dal: 16/01/2013
Messaggi: 61
Utente PREMIUM
Eccolo
ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
2 settimane 3 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
pinout

La prima cosa che mi verrebbe in mente di fare è controllare che tutti i pin utilizzati dalle varie funzioni "primitive" di I/O corrispondano opportunamente..
Poi ovviamente ci sono tutti gli interrupt e timer che devono essere inizializzati nei giusti registri...quindi bisogna guardare il datasheet di entrambe i micro e controllare che i registri (i vari PORT di solito..ma non solo) abbiano gli stessi indirizzi...
Ma è davvero un'operazione non di poco conto..
Solo se hai fatto almeno un pò di pratica nello scrivere firmware partendo dalla semplice scrittura di un protocollo,(per esempio SPI) puoi capire cosa intendo..
Poi io userei WinMerge per confrontare i vari file sorgenti ;)

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
6 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 900
Utente PREMIUM
Oh Marco :) Da quanto tempo..

Oh Marco :)
Da quanto tempo.. :)

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
2 settimane 3 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
ciao piero

e ciao a tutti!!
Eh si hai ragione manco da un bel pò...
Purtroppo (anzi per fortuna direi) sto lavorando molto in questo periodo e attualmente sono anche in procinto di trasferirmi a torino..
Spero di sistemarmi stabilmente per un bel pò stavolta...
Ad ogni modo vi seguo e appena posso vi mando qualche bel articolo come ai vecchi tempi..(Oscillandia :) ) !

ritratto di Luigi Francesco Cerfeda
Online
Titolo: User++
Utente++
Ultima visita:
4 min 28 sec fa
Utente dal: 16/01/2013
Messaggi: 61
Utente PREMIUM
SAM3X

Fortunatamente il datasheet del SAM3X è lungo SOLO 1467 pagine !!!!
Porca miseria, la vedo dura !

A parte questo, potreste indicarmi delle buone risorse riguardanti la scrittura di firmware? Magari libri, handbook, dispense universitarie, non so ... magari anche qualcosa di più user friendly ma efficace
[Ho fatto un po' di giri su EOS ma non ho trovato molto, magari un po' di articoli su questo argomento potrebbero essere utili alla community :) ]

P.S. Conosco le basi del C++ e un pò di Assembly

Grazie

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti