Arduino IDE के बिना Arduino के लिए प्रोग्रामिंग .. लेकिन प्रदान की गई पुस्तकालयों के साथ?


10

मैंने हाल ही में अपने Arduino का उपयोग करके एक नई परियोजना शुरू की है जो थोड़ी देर के लिए धूल इकट्ठा कर रहा है। धूल को इकट्ठा करने वाले भौतिक बोर्ड के साथ, एवर-जीसीसी और अरुडिनो पुस्तकालयों की मेरी प्रतिलिपि है। मैं एवीआर-जीसीसी को अपडेट करने का प्रबंधन कर सकता हूं, लेकिन मुझे याद नहीं है कि मैंने अरुडिनो लाइब्रेरीज़ को कैसे संकलित किया। Arduino स्रोत के साथ, सूचीबद्ध स्रोत फ़ाइलें और ऐसी हैं, लेकिन वास्तव में पुस्तकालय के निर्माण के लिए कोई मेकफाइल (जिसे मैं देख सकता हूं)। मुझे आईडीई के निर्माण के बारे में परवाह नहीं है, मैं सिर्फ लाइब्रेरी को बाइनरी प्रारूप में चाहता हूं और हेडर फाइलें जिन्हें मुझे आवश्यकता होगी। क्या ऐसा करने के लिए कोई दस्तावेज या ऐसा है?

मैं Arduino IDE का उपयोग नहीं करना चाहता, मैं अपने स्वयं के पाठ संपादक और एक मेकफाइल का उपयोग करना पसंद करता हूं।


1
यह आपके लिए मददगार हो सकता है।
अरिन्ब

1
@arminb bleaklow.com/2010/06/04/a_makefile_for_arduino_sketches.html इससे अधिक उपयोगी होगी। आपका लिंक सिर्फ कमांड लाइन से स्केच बनाने का एक तरीका देता है, न कि आर्कडिनो लाइब्रेरी बनाने का तरीका। अप्रासंगिक या तो वैसे भी क्योंकि मैंने अपने सवाल का जवाब दिया है
अर्लज़


@ जिप्पी मैंने उस पर ध्यान दिया (जब पूछा नहीं गया, लेकिन हाल ही में जब इस पर दोबारा गौर किया गया) लेकिन इस तथ्य से दूर रखा गया कि आपको Arduino IDE स्थापित करना होगा। उद्देश्य को पराजित करने का प्रकार
अर्लज़

जवाबों:


9

मैंने एक कस्टम बिल्ड सिस्टम (रूबी का उपयोग करके) के साथ एक छोटी सी परियोजना बनाई है जो Arduino IDE को स्थापित किए बिना इसे बहुत आसान बनाती है। मूल रूप से, यह Arduino पुस्तकालयों को बेहद आसान बनाने के लिए एक टेम्पलेट मेकफाइल, और एक रूबी स्क्रिप्ट का उपयोग करता है। आप इसे https://github.com/Earlz/make-wiring पर देख सकते हैं

हालाँकि, मैं अपना स्वयं का रोल करने की जानकारी के लिए पुराना उत्तर यहाँ छोड़ रहा हूँ। हालांकि यह काफी बोझिल और कष्टप्रद है:

दिशा:

  1. Arduino IDE स्रोत कोड की एक प्रति डाउनलोड करें
  2. hardware/arduino/cores/arduinoएक नई निर्देशिका की सामग्री की प्रतिलिपि बनाएँ जिसे मैं arduino_build के रूप में संदर्भित करूँगा
  3. Arduino_build pins_arduino.hसे जो भी Arduino संस्करण से फ़ाइल की प्रतिलिपि बनाएँhardware/arduino/variants
  4. इस makefile को arduino_build में जोड़ें:

#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

और फिर बस दौड़ो

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

और फिर संकलित पुस्तकालयों का उपयोग करने के लिए और इस तरह आप एक साधारण मेकफाइल का उपयोग कर सकते हैं:

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

इसके अलावा, यदि आप पुस्तकालयों को संकलित करने का प्रयास करते हैं, तो आप libraries/एक लिंकर त्रुटि प्राप्त करेंगे यदि आप सही क्रम में चीजें नहीं करते हैं। उदाहरण के लिए, मुझे SoftwareSerial का उपयोग करने के लिए ऐसा करना पड़ा:

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

-larduinoकमांड लाइन पर पिछले पुस्तकालय होना चाहिए

वैसे भी, यह मेरे लिए इसे संकलित करने का एक बहुत आसान तरीका था। चूंकि अर्दुनियो के भविष्य के संस्करण सामने आते हैं, इसलिए इस मेकाइल को काफी भविष्य का प्रमाण होना चाहिए, जिसमें ओबीजेएस और एचडीआरएस के लिए कुछ संशोधनों की आवश्यकता होती है। इसके अलावा, इस मेकफाइल को BSD मेक और GNU मेक दोनों के साथ काम करना चाहिए

पुस्तकालय के पहले से संकलित बाइनरी ("मानक" pins_arduino.h का उपयोग करके संकलित) के साथ मेरे ब्लॉग पर इस उत्तर का थोड़ा संशोधित संस्करण भी देखें ।


** EDIT **

मैंने पाया कि लाइब्रेरी बिल्डिंग मेकफाइल और प्रत्येक व्यक्तिगत प्रोजेक्ट दोनों में निम्नलिखित कंपाइलर ऑप्टिमाइज़ेशन फ़्लैग्स को जोड़ने से मेकफाइल अंतिम संकलित बाइनरी के आकार को बहुत कम कर देता है। यह IDE की तुलना में अंतिम बाइनरी आकार बनाता है।

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

इसलिए, पुस्तकालय निर्माण के लिए मेकफाइल:

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

और, प्रत्येक प्रोजेक्ट मेकाइल के लिए:

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

संदर्भ: http://arduino.cc/forum/index.php?topic=153186.0


3

यदि आप एक बार (या एक बार डिवाइस प्रकार) Arduino IDE का उपयोग करने के लिए तैयार हैं, तो यह एक स्थैतिक पुस्तकालय बनाने का सबसे आसान तरीका है, साथ ही पुस्तकालय स्रोत भी प्राप्त करना है। उसके बाद आप जो भी डेवलपमेंट टूल आपको सूट करते हैं उसका इस्तेमाल कर सकते हैं।

यह Arduino लेख (ग्रहण आईडीई में जाने वाले उपयोगकर्ताओं के लिए लिखा गया) Arduino IDE के साथ एक स्केच संकलित करके और Arduino की अस्थायी निर्देशिका से लाइब्रेरी को पुनः प्राप्त करके Arduino लाइब्रेरी बनाने का वर्णन करता है। पृष्ठ के लगभग 1/4 भाग तक स्क्रॉल करें

  1. एक Arduino IDE परियोजना से पुस्तकालय की नकल करना

0

यदि आपको बस एक ऐसी निर्माण प्रणाली की आवश्यकता है जो आपके माइक्रोकंट्रोलर प्रोग्रामर को भी पायलट कर सकती है, तो platformio आपका मित्र है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.