http://www.atmel.com/tools/avrsoftwareframework.aspx?tab=overview
In meiner Firma gibt es ein Projekt, das von dieser Bibliothek abhängig ist. Es wird jedoch verwendet, indem einige .c- und .h-Dateien in das Projekt kopiert und ihre Namen zum Makefile hinzugefügt werden.
Ich würde erwarten, dass der richtige Weg zur Verwendung einer Bibliothek eines Drittanbieters lautet
Es ist mir jedoch nicht gelungen, eine Lösung zu finden. Der Download, den ich oben in der Frage verlinkt habe, ist 1,25 GB groß und besteht aus verschiedenen Quellen und Makefiles.
Mein Ziel ist SAM4S und das Board ist vollständig benutzerdefiniert.
BEARBEITEN:
Zur Verdeutlichung hier meine Gründe, warum ich denke, dass meine beiden obigen Punkte der sauberste Weg sind, eine statische Bibliothek eines Drittanbieters zu integrieren.
Ich denke, die Frage ist, warum eine Bibliothek eines Drittanbieters als Quellcode bereitgestellt wird und nicht eine vorkompilierte Objektdatei, die als Blackbox behandelt werden soll.
Berücksichtigen Sie die Compileroptionen, die sich darauf auswirken, wie Code erstellt wird, der Bibliotheksfunktionen aufruft und Rückgaben von Bibliotheksfunktionen verarbeitet. Gibt es Compileroptionen, die sich beispielsweise auf Folgendes auswirken:
Wenn nicht auf beiden Seiten der Schnittstelle die gleichen Optionen verwendet werden, schlägt das Programm fehl.
Bedenken Sie auch, dass der Quellcode von Atmel auf mehreren Plattformen verwendet wird, darunter nicht nur eine Vielzahl von Mikrocontrollern mit ARM-Kernen, sondern auch deren AVR-Produktlinie. Wie viele verschiedene Versionen von vorkompilierten statischen Bibliotheken müssten existieren, um die Kombinationen von Compileroptionen und Mikrocontrollerzielen abzudecken? Die Anzahl der Objektdateien, die erforderlich wäre, um alle diese Permutationen abzudecken, wäre einfach unüberschaubar.
Ich muss zugeben, dass mir ein wenig unklar ist, wie das Auschecken einer vorkompilierten Objektdatei aus einem Versionskontrollsystem "sauberer" ist als das Auschecken von Quelldateien. Wenn das Auschecken nur einer vorkompilierten Objektdatei im Gegensatz zum Auschecken mehrerer Quelldateien das Problem ist, sollten Sie die Dateien so organisieren, dass sich die Bibliotheksquelldateien in einem eigenen, gut benannten Unterverzeichnis befinden. Dies reduziert nicht die Anzahl der Dateien, kann aber beim sauberen/organisatorischen Aspekt helfen.
Hier ist ein Beispiel für einen möglichen Grund:
Der Code muss ein paar vom Entwickler zugewiesene Hardware-Pins setzen. Wenn die Bibliothek als Quellcodes angegeben ist, kann der Entwickler die Hardware-Pins #definieren und dann könnte der Code in der Bibliothek sein
PORT_CONSTANT.OUT = (1 << PIN0_CONSTANT) | (1 << PIN1_KONSTANTE) ;
Die Referenzen sind Konstanten und die Zeile könnte zu einer Prozessoranweisung kompiliert werden.
Wenn die Bibliothek als Objektdateien angegeben wird, müsste der Code innerhalb der Bibliothek so etwas wie sein
port_variable.OUT = (1 << pin0_variable) | (1 << pin1_variable) ;
Die Referenzen werden aus Variablen abgerufen und die Zeile müsste aus einigen Prozessoranweisungen innerhalb der Bibliothek bestehen.
Dzarda