Esta respuesta no responde directamente a la pregunta, pero aún dará como resultado el mismo resultado final.
El IDE de Arduino utiliza directorios temporales para almacenar archivos de compilación, incluido el boceto original, así como los archivos HEX e intermedios.
En una Mac, estas están en las carpetas / var / por defecto, y en una máquina con Windows están en ... \ Configuración local \ Temp \ (que dependiendo de la versión de Windows podría estar en varios lugares).
Descubrí que, especialmente en Windows, estos archivos de compilación no se eliminan cuando cierra el boceto o el IDE, por lo que pueden existir en su máquina durante mucho más tiempo de lo que cree.
Además, de manera predeterminada, Crashplan, Backblaze y Time Machine hacen una copia de seguridad de estas ubicaciones, por lo que incluso si se han eliminado, aún pueden estar en una copia de seguridad.
La ventaja aquí es que recuperará el código C en lugar de ASM.
Puede descargar el volcado hexadecimal del archivo, pero no hay una manera fácil de obtener todo el código y los comentarios de C ++. Si puede comprender el ensamblaje, podría volver a crear el programa, pero eso llevaría un tiempo. Hay desensambladores disponibles para algunos dispositivos, no sé sobre arduino.
Creo que hay otra forma de hacer esto, sin extraer el código de la placa Arduino. Recuerde la fecha en que creó el boceto y búsquelo en C: \ Users \ User \ AppData \ Local \ Temp \ (por ejemplo: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Puede encontrar su código no guardado a menos que lo haya eliminado algún "programa de espacio libre". ¡Buena suerte!
Como puede ver, no es particularmente útil para reproducir lo que hizo su boceto. Es probable que haya uno de dos escenarios:
Su boceto fue corto, en cuyo caso, después de semanas de trabajo, podría volver a convertir el código del ensamblador en C
Su boceto fue largo, en cuyo caso sería prácticamente imposible volver a convertirlo en C
En el caso del "bosquejo corto", es mejor reescribir desde cero. Eso sería más rápido, casi seguro. En el caso del "bosquejo largo", simplemente no vale la pena. Ninguno de los nombres de las variables se conserva, y la forma en que el compilador optimiza el código, incluso la estructura del código sería difícil de determinar.
Respuestas:
Debería ser posible siempre que el bit de seguridad no esté configurado. Esta pregunta se hizo en EE hace un tiempo.
¿Es posible extraer código de una placa arduino?
Pero no obtendrá el código Arduino que escribió de nuevo. El código se compila en ensamblado y tendrá que convertirlo de nuevo a C usted mismo.
fuente
Esta respuesta no responde directamente a la pregunta, pero aún dará como resultado el mismo resultado final.
El IDE de Arduino utiliza directorios temporales para almacenar archivos de compilación, incluido el boceto original, así como los archivos HEX e intermedios.
En una Mac, estas están en las carpetas / var / por defecto, y en una máquina con Windows están en ... \ Configuración local \ Temp \ (que dependiendo de la versión de Windows podría estar en varios lugares).
Descubrí que, especialmente en Windows, estos archivos de compilación no se eliminan cuando cierra el boceto o el IDE, por lo que pueden existir en su máquina durante mucho más tiempo de lo que cree.
Además, de manera predeterminada, Crashplan, Backblaze y Time Machine hacen una copia de seguridad de estas ubicaciones, por lo que incluso si se han eliminado, aún pueden estar en una copia de seguridad.
La ventaja aquí es que recuperará el código C en lugar de ASM.
fuente
/tmp/
directorios en Linux (e incluso Mac). cf arduino.cc/en/Hacking/BuildProcessPuede descargar el volcado hexadecimal del archivo, pero no hay una manera fácil de obtener todo el código y los comentarios de C ++. Si puede comprender el ensamblaje, podría volver a crear el programa, pero eso llevaría un tiempo. Hay desensambladores disponibles para algunos dispositivos, no sé sobre arduino.
fuente
atmega disassembler
).Creo que hay otra forma de hacer esto, sin extraer el código de la placa Arduino. Recuerde la fecha en que creó el boceto y búsquelo en C: \ Users \ User \ AppData \ Local \ Temp \ (por ejemplo: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Puede encontrar su código no guardado a menos que lo haya eliminado algún "programa de espacio libre". ¡Buena suerte!
fuente
A menos que su objetivo sea simplemente copiar el código idéntico a otro dispositivo, la respuesta simple es: no
Como se ha señalado en otras respuestas, puede volver a convertir el código hexadecimal del dispositivo en código ensamblador.
Por ejemplo (una vez que haya copiado el código del dispositivo nuevamente en su disco):
Ejecutar en uno de los archivos del gestor de arranque obtengo estos resultados (en parte):
Como puede ver, no es particularmente útil para reproducir lo que hizo su boceto. Es probable que haya uno de dos escenarios:
En el caso del "bosquejo corto", es mejor reescribir desde cero. Eso sería más rápido, casi seguro. En el caso del "bosquejo largo", simplemente no vale la pena. Ninguno de los nombres de las variables se conserva, y la forma en que el compilador optimiza el código, incluso la estructura del código sería difícil de determinar.
fuente