Jak mogę uzyskać pliki źródłowe dla bibliotek Arduino?

14

Szukałem trochę czasu w plikach Arduino, aby znaleźć podstawową bibliotekę. Jednak jeszcze ich nie znalazłem. Gdzie na dysku twardym mogę uzyskać podstawowe pliki bibliotek (.cpp i .h) niezbędne dla całego kodu Arduino?

Rozglądając się w Google, nie mogłem znaleźć sposobu na znalezienie powyższych plików. Widziałem coś o uzyskiwaniu pliku .a podczas kompilacji Arduino, jednak nie tego chcę. Chcę przeglądać kod i patrzeć na funkcje, takie jak opóźnienie, aby zobaczyć, jak zareagują, gdy otrzymają wartości nieoczekiwane. (tj. czy mój kod przestanie działać, jeśli użyję delay(-200);go, nie wychodząc z pętli, czy też stworzy czarną dziurę i zakłóci kontinuum czasoprzestrzenne?)

Anonimowy pingwin
źródło
Byłem zainteresowany pytaniem, ale chcę kodu źródłowego strcpy i strcat w kodzie źródłowym asemblera. Pobrałem bibliotekę główną, ale nie mogę zlokalizować niczego podobnego do strcpy lub strcat. LUB Może nie widzę drewna na drzewa?
bobzic
@ Bobzic Sugeruję, abyś zadał kolejne pytanie określające, które pliki chcesz znaleźć.
Anonimowy pingwin

Odpowiedzi:

9

Podstawowe pliki źródłowe Arduino znajdują się w instalacji Arduino w hardware/*/cores/. Źródło dołączonych dodatkowych bibliotek znajduje się w libraries/. Dodatkowe pliki można znaleźć w szkicowniku pod jego katalogami hardware/*/cores/i libraries/.

Ignacio Vazquez-Abrams
źródło
I nie zapomnij o /usr/lib/avr/include/czymkolwiek, co przekłada się na systemy inne niż Linux.
jippie
Szkoda, że ​​zainstalowałem go jako aplikację Windows 10 i nie mogę uzyskać dostępu do folderu instalacyjnego.
Tomáš Zato - Przywróć Monikę
8

Na komputerze Mac, ścieżka do folderu, w kod źródłowy jest:
Arduino.app/Contents/Resources/Java/Hardware/Arduino/Cores/Arduino. Spodziewałbym się, że tak samo będzie /Java/w innych systemach operacyjnych.

Ścieżka do źródeł biblioteki (Arduino-Mac)

JRobert
źródło
2

Istnieje wiele miejsc, w których możesz szukać. W wersji IDE 1.6.4 (wersja Ubuntu) niektóre znajdują się w:

(install location)/libraries

Ale są to biblioteki wysokiego poziomu, w szczególności:

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

Nie obejmuje to bibliotek niskiego poziomu, takich jak Tone, Print, main itp. Są to:

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

Tam znajdziesz podstawowe biblioteki Arduino, takie jak:

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

Jednak nawet to nie lokalizuje rzeczy takich jak strcpy. W nagłówku plików do nich można znaleźć na stronie:

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

Znajdziesz tam:

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

Nawet to nie jest pełna historia. W podkatalogu (avr) znajdziesz rzeczy związane z avr, wraz z plikami dla różnych procesorów, takich jak (częściowo):

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

Co do źródła strcpy, nie sądzę, że jest w dystrybucji. Obejmują one standardowe biblioteki, wstępnie skompilowane. Na przykład, jeśli zajrzysz do:

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

Zobaczysz różne wstępnie skompilowane biblioteki, na przykład:

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

Aby znaleźć źródło, musisz dowiedzieć się, gdzie znajduje się źródło AVR libc (prawdopodobnie na http://www.nongnu.org/avr-libc/ ).


Jeśli chodzi o komputery Mac, wszystkie te rzeczy znajdują się kilka poziomów niżej w „Pakiecie aplikacji”, który można wyświetlić, klikając prawym przyciskiem myszy i wybierając „Pokaż zawartość pakietu”. Zajrzyj do Contents/Resources/Javafolderu.


Żadne z tych miejsc nie jest miejscem, w którym powinieneś umieścić własne biblioteki (te, które piszesz lub pobierasz). Powinny one przejść do librariesfolderu, który jest podkatalogiem twojego sketchbookfolderu. Utwórz librariesfolder, jeśli nie istnieje. W ten sposób biblioteki zainstalowane przez użytkownika utrzymują się z jednej wersji IDE do następnej.

Nick Gammon
źródło