Arduino vinculando las funciones del ensamblador

2

Me gustaría usar (enlace) una función escrita en ensamblador en un proyecto Arduino. Lo que quiero hacer es:

  • escriba la función en el ensamblador utilizando las convenciones de llamada avr-gcc
  • declare la función como externa en el archivo .ino
  • proporcione las instrucciones y otra información para vincular la función del ensamblador con el proyecto

No quiero (o ya sé cómo hacerlo):

  • usar ensamblaje en línea (el prólogo y el epílogo impiden el manejo efectivo de parámetros)
  • use formas alternativas / cadenas de herramientas / programadores
pregunta Stefan Nilsson

2 respuestas

2

Encontré la respuesta yo mismo aquí . Entonces, o escribes en las bibliotecas o recompilas el IDE. Pero no importa, funciona! Un poco desordenado (como se esperaba). Tenga en cuenta que la carpeta, el archivo .h y el archivo .S, pero no la función en sí, deben tener el mismo nombre.

    
respondido por el Stefan Nilsson
1

Puedes crear una biblioteca estática ".a" en lugar de una biblioteca Arduino. Esto es donde compila los archivos de objetos ".o" derivados de su fuente (ya sea .s .c o .cpp) en archivos "libname.a". Esto es similar a "libc.a". El siguiente artículo explica la operación y creación enlace

La dificultad sería cómo obtener el IDE de Arduino incorporado en make para usarlo. Veo en la salida detallada del IDE que crea core.a, pero no libc.a, que ya existe. Como sería el caso deseado aquí. Además, ahora mis proyectos usan la versión previa de compilación libc.a y libc no está presente en el registro de compilación detallado. Por lo tanto, puede ser tan simple como colocar los archivos y el nuevo libname.a en los directorios apropiados. Parece que puede ser al menos .. \ Arduino \ hardware \ tools \ avr \ avr \ lib .. pero también puede ser necesario construirlo para cada familia de los avr's.

    
respondido por el mpflaga

Lea otras preguntas en las etiquetas