Como posso obter os arquivos de origem das bibliotecas do Arduino?

14

Estou procurando há algum tempo nos arquivos do Arduino para encontrar a biblioteca principal. No entanto, ainda não os encontrei. Onde no disco rígido posso obter os arquivos da biblioteca principal (.cpp e .h) necessários para todo o código do Arduino?

Procurando no Google, não consegui encontrar uma maneira de encontrar os arquivos acima. Eu vi algo sobre como obter um arquivo .a enquanto o Arduino está compilando, no entanto, não é isso que eu quero. Eu quero procurar o código e olhar para funções como atraso para ver como elas reagiriam quando dados os valores não esperados. (ou seja, meu código será interrompido se eu delay(-200);não sair do loop ou criará um buraco negro e interromperá o continuum espaço-tempo?)

Pinguim anônimo
fonte
Eu estava interessado na questão, mas o que eu quero é o código fonte para strcpy e strcat no código fonte do assembler. Fiz o download da Biblioteca Mestre, mas não consigo localizar nada remotamente semelhante ao strcpy ou strcat. OU Talvez eu não consiga ver a madeira das árvores?
bobzic
@bobzic Sugiro que você faça outra pergunta especificando quais arquivos você deseja encontrar.
Anonymous Penguin

Respostas:

9

Os arquivos de origem do Arduino base estão na instalação do Arduino, em hardware/*/cores/. A fonte para bibliotecas adicionais incluídas está em libraries/. Arquivos adicionais podem ser encontrados no caderno de desenho em seus diretórios hardware/*/cores/e libraries/.

Ignacio Vazquez-Abrams
fonte
E não se esqueça /usr/lib/avr/include/ou o que quer que seja traduzido em sistemas não Linux.
jippie
Pena que eu instalei como aplicativo do Windows 10 e não consigo acessar a pasta de instalação.
Tomáš Zato - Restabelece Monica
8

Em um Mac, o caminho para a pasta de código fonte é a seguinte:
Arduino.app/Contents/Resources/Java/Hardware/Arduino/Cores/Arduino. Eu esperaria que fosse o mesmo daqui /Java/para baixo em outros sistemas operacionais.

Caminho para as fontes da biblioteca (Arduino-Mac)

JRobert
fonte
2

Existem vários lugares onde você pode procurar. Como no IDE 1.6.4 (versão Ubuntu), alguns estão em:

(install location)/libraries

Mas estas são as bibliotecas de alto nível, em particular:

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

Isso não cobre as bibliotecas de baixo nível, como Tom, Impressão, principal, etc. Elas estão em:

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

Lá você encontra as bibliotecas principais do Arduino como:

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

No entanto, mesmo isso não localiza coisas como strcpy. Os arquivos de cabeçalho para eles podem ser encontrados em:

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

Lá você encontrará:

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

Mesmo essa não é a história completa. Em um subdiretório (avr), você encontrará as coisas relacionadas ao avr, com arquivos para diferentes processadores, como (em parte):

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

Quanto à fonte do strcpy, não acho que esteja na distribuição. Eles incluem as bibliotecas padrão, pré-compiladas. Por exemplo, se você procurar:

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

Você verá várias bibliotecas pré-compiladas, por exemplo:

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

Para encontrar a fonte, você precisa encontrar onde está a fonte da libc do AVR (possivelmente em http://www.nongnu.org/avr-libc/ ).


Quanto ao Mac, todo esse material está a alguns níveis do "Pacote de Aplicativos", que você pode visualizar clicando com o botão direito do mouse e selecionando "Mostrar Conteúdo do Pacote". Olhe na Contents/Resources/Javapasta.


Nenhum desses lugares é onde você deve colocar suas próprias bibliotecas (aquelas que você escreve ou baixa). Eles devem ir para a librariespasta que é um subdiretório da sua sketchbookpasta. Crie a librariespasta se ela não existir. Dessa forma, as bibliotecas instaladas pelo usuário persistem de uma versão do IDE para a seguinte.

Nick Gammon
fonte