Wie kann ich die Quelldateien für Arduino-Bibliotheken erhalten?

14

Ich habe eine Weile in Arduino-Dateien gesucht, um die Kernbibliothek zu finden. Ich habe sie jedoch noch nicht gefunden. Wo kann ich auf meiner Festplatte die Kernbibliotheksdateien (.cpp und .h) abrufen, die für den gesamten Arduino-Code erforderlich sind?

Ich habe mich bei Google umgesehen und konnte die oben genannten Dateien nicht finden. Ich habe etwas über das Abrufen einer .a-Datei gesehen, während Arduino kompiliert, aber das ist nicht das, was ich will. Ich möchte den Code durchsuchen und mir Funktionen wie die Verzögerung ansehen, um zu sehen, wie sie reagieren würden, wenn die nicht erwarteten Werte angegeben würden. (Wird mein Code blockieren, wenn ich delay(-200);die Schleife nicht verlasse, oder wird er ein Schwarzes Loch erzeugen und das Raum-Zeit-Kontinuum stören?)

Anonymer Pinguin
quelle
Die Frage hat mich interessiert, aber ich möchte den Quellcode für strcpy und strcat im Assembler-Quellcode. Ich habe die Hauptbibliothek heruntergeladen, kann jedoch nichts Ähnliches wie strcpy oder strcat aus der Ferne finden. ODER Vielleicht kann ich den Wald vor lauter Bäumen nicht sehen?
Bobzic
@bobzic Ich schlage vor, dass Sie eine andere Frage stellen, die angibt, welche Dateien Sie suchen möchten.
Anonymous Penguin

Antworten:

9

Die Basis-Arduino-Quelldateien befinden sich in der Arduino-Installation unter hardware/*/cores/. Quelle für zusätzliche Bibliotheken enthalten sind in libraries/. Weitere Dateien finden Sie im Skizzenbuch unter den Verzeichnissen hardware/*/cores/und libraries/.

Ignacio Vazquez-Abrams
quelle
Und vergessen Sie nicht, /usr/lib/avr/include/oder was auch immer das auf Nicht-Linux-Systemen bedeutet.
jippie
Schade, dass ich es als Windows 10-App installiert habe und nicht auf den Installationsordner zugreifen kann.
Tomáš Zato - Monica wieder einsetzen
8

Auf einem Mac ist der Pfad zu dem Quellcode - Ordner:
Arduino.app/Contents/Resources/Java/Hardware/Arduino/Cores/Arduino. Ich würde erwarten, dass dies auch /Java/in anderen Betriebssystemen der Fall ist.

Pfad zu Bibliotheksquellen (Arduino-Mac)

JRobert
quelle
2

Es gibt mehrere Stellen, an denen Sie suchen können. Ab IDE 1.6.4 (Ubuntu-Version) sind einige in:

(install location)/libraries

Dies sind jedoch die übergeordneten Bibliotheken, insbesondere:

Bridge
Esplora
Ethernet
Firmata
GSM
LiquidCrystal
Robot_Control
RobotIRremote
Robot_Motor
SD
Servo
SpacebrewYun
Stepper
Temboo
TFT
WiFi

Dies gilt nicht für Low-Level-Bibliotheken wie Tone, Print, Main usw. Diese befinden sich in:

(install location)/hardware/arduino/avr/cores/arduino

Dort finden Sie die Arduino-Kernbibliotheken wie:

abi.cpp
Arduino.h
binary.h
CDC.cpp
Client.h
HardwareSerial0.cpp
HardwareSerial1.cpp
HardwareSerial2.cpp
HardwareSerial3.cpp
HardwareSerial.cpp
HardwareSerial.h
HardwareSerial_private.h
HID.cpp
hooks.c
IPAddress.cpp
IPAddress.h
main.cpp
new.cpp
new.h
Printable.h
Print.cpp
Print.h
Server.h
Stream.cpp
Stream.h
Tone.cpp
Udp.h
USBAPI.h
USBCore.cpp
USBCore.h
USBDesc.h
WCharacter.h
WInterrupts.c
wiring_analog.c
wiring.c
wiring_digital.c
wiring_private.h
wiring_pulse.c
wiring_shift.c
WMath.cpp
WString.cpp
WString.h

Aber auch das findet Dinge wie strcpy nicht. Die Header- Dateien für sie finden Sie unter:

(install location)/hardware/tools/avr/avr/include/

Dort finden Sie:

alloca.h
assert.h
ctype.h
errno.h
inttypes.h
math.h
setjmp.h
stdfix-avrlibc.h
stdint.h
stdio.h
stdlib.h
string.h

Auch das ist nicht die ganze Geschichte. In einem Unterverzeichnis (avr) finden Sie die avr-bezogenen Dinge mit Dateien für verschiedene Prozessoren, wie (teilweise):

boot.h
builtins.h
common.h
cpufunc.h
crc16.h
delay.h
eeprom.h
fuse.h
interrupt.h
io1200.h
io2313.h
...
iox64d4.h
iox8e5.h
lock.h
parity.h
pgmspace.h
portpins.h
power.h
sfr_defs.h
signal.h
signature.h
sleep.h
version.h
wdt.h
xmega.h

Ich glaube nicht, dass die Quelle von strcpy in der Distribution liegt. Sie enthalten die vorkompilierten Standardbibliotheken. Zum Beispiel, wenn Sie schauen in:

(install location)/hardware/tools/avr/avr/lib

Sie sehen verschiedene vorkompilierte Bibliotheken, zum Beispiel:

libc.a
libm.a
libprintf_flt.a
libprintf_min.a
libscanf_flt.a
libscanf_min.a

Um die Quelle zu finden, müssten Sie herausfinden, wo sich die AVR-Quelle von libc befindet (möglicherweise unter http://www.nongnu.org/avr-libc/ ).


Was den Mac betrifft, befindet sich das ganze Zeug ein paar Ebenen tiefer im "Anwendungspaket", das Sie anzeigen können, indem Sie mit der rechten Maustaste klicken und "Paketinhalt anzeigen" auswählen. Schau in den Contents/Resources/JavaOrdner.


An keinem dieser Orte sollten Sie Ihre eigenen Bibliotheken ablegen (solche, die Sie schreiben oder herunterladen). Sie sollten sich in dem librariesOrdner befinden, der ein Unterverzeichnis Ihres sketchbookOrdners ist. Erstellen Sie den librariesOrdner, falls er nicht vorhanden ist. Auf diese Weise bleiben vom Benutzer installierte Bibliotheken von einer Version der IDE zur nächsten erhalten.

Nick Gammon
quelle