¿Cómo puedo obtener los archivos fuente de las bibliotecas Arduino?

14

He estado buscando un tiempo dentro de los archivos de Arduino para encontrar la biblioteca principal. Sin embargo, aún no los he encontrado. ¿En qué parte de mi disco duro puedo obtener los archivos de la biblioteca principal (.cpp y .h) necesarios para todo el código Arduino?

Mirando a mi alrededor en Google, no pude encontrar una manera de encontrar los archivos anteriores. Vi algo sobre cómo obtener un archivo .a mientras Arduino está compilando, sin embargo, eso no es lo que quiero. Quiero examinar el código y ver funciones como la demora para ver cómo reaccionarían cuando se den los valores no esperados. (es decir, ¿se bloqueará mi código si lo uso delay(-200);al no salir del bucle, o creará un agujero negro e interrumpirá el continuo espacio-tiempo?)

Pingüino anónimo
fuente
Estaba interesado en la pregunta, pero lo que quiero es el código fuente de strcpy y strcat en el código fuente del ensamblador. Descargué la Biblioteca maestra pero no puedo encontrar nada remotamente similar a strcpy o strcat. ¿O tal vez no puedo ver la madera de los árboles?
bobzic
@bobzic Sugiero que haga otra pregunta especificando qué archivos desea encontrar.
Anonymous Penguin

Respuestas:

9

Los archivos fuente base de Arduino se encuentran en la instalación de Arduino, en hardware/*/cores/. Las fuentes para bibliotecas adicionales incluidas están en libraries/. Se pueden encontrar archivos adicionales en el cuaderno de dibujo bajo sus directorios hardware/*/cores/y libraries/.

Ignacio Vazquez-Abrams
fuente
Y no olvide /usr/lib/avr/include/o lo que sea que se traduzca en sistemas que no sean Linux.
jippie
Lástima que lo instalé como aplicación de Windows 10 y no puedo acceder a la carpeta de instalación.
Tomáš Zato - Restablece a Mónica el
8

En un Mac, la ruta de la carpeta de código fuente es:
Arduino.app/Contents/Resources/Java/Hardware/Arduino/Cores/Arduino. Esperaría que fuera igual desde /Java/abajo en otros sistemas operativos.

Ruta a las fuentes de la biblioteca (Arduino-Mac)

JRobert
fuente
2

Hay varios lugares donde puedes mirar. Como en IDE 1.6.4 (versión de Ubuntu) algunos están en:

(install location)/libraries

Pero estas son las bibliotecas de alto nivel, en particular:

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

Eso no cubre las bibliotecas de bajo nivel como Tone, Print, main, etc. Estas están en:

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

Allí encontrará las bibliotecas principales de 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

Sin embargo, incluso eso no localiza cosas como strcpy. Los archivos de encabezado para ellos se pueden encontrar en:

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

Allí encontrarás:

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

Incluso esa no es la historia completa. En un subdirectorio (avr) encontrará las cosas relacionadas con avr, con archivos para diferentes procesadores, como (en 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

En cuanto a la fuente de strcpy, no creo que esté en la distribución. Incluyen las bibliotecas estándar, precompiladas. Por ejemplo, si miras en:

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

Verá varias bibliotecas precompiladas, por ejemplo:

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

Para encontrar la fuente, necesitaría encontrar dónde está la fuente AVR de libc (posiblemente en http://www.nongnu.org/avr-libc/ ).


En cuanto a la Mac, todo esto está unos niveles más abajo en el "Paquete de aplicación" que puede ver haciendo clic derecho y seleccionando "Mostrar contenido del paquete". Mira en la Contents/Resources/Javacarpeta.


Ninguno de estos lugares es donde debe colocar sus propias bibliotecas (las que escribe o descarga). Deben ir a la librariescarpeta que es un subdirectorio de su sketchbookcarpeta. Cree la librariescarpeta si no existe. De esa forma, las bibliotecas instaladas por el usuario persisten de una versión del IDE a la siguiente.

Nick Gammon
fuente