Usando Atmel Software Framework

1

enlace

En mi empresa hay un proyecto, dependiendo de esta biblioteca. Sin embargo, se utiliza para copiar y pegar algunos archivos .c y .h en el proyecto y agregar sus nombres al archivo MAKE.

Espero que la forma correcta de utilizar una biblioteca de terceros sea

  • obtenga la biblioteca estática ya compilada más los encabezados públicos
  • u obtenga un proyecto autocontenido para compilar lo anterior y luego los proyectos de usuario para que dependan de la biblioteca construida y no de sus fuentes.

Sin embargo, no he logrado aislar una solución. La descarga, que he vinculado en la parte superior de la pregunta, tiene un tamaño de 1.25 GB y consta de varias fuentes y archivos make.

Mi objetivo es SAM4S y la placa es totalmente personalizada.

EDITAR:

Para aclarar, estas son mis razones para pensar que mis dos puntos anteriores son la forma más limpia de integrar una biblioteca estática de terceros.

  • Control de versiones: obtenga las nuevas versiones de la biblioteca limpiamente.
  • Separación: la biblioteca, lógicamente, no forma parte del proyecto principal, por ejemplo, no debería depender del proyecto externo (de lo contrario, código spagetti).
  • Solo lectura: no caiga nunca en la tentación de modificar el código de terceros. Si lo hace, 1. introduce errores, porque generalmente no comprende a los autores de la biblioteca y 2. evita la actualización a nuevas versiones de la biblioteca.
pregunta Vorac

2 respuestas

2

Creo que la pregunta es por qué una biblioteca de terceros se proporciona como código fuente en lugar de un archivo de objeto precompilado para ser tratado como una caja negra.

Considere las opciones del compilador que afectan cómo se construye el código que hace llamadas a las funciones de la biblioteca y maneja los retornos de las funciones de la biblioteca. ¿Existen opciones de compilación que afectan, por ejemplo:

  • Convenciones para pasar argumentos (son argumentos que se pasan en la pila o en registros o una combinación)
  • Endianess (algunos núcleos ARM se pueden configurar como endian grandes o pequeños ... no estoy seguro acerca de SAM4S)

Si no se utilizan las mismas opciones en ambos lados de la interfaz, el programa fallará.

Considere también que el código fuente de Atmel se usa en varias plataformas, que incluyen no solo una variedad de microcontroladores con núcleos ARM sino también su línea de productos AVR. ¿Cuántas versiones diferentes de bibliotecas estáticas precompiladas tendrían que existir para cubrir las combinaciones de opciones de compilador y objetivos de microcontroladores? La cantidad de archivos de objetos necesarios para cubrir todas estas permutaciones simplemente sería inmanejable.

Tengo que admitir que no estoy nada claro sobre cómo eliminar un archivo de objeto precompilado de un sistema de control de versiones es más "limpio" que eliminar archivos de origen. Si lo que le preocupa es retirar solo un archivo de objeto precompilado frente a retirar varios archivos de origen, considere organizar los archivos de tal manera que los archivos de origen de la biblioteca estén ubicados en un subdirectorio bien nombrado. Esto no reduce la cantidad de archivos, pero puede ayudar con el aspecto limpio / organizativo.

    
respondido por el semaj
1

Aquí hay un ejemplo de una posible razón:

El código debe establecer un par de pines de hardware asignados por el desarrollador. Si la biblioteca se proporciona como códigos fuente, el desarrollador puede # definir los pines del hardware y luego el código dentro de la biblioteca podría ser

PORT_CONSTANT.OUT = (1 < < PIN0_CONSTANT) | (1 < < PIN1_CONSTANT);

Las referencias son constantes y la línea podría compilarse en una instrucción de procesador.

Si la biblioteca se proporciona como archivos de objetos, dentro de la biblioteca, el código debería ser algo así como

port_variable.OUT = (1 < < pin0_variable) | (1 < < pin1_variable);

Las referencias se obtienen de las variables y la línea debería ser unas pocas instrucciones del procesador dentro de la biblioteca.

    
respondido por el rioraxe

Lea otras preguntas en las etiquetas