Pregunta:
¿Dónde puedo averiguar cómo hacer un archivo hexadecimal para el firmware de arduino?
trusktr
2014-06-05 05:40:41 UTC
view on stackexchange narkive permalink

He seguido este tutorial sobre cómo flashear mi Arduino R3 para convertirlo en un "teclado USB", pero el artículo no explica cómo funciona el hexadecimal, es solo por hecho. ¿Dónde puedo aprender cómo crear mi propio archivo hexadecimal para poder aprender a hacer que mi Arduino imite cualquier dispositivo USB?

¡Bienvenido a Arduino SE! Eres realmente vago aquí. Los dispositivos USB son un tema realmente complejo, y lo más probable es que no puedas crear tus propios archivos * para USB * sin un poco de habilidad. Puede encontrar archivos HEX para el chip USB para imitar otros dispositivos precompilados.
@AnnonomusPenguin ¡Hola! No creo que exista todavía ningún hechizo para imitar un dispositivo DataLocker o IronKey, así que me gustaría intentarlo. xD ¿Algún consejo sobre por dónde empezar?
Realmente no tengo ni idea: D Diría que tal vez mire algunos archivos hexadecimales de código abierto que incorporan almacenamiento masivo USB (he visto un par de proyectos de código abierto con al menos treinta tipos de dispositivos USB para Arduino) y modificarlo para que no muestre archivos hasta que haya un archivo de texto con la contraseña en la raíz del dispositivo. El IRC sería una buena ruta para obtener ayuda con esto. Para no hacer enojar a la gente, intenta * aprender * cómo hacerlo, no solo copiar y pegar. Además, si lo hace, asegúrese de compartir su código con otros.
El mismo tutorial que está siguiendo contiene enlaces a un archivo tar comprimido con gzip del código fuente y el archivo make utilizado para producir el archivo hexadecimal del teclado de Darran que cargó: http://hunt.net.nz/users/darran/weblog/b3029/attachments/ bd341 / arduino-keyboard-0.3.tar.gz
Cuatro respuestas:
#1
+2
Ignacio Vazquez-Abrams
2014-06-05 07:24:20 UTC
view on stackexchange narkive permalink

El archivo HEX es simplemente una versión traducida del ejecutable AVR, que a su vez es una versión traducida del código fuente AVR.

Hay muchas herramientas disponibles para convertir (compilar) el código fuente AVR en un AVR ejecutable, que incluye, entre otros, Arduino IDE, Ino, AVR-GCC y Atmel Studio. Tenga en cuenta que las cuatro herramientas compilarán el código de la misma manera, ya que las otras tres utilizan AVR-GCC bajo el capó.

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

Una vez que haya compilado el código, puede usar avr-objcopy para extraer las secciones apropiadas del ejecutable en archivos HEX para programar en la memoria flash y EEPROM.

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

Luego, puede usar AVRDUDE para cargar los distintos archivos HEX. archivos al dispositivo de destino.

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

Tenga en cuenta que las bibliotecas USB en Arduino / Ino y AVR LibC son limitadas; necesitará usar Atmel Studio si desea capacidades USB completas.

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

Hay muchos sitios que documentan cómo crearlos.

  Ejemplo: http://hunt.net.nz/users/darran/ o https://github.com/harlequin-tech/arduino-usbGOOGLE: construir teclado usb 16u2  

Tenga en cuenta que al intentar esto en el Uno R3, la DFU está actualizando el código en el 16U2 y no en el 328p.

Sugeriría a los principiantes que utilicen el Leonardo. Donde hay ejemplos de stock en el IDE para usar la aplicación directamente como USB HID. Evitar alteraciones en el cargador de arranque o en el chip del coprocesador USB a serie (el 16u2). Haciéndolo mucho más simple.

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

Es posible, pero es un poco difícil (especialmente si desea modificar tanto el 8u2 como el 16u2. Recomendaría el Teensy ( https://www.pjrc.com/teensy/index. html) Recientemente publiqué una pregunta sobre una pregunta similar a la suya y después de escuchar acerca de todas las trampas, decidí ir con Teensy. Tengo un soporte USB / HID mucho más rico de forma predeterminada (puede comenzar con su proyecto correctamente en lugar de intentar modificar el UNO). Teensys también son relativamente baratos y van desde $ 18 a $ 24.

En comparación, los UNO cuestan $ 27.18 y están agotados. Para ser justos, ambos son probablemente más baratos. probablemente sea discutible, ya que parece que ya tienes uno. Para obtener más información, consulta mi pregunta ( Viabilidad de flashear Arduino UNO r3 con un pequeño firmware para propósitos de emulación HID (teclado))

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

No es necesario que hagas algo mágico. Así es como puede usar los afiliados de Arduino IDE.

Una vez que compila o carga un boceto, el archivo .hex se crea automáticamente y se almacena en la unidad de su computadora que tiene el sistema operativo instalado (Encontré esto en Windows). Puede acceder a él navegando al directorio que contiene los archivos temporales.

Por lo general, la ruta será algo como esto: C:> Users> Admin> AppData> Local> Temp

Ahora verá (muchos) directorios con nombres que van como "compilación" ... seguidos de un número grande. Uno de estos directorios contiene archivos generados por el compilador del código que está buscando. Desde esta ubicación, puede buscar (usando el Explorador de Windows, por ejemplo) e identificar el archivo .hex que está buscando por la fecha y hora de la última modificación.

Una vez tienes tu archivo .hex , puedes subirlo a tu Arduino usando Atmel FLIP después de configurar el microcontrolador de tu Arduino en el modo de actualización de firmware del dispositivo (DFU). Atmel FLIP, un acrónimo de FLexible In-system Programmer, se puede usar muy fácilmente, gracias a su interfaz de usuario mínima.

Aquí se explica cómo usar FLIP:

  1. Ir a Archivo> Cargar archivo HEX ... y seleccione el archivo.
  2. Elija su microcontrolador seleccionando el primer ícono en la barra.
  3. Elija su interfaz de programación de la lista pequeña.

He usado esto con ATXmega que admite USB pero no es igual para todos.

Según su respuesta, está generando los archivos hexadecimales solo mediante el uso de Arduino IDE, ¿verdad? ¿Puede usar Arduino IDE para, por ejemplo, escribir código de dispositivo de interfaz humana USB (HID)?
Así es, no se requiere nada más que el IDE. Suponiendo que su HID sea compatible con Arduino IDE, puede hacerlo. Si requiere un complemento (como un Crumbuino o un Teensy, por ejemplo), seguirá haciendo lo mismo. Eso es porque carga el archivo .hex de la misma manera. Lo único que hace el complemento es definir funciones personalizadas. Solo tienes que encontrar el archivo .hex entre los archivos temporales. Si el HID no es compatible, puede intentar escribir el código en Atmel Studio (solo para AVR y ARM) con un compilador apropiado que pueda construir el archivo .hex.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...