Arduino IDE está cargando el código Arduino. El código se desarrolla básicamente en Embedded C. Al cargar un Sketch primero, convertirá el código en código HEX para el Controlador y ese archivo HEX se guardará en Arduino.
El Arduino tiene formas infinitas de diseño como se ve por su símbolo
- ¿Cuál es el alcance del sistema integrado en los servicios ferroviarios?
- Sistemas embebidos: ¿Cómo ejecuta un microprocesador el código binario?
- ¿Qué curso es mejor, sistemas integrados o PLC y SCADA?
- ¿Cómo creo un widget incrustable en rieles?
- ¿Cuál es la diferencia entre una instrucción y una directiva en lenguaje ensamblador?
Contestaré esto en dos partes, el n. ° 1 es relativamente fácil, el n. ° 2 imposible al nivel que supongo que quieres.
1. Extrayendo el código hexadecimal del Uno:
Si bien los detalles dependerán de la revisión del Uno que tenga, querrá usar avrdude (disponible para Linux, incluido con el software OS X Arduino) y un comando similar al siguiente que extraería la información de un ATmega168 :
avrdude -F -v -pm168 -cstk500v1 -P / dev / ttyUSB0 -b19200 -D -Uflash: r: program.bin: r
Mire la documentación de avrdude para que coincida con el parámetro de la parte -p
específico de su dispositivo (o publíquelos y podemos ir desde allí).
Como parece que tiene el Uno Rev3, esa placa tiene un ATmega328 ( -pm328
). El programador “se comunica utilizando el protocolo STK500 original”, por lo tanto, el indicador de protocolo de comunicación -c
debería ser -cstk500v1
el comando que necesitaría (suponiendo que Uno esté conectado a / dev / ttyUSB0):
avrdude -F -v -pm328p -cstk500v1 -P / dev / ttyUSB0 -b19200 -D -Uflash: r: program.bin: r
A continuación su segunda pregunta.
2. Convertir código hexadecimal a fuente original:
Lo siento, pero eso no es posible. Si bien puede obtener algunos “descompiladores” hexadecimales, el galimatías devuelto, aunque funcionalmente correcto, no será legible para los humanos (algunos comerciales, como los Rayos Hexagonales, pueden darle cierto nivel de legibilidad humana).
Dicho esto, lo mejor es que sería un traductor / convertidor de hexadecimal a ensamblador, que aún le dará una mejor idea de lo que está sucediendo, pero seguirá siendo (por definición) de muy bajo nivel. Todos los nombres de variables, comentarios, etc. se eliminarán y todavía se quedará sin saber el contenido original del programa fuente, solo el resultado compilado.
Como se trata de un dispositivo Atmel, puede intentar utilizar la cadena de herramientas gcc específica de avr avr-gcc
. Específicamente, necesitará avr-objdump
usando la bandera de tipo MCU necesaria -m atmega328
(avr5) (Lista completa de arquitecturas disponibles, tipos MCU)
avr-objdump -s -m atmega328 program.hex> program.dump
También es posible, dependiendo de su configuración, que proporcionar el tipo de arquitectura en sí (avr5) sería suficiente:
avr-objdump -s -m avr5 program.hex> program.dump
Fuente: ¿Cómo puedo averiguar qué se quema en una ROM Arduino?