Domanda:
Dove posso scoprire come creare un file esadecimale per il firmware arduino?
trusktr
2014-06-05 05:40:41 UTC
view on stackexchange narkive permalink

Ho seguito questo tutorial sul flashing del mio Arduino R3 per trasformarlo in una "tastiera USB", ma l'articolo non spiega come funziona l'esadecimale, è solo per scontato. Dove posso imparare a creare il mio file esadecimale in modo da poter imparare a far imitare il mio Arduino qualsiasi dispositivo USB?

Benvenuto in Arduino SE! Sei davvero vago qui. I dispositivi USB sono un argomento molto complesso e, molto probabilmente, non sarai in grado di creare i tuoi file * per USB * senza un po 'di abilità. Puoi trovare file HEX per il chip USB per imitare altri dispositivi precompilati.
@AnnonomusPenguin Ciao! Non credo che esista ancora alcun esagono per imitare un dispositivo DataLocker o IronKey, quindi mi piacerebbe provare a farlo. xD Qualche consiglio su da dove cominciare?
Non ne ho davvero idea: D Direi che forse guardi alcuni file esadecimali open source che incorporano l'archiviazione di massa USB (ho visto un paio di progetti open source con almeno trenta tipi di dispositivi USB per Arduino) e modificalo in modo che non mostri i file fino a quando non c'è un file di testo con la password nella root del dispositivo. L'IRC sarebbe una buona strada per ottenere aiuto con questo. Quindi non fai arrabbiare le persone, prova a * imparare * come farlo, non solo a copiare e incollare. Inoltre, se lo fai, assicurati di condividere il tuo codice con altri.
Il tutorial che stai seguendo contiene collegamenti a un archivio tar compresso con gzip del codice sorgente e del makefile utilizzato per produrre il file hex della tastiera di Darran che hai caricato: http://hunt.net.nz/users/darran/weblog/b3029/attachments/ bd341 / arduino-keyboard-0.3.tar.gz
Quattro risposte:
#1
+2
Ignacio Vazquez-Abrams
2014-06-05 07:24:20 UTC
view on stackexchange narkive permalink

Il file HEX è semplicemente una versione tradotta dell'eseguibile AVR, che a sua volta è una versione tradotta del codice sorgente AVR.

Sono disponibili molti strumenti per trasformare (compilare) il codice sorgente AVR in un Eseguibile AVR, inclusi ma non limitati a Arduino IDE, Ino, AVR-GCC e Atmel Studio. Nota che tutti e quattro gli strumenti compileranno il codice allo stesso modo, poiché AVR-GCC è usato sotto il cofano dagli altri tre.

  avr-g ++ -mmcu = atmega328 source.cc -o eseguibile 

Dopo aver compilato il codice, è possibile utilizzare avr-objcopy per estrarre le sezioni appropriate dall'eseguibile nei file HEX per la programmazione nella flash e nella EEPROM.

  avr-objcopy -j .text -j .data -O eseguibile eseguibile ihex.hex  

Puoi quindi utilizzare AVRDUDE per caricare i vari HEX file sul dispositivo di destinazione.

  avrdude -c arduino -P / dev / ttyUSB0 -b 19200 -p m328 -U flash: w: eseguibile.hex: i  

Nota che le librerie USB in Arduino / Ino e AVR LibC sono limitate; dovrai utilizzare Atmel Studio se desideri funzionalità USB complete.

#2
+2
mpflaga
2014-06-05 18:17:33 UTC
view on stackexchange narkive permalink

Ci sono molti siti là fuori che documentano come crearlo / costruirlo.

  Esempio: http://hunt.net.nz/users/darran/ o https://github.com/harlequin-tech/arduino-usbGOOGLE: build usb keyboard 16u2  

Si noti che quando si tenta di farlo su Uno R3, la DFU aggiorna il codice sulla 16U2 e non sul 328p.

Suggerirei ai principianti di usare Leonardo. Dove ci sono esempi di stock nell'IDE per utilizzare l'applicazione direttamente come USB HID. Evitando qualsiasi alterazione al boot loader o al chip co-processore da USB a seriale (il 16u2). Rendendolo molto più semplice.

#3
+1
fozbstuios
2014-06-09 23:32:00 UTC
view on stackexchange narkive permalink

È possibile, ma è un po 'difficile (specialmente se vuoi modificare sia 8u2 che 16u2. Consiglierei Teensy ( https://www.pjrc.com/teensy/index. html) Ho recentemente pubblicato una domanda su una domanda simile alla tua e dopo aver sentito tutte le insidie ​​ho deciso di andare con Teensy. Ho un supporto USB / HID molto più ricco per impostazione predefinita (puoi iniziare il tuo progetto giusto di distanza piuttosto che provare a modificare l'UNO). I Teensys sono anche relativamente economici e vanno da $ 18 a $ 24.

In confronto, gli UNO costano $ 27,18 e sono esauriti. Per essere onesti, entrambi sono probabilmente più economici. Questo è probabilmente discutibile dato che sembra che tu ne abbia già uno. Per maggiori informazioni, vedi la mia domanda ( Fattibilità del flashing di Arduino UNO r3 con firmware per adolescenti per scopi di emulazione HID (tastiera))

#4
+1
LIGHThouse
2014-06-12 15:19:26 UTC
view on stackexchange narkive permalink

Non è necessario fare qualcosa di magico. Ecco come puoi utilizzare gli affiliati dell'IDE di Arduino.

Dopo aver compilato o caricato uno schizzo, il file .hex viene automaticamente creato e archiviato nell'unità del tuo computer su cui è installato il sistema operativo (L'ho trovato su Windows). Puoi accedervi navigando nella directory contenente i file temporanei.

In genere, il percorso sarà qualcosa del genere: C:> Users> Admin> AppData> Local> Temp

Ora vedrai (molte) directory con nomi che vanno come "build" ... seguiti da un numero grande. Una di queste directory contiene i file generati dal compilatore del codice che stai cercando. Da questa posizione, puoi cercare (utilizzando Windows Explorer, ad esempio) e identificare il file .hex che stai cercando in base alla data e all'ora dell'ultima modifica.

Una volta hai il tuo file .hex , puoi caricarlo su Arduino usando Atmel FLIP dopo aver impostato il microcontrollore di Arduino in modalità Device Firmware Upgrade (DFU). Atmel FLIP, acronimo di FLexible In-system Programmer, può essere utilizzato molto facilmente, grazie alla sua interfaccia utente minima.

Ecco come utilizzare FLIP:

  1. Vai a File> Carica file HEX ... e seleziona il file.
  2. Scegli il tuo microcontrollore selezionando la prima icona sulla barra.
  3. Scegli la tua interfaccia di programmazione da il piccolo elenco.

L'ho usato con ATXmega che supporta USB ma non è lo stesso per tutti.

In base alla tua risposta, stai generando i file esadecimali solo attraverso l'uso di Arduino IDE, giusto? Puoi usare l'IDE di Arduino, ad esempio, per scrivere il codice HID (Human Interface Device) USB?
Esatto, non è richiesto nient'altro che l'IDE. Supponendo che il tuo HID sia compatibile con l'IDE di Arduino, puoi farlo. Se richiede un componente aggiuntivo (come un Crumbuino o un Teensy, ad esempio), farà comunque la stessa cosa. Questo perché carica il file .hex allo stesso modo. L'unica cosa che fa il componente aggiuntivo è definire funzionalità personalizzate. Devi solo trovare il file .hex tra i file temporanei. Se HID non è compatibile, puoi provare a scrivere il codice su Atmel Studio (solo per AVR e ARM) con un compilatore appropriato in grado di creare il file .hex.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...