¿Es posible que Arduino / ATmega / ATtiny al programar el dispositivo adjunte el código fuente C al final de la imagen flash del código de la máquina? De esa manera, si tengo el dispositivo, siempre puedo recuperar el código fuente leyendo la memoria flash.
La forma más fácil en que puedo pensar en mí mismo es una declaración similar al final del programa C que lee el código fuente del archivo y lo adjunta como datos al programa. Pero no tengo ni idea de cómo hacer eso.
Siempre debe poder agregar cualquier tipo de datos a su código. Simplemente cree una matriz de texto que complete con el código C.
char source_code[9189] = {'m', 'a', 'i', 'n', '(', ')', 13, 10, '{' ,'}', 0};
¡Definitivamente querrá escribir un programa para crear la matriz a partir de un archivo de texto!
Personalmente creo que esta es una mala manera de hacerlo. ¡Organizarse! Incluya una referencia de código que incluya el número de versión, que hace referencia al código de su PC . Incluso puede agregar la posibilidad de leer la referencia en el sistema. A menudo incluyo un código que emite la identificación del controlador a través de UART cuando un determinado pin de prueba se baja, como lo haría en un bloque de prueba. El bloque de prueba podría mostrarlo como por ejemplo
ID del programa: 10121
Revisión: 02
Esto debería ser suficiente para encontrar el código fuente en su PC.
editar
Si la idea es dejar que el código viaje con el controlador para que pueda llevarlo a otras PC, entonces también usaría la idea de Fake: en lugar de enviar la idea del programa, podría purgar la fuente completa de esa manera.
Tenga en cuenta que todavía no estoy completamente convencido. A excepción de los programas más simples, el diseño de un programa es más que solo el código fuente. ¿Qué pasa con los diagramas de flujo u otros documentos de diseño?
xxd -i
Encontré una pregunta similar aquí . Parece que no funciona para mí porque el archivo que estoy tratando de incluir tiene comillas dobles y simples. Funciona si se usa con un archivo MAKE, pero el IDE de Arduino no. Sin embargo, funciona para la programación desde la línea de comandos.
Combina el:
$ echo hello world | xxd -i > xxd.txt
xxd.txt contiene:
0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0a
o
$ cat blinker.ccp | xxd -i > xxd.txt
Luego inclúyelo de la siguiente manera:
const char text[] = {
#include "xxd.txt"
};
Solo necesita llamarlo desde el programa en algún lugar de una impresión más o menos, de lo contrario, los datos se optimizarán.
turbo j
stevenvh
Kortuk