Arduino IDE'siz Arduino için programlama .. sağlanan kütüphanelerle?


10

Kısa bir süre önce toz toplayan Arduino'yu kullanarak yeni bir projeye başladım. Toz toplama fiziksel kartı ile birlikte, avr-gcc ve Arduino kütüphanelerinin kopyalarım da öyle. Avr-gcc güncellemesini yönetebilirim, ancak Arduino kütüphanelerini nasıl derlediğimi hatırlayamıyorum. Arduino kaynağı ile, listelenen kaynak dosyaları ve benzerleri vardır, ancak kütüphaneyi gerçekten oluşturmak için herhangi bir makefile (görebiliyorum). IDE'yi oluşturma umurumda değil, sadece kütüphaneyi ikili biçimde ve ihtiyacım olacak başlık dosyalarını istiyorum. Bunu yapmak için herhangi bir belge veya benzeri var mı?

Arduino IDE'yi kullanmak istemiyorum, kendi metin düzenleyicimi ve bir makefile kullanmayı tercih ediyorum.


1
Bu size yardımcı olabilir.
arminb

1
@arminb bleaklow.com/2010/06/04/a_makefile_for_arduino_sketches.html bundan daha yararlı olacaktır. Bağlantınız sadece arduino kütüphanesini oluşturmak için değil, komut satırından çizimler oluşturmak için bir yol sağlar. Her iki durumda da
alakasız


@jippie Ona baktım (istendiğinde değil, son zamanlarda bunu tekrar incelerken), ancak Arduino IDE'nin yüklü olması gerektiğine ertelendi. Tür bir yenilgi
Earlz

Yanıtlar:


9

Arduino IDE'yi yüklemek zorunda kalmadan bunu oldukça kolaylaştıran özel bir yapı sistemi (Ruby kullanarak) ile küçük bir proje oluşturdum. Temel olarak, Arduino kitaplıklarını derlemeyi son derece kolay hale getirmek için bir Makefile şablonu ve yakut bir komut dosyası kullanır. Bunu https://github.com/Earlz/make-wiring adresinde görebilirsiniz.

Ancak, kendi cevabınızı almakla ilgili bilgi için eski cevabı burada bırakıyorum. Yine de oldukça hantal ve sinir bozucu:

Talimatlar:

  1. Arduino IDE kaynak kodunun bir kopyasını indirin
  2. İçeriğini hardware/arduino/cores/arduinoarduino_build olarak adlandıracağım yeni bir dizine kopyala
  3. Kopya pins_arduino.hArduino varyant gelen sizindir hangisi dosyayı hardware/arduino/variantsarduino_build için (eğer emin değilseniz onay boards.txt)
  4. Bu makefile'ı arduino_build'e ekleyin:

.

#BSD licensed, see http://lastyearswishes.com/static/Makefile for full license

HDRS = Arduino.h binary.h Client.h HardwareSerial.h IPAddress.h new.h pins_arduino.h Platform.h Printable.h Print.h \
    Server.h Stream.h Udp.h USBAPI.h USBCore.h USBDesc.h WCharacter.h wiring_private.h WString.h


OBJS = WInterrupts.o wiring_analog.o wiring.o wiring_digital.o wiring_pulse.o wiring_shift.o CDC.o HardwareSerial.o \
    HID.o IPAddress.o main.o new.o Print.o Stream.o Tone.o USBCore.o WMath.o WString.o

#may need to adjust -mmcu if you have an older atmega168
#may also need to adjust F_CPU if your clock isn't set to 16Mhz
CFLAGS = -I./ -std=gnu99  -DF_CPU=16000000UL -Os -mmcu=atmega328p
CPPFLAGS = -I./ -DF_CPU=16000000UL -Os -mmcu=atmega328p

CC=avr-gcc
CPP=avr-g++
AR=avr-ar


default: libarduino.a

libarduino.a:   ${OBJS}
    ${AR} crs libarduino.a $(OBJS)

.c.o: ${HDRS}
    ${CC} ${CFLAGS} -c $*.c

.cpp.o: ${HDRS}
    ${CPP} ${CPPFLAGS} -c $*.cpp

clean:
    rm -f ${OBJS} core a.out errs

install: libarduino.a
    mkdir -p ${PREFIX}/lib
    mkdir -p ${PREFIX}/include
    cp *.h ${PREFIX}/include
    cp *.a ${PREFIX}/lib

Ve sonra sadece koş

make
make install PREFIX=/usr/arduino (or whatever)

Ve sonra derlenmiş kitaplıklardan yararlanmak ve böyle basit bir makefile kullanabilirsiniz:

default:
    avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -mmcu=atmega328p -o main.elf main.c -larduino
    avr-objcopy -O ihex -R .eeprom main.elf out.hex
upload:
    avrdude -c arduino -p m328p -b 57600 -P /dev/ttyUSB0 -U flash:w:out.hex

all: default upload

Ayrıca, kitaplıkları derlemeye çalışırsanız, libraries/işleri doğru sırada yapmazsanız bir bağlayıcı hatası alırsınız. Örneğin, SoftwareSerial'ı kullanmak için bunu yapmak zorunda kaldım:

    avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -mmcu=atmega328p -o main.elf main.c -lSoftwareSerial -larduino

-larduinoKomut satırında geçen kütüphane olmalı

Her neyse, bu benim için derlemenin oldukça kolay bir yoluydu. Ardunio'nun gelecekteki sürümleri çıktıkça, bu dosya oldukça geleceğe dönük olmalı ve OBJS ve HDRS'de sadece birkaç değişiklik gerektiriyor. Ayrıca, bu makefile hem BSD markası hem de GNU markasıyla çalışmalıdır.

Ayrıca benim bu cevabın biraz değiştirilmiş halini görmek blogda bir ile zaten derlenmiş ikili ( "standart" pins_arduino.h kullanılarak derlenmiş) kütüphanenin.


** DÜZENLE **

Aşağıdaki derleyici optimizasyon bayraklarının hem Makefile kütüphane binasına hem de her bir proje Makefile'ye eklenmesinin, derlenmiş son ikiliğin boyutunu büyük ölçüde azalttığını buldum. Bu, son ikili boyutu IDE ile karşılaştırılabilir hale getirir.

-Wl,--gc-sections -ffunction-sections  -fdata-sections  

.

Kütüphane derlemesi makefile için:

CFLAGS = -I./ -std=gnu99  -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections  -fdata-sections -mmcu=atmega328p
CPPFLAGS = -I./ -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections  -fdata-sections -mmcu=atmega328p

ve her bir proje markası için:

avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections  -fdata-sections -mmcu=atmega328p -o main.elf main.c -larduino

.

Ref: http://arduino.cc/forum/index.php?topic=153186.0


3

Arduino IDE'yi bir kez (veya cihaz türü başına bir kez) kullanmak istiyorsanız, statik bir kitaplık oluşturmanın ve kitaplık kaynaklarını almanın en kolay yolu budur. Bundan sonra size uygun geliştirme araçlarını kullanabilirsiniz.

Bu Arduino makalesi (Eclipse IDE'ye taşınan kullanıcılar için yazılmıştır), Arduino IDE ile bir çizim derleyerek ve kütüphaneyi Arduino'nun geçici dizininden alarak Arduino kütüphanesini oluşturmayı açıklar. Sayfanın yaklaşık 1 / 4'ünü bölüme kaydırın

  1. Arduino IDE projesinden kütüphaneyi kopyalama

0

Sadece mikrodenetleyici programlayıcınıza pilotluk yapabilen bir yapı sistemine ihtiyacınız varsa platformio sizin dostunuzdur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.