Kuinka kääntää, ladata ja seurata Linux-komentorivin kautta?

Arduino Unon (esim. lataaminen jne.) liittäminen Arduino IDE: hen (käyttäen Fedora-pakettia) toimii hyvin Fedora 21: n alla.

Mutta haluan mieluummin käyttää vim + make + vim-quickfix-mode jne.

Kuinka voin tehdä sen?

Mieluiten Fedora-arkistojen käytettävissä olevien työkalujen avulla.

Oletan, että IDE kutsuu ulkoisia komentorivi-apuohjelmia lataamista varten jne.

IDE: n sarjavalvojan vastaava on todennäköisesti yhdistämässä pääteemulaattoria (esim. screen) – /dev/ttyACM0, eikö?

Ehkä on hyvä esimerkkiprojekti, jota voidaan tarkastella makefailessa?

Vastaa

Ehdotan Googlingia Makefile-projekteille. Tein jonkin aikaa sitten Blink-ohjelmaa varten, katsomalla pohjimmiltaan IDE: n luomat ja kopioimalla että yleisemmällä tavalla.

# # Simple Arduino Makefile # # Author: Nick Gammon # Date: 18th March 2015 # where you installed the Arduino app ARDUINO_DIR = C:/Documents and Settings/Nick/Desktop/arduino-1.0.6/ # various programs CC = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-gcc" CPP = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-g++" AR = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-ar" OBJ_COPY = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-objcopy" MAIN_SKETCH = Blink.cpp # compile flags for g++ and gcc # may need to change these F_CPU = 16000000 MCU = atmega328p # compile flags GENERAL_FLAGS = -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=$(F_CPU)L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 CPP_FLAGS = $(GENERAL_FLAGS) -fno-exceptions CC_FLAGS = $(GENERAL_FLAGS) # location of include files INCLUDE_FILES = "-I$(ARDUINO_DIR)hardware/arduino/cores/arduino" "-I$(ARDUINO_DIR)hardware/arduino/variants/standard" # library sources LIBRARY_DIR = "$(ARDUINO_DIR)hardware/arduino/cores/arduino/" build: $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(MAIN_SKETCH) -o $(MAIN_SKETCH).o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/malloc.c -o malloc.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/realloc.c -o realloc.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WInterrupts.c -o WInterrupts.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring.c -o wiring.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_analog.c -o wiring_analog.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_digital.c -o wiring_digital.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_pulse.c -o wiring_pulse.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_shift.c -o wiring_shift.c.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)CDC.cpp -o CDC.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HID.cpp -o HID.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)IPAddress.cpp -o IPAddress.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)main.cpp -o main.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)new.cpp -o new.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Print.cpp -o Print.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Stream.cpp -o Stream.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Tone.cpp -o Tone.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)USBCore.cpp -o USBCore.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WMath.cpp -o WMath.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WString.cpp -o WString.cpp.o rm core.a $(AR) rcs core.a malloc.c.o $(AR) rcs core.a realloc.c.o $(AR) rcs core.a WInterrupts.c.o $(AR) rcs core.a wiring.c.o $(AR) rcs core.a wiring_analog.c.o $(AR) rcs core.a wiring_digital.c.o $(AR) rcs core.a wiring_pulse.c.o $(AR) rcs core.a wiring_shift.c.o $(AR) rcs core.a CDC.cpp.o $(AR) rcs core.a HardwareSerial.cpp.o $(AR) rcs core.a HID.cpp.o $(AR) rcs core.a IPAddress.cpp.o $(AR) rcs core.a main.cpp.o $(AR) rcs core.a new.cpp.o $(AR) rcs core.a Print.cpp.o $(AR) rcs core.a Stream.cpp.o $(AR) rcs core.a Tone.cpp.o $(AR) rcs core.a USBCore.cpp.o $(AR) rcs core.a WMath.cpp.o $(AR) rcs core.a WString.cpp.o $(CC) -Os -Wl,--gc-sections -mmcu=$(MCU) -o $(MAIN_SKETCH).elf $(MAIN_SKETCH).o core.a -lm $(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $(MAIN_SKETCH).elf $(MAIN_SKETCH).eep $(OBJ_COPY) -O ihex -R .eeprom $(MAIN_SKETCH).elf $(MAIN_SKETCH).hex 

Sinun on muutettava ainakin ARDUINO_DIR, jotta voit viitata luennon, johon olet asentanut IDE: n. Jos käytät muita asioita, kuten Wire-kirjastoa, sinun on laajennettava sitä jonkin verran uusien kirjastojen kokoamiseksi. Jälleen voit käyttää muutosten ohjaamiseen IDE: n itse luomaa.

Yläpuolella olevilla välilyönneillä varustetut rivit tarvitsevat -välilehden -merkki välilyöntien sijaan, kuten Makefileen normaalisti.

Kommentit

  • make-tiedoston lähetysosio on myös hyödyllistä ladata käännetty luonnos arduinoon (käyttäen avr-dude).
  • Se olisi ehdottomasti hyödyllistä. Koska IDE on toistaiseksi tyydyttänyt kokoamis- ja lataamistarpeeni, en ole kovin motivoitunut selvittämään, miten se tehdään. 🙂
  • Katso metamorfinen vastaus saadaksesi helpomman ratkaisun

vastaus

Käytän komentoriviliittymää arduino -komentoon .

Suoritan sitä kuten tämä:

arduino --upload sketch/sketch.ino --port /dev/ttyUSB* 

On sivu , joka kuvaa muita komentorivityökaluja, kuten inotool. Sivulla on myös esimerkki Makefile. Nämä vaihtoehdot vaikuttavat houkuttelevilta, mutta ilmeisesti yksikään niistä ei toimi tämän kirjoituksen jälkeen. Oletan, että tämä johtuu joistakin Arduino IDE -jakelutiedostojen viimeaikaisista muutoksista, joista ne riippuvat.

Kuten yllä on, arduino on ajettu hieman hitaasti, koska se täytyy ladata Java Java, mutta ainakin se toimii. On myös arduino-builder komento, joka tulee Arduino IDE -jakelua. Tämän kirjoituksen jälkeen se ei ollut riittävän hyvin dokumentoitu, jotta voisin selvittää, miten sitä käytetään. Esimerkiksi README-ohjelmassa tai missään opastamassani ohjelmassa ei ole esimerkkejä komentoriveistä, enkä voinut selvittää, miten sen avulla voidaan lähettää koodi taululle. Oletettavasti se pystyy kuitenkin tuottamaan meille nopeamman käännöksen kuin arduino. README mainitsee myös edellisen käännöksen objektitiedostojen uudelleenkäytön, joten siinä on joitain mallinomaisia toimintoja.


Sarjaulostulon tarkasteleminen Käytän jotain sellaista kuin

stty -F /dev/ttyUSB* 1000000 raw -clocal -echo cat /dev/ttyUSB* 

Numeron 1000000 on vastattava numeroa, jonka välität osoitteeseen Serial.begin() lautakoodisi. Voit myös käyttää screen -ohjelmaa, jos sinulla on tarkoituksenmukainen vuorovaikutteinen levyohjelma tai voit käyttää mitä tahansa apuohjelmaa kirjoittaaksesi suoraan laitteeseen. Muuten erääntymispäiväni näkyy muodossa /dev/ttyACM0 (Unon sijaan /dev/ttyUSB0).

Kommentit

  • Varmista, että hakemistossa on yksi *.ino -tiedosto, koska se ei näytä välttämättä lataavan --upload -parametri.
  • X11 DISPLAY-muuttujaa ei asetettu, mutta tämä ohjelma suoritti sen edellyttävän toiminnon. Minulle

vastaus

Tarvitset Makefile-tiedoston. Arduinolle on olemassa muutama Makefile-projekti. Google-haku ”Arduino Makefile” -palveluun palauttaa monia tuloksia, mukaan lukien hyvältä näyttävät tulokset Githubissa: https://github.com/sudar/Arduino-Makefile

Komentoriviltä kääntäminen ei ole vähäistä, koska Arduino IDE käsittelee kirjastoja.

Vastaa IDE: n sarjaa monitori todennäköisesti yhdistää pääteemulaattorin (esim. näyttö) kohteeseen / dev / ttyACM0, eikö?

Sarjamonitorille suosittelen minicomia. Se on täysin toimiva pääteemulaattori (vt102) komentorivillä.

minicom -D /dev/ttyACM0 -b 115200 

… esimerkiksi.

Kommentit

vastaus

virallinen CLI-työkalu

Arduino-tiimi kehittää cli asiakas https://github.com/arduino/arduino-cli

Ilmoitus : https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/

Voit tehdä melkein kaiken tällä toiminnolla, levyjen ja kirjastojen lataamisesta aina skriptien kokoamiseen ja lähettämiseen. Valvontaosasta puuttuu (voit käyttää Metamorphic ”-menetelmää käyttämällä stty cat, Se toimii!)

Komennot ovat hyvin samankaltaisia kuin Metamorphic” vastauksen kanssa, koska tämä työkalu haarautuu tästä

Ohjeet Github-repossa ja man-sivulla:

 $ arduino-cli Arduino Command Line Interface (arduino-cli). Usage: arduino-cli [command] Examples: arduino <command> [flags...] Available Commands: board Arduino board commands. compile Compiles Arduino sketches. config Arduino Configuration Commands. core Arduino Core operations. help Help about any command lib Arduino commands about libraries. sketch Arduino CLI Sketch Commands. upload Upload Arduino sketches. version Shows version number of Arduino CLI. 

Vastaa

Jos haluat täysin yhteensopivan ratkaisun arduino-projektiisi (kyllä, voit jakaa projektisi muiden ihmisten kanssa vain tavallinen Arduino IDE), sinun on tarkistettava amake työkalu arduinon klien yksinkertaistamiseksi, käytän sitä Geanyn kanssa, mutta muut käyttävät sitä vi, Atomilla jne.

Se on innoittamana ja nyt kuolleet Ino- ja Arturo-projektit; vie 5 minuuttia sen testaamiseen ja anna palautetta.

Esimerkki käytöstä:

cd ~/Arduino/Blink/ [move to your arduino project folder] amake -v uno Blink.ino [to compile/verify your code] amake -u uno Blink.ino /dev/ttyUSB0 [to upload your code to an arduino connected via USB] 

Siinä on älykäs liima, se osaa muistaa taulun ja tiedoston ja jopa tunnistaa taulun USB: n automaattisesti; joten onnistuneen ”amake -v” -komennon jälkeen voit tehdä tämän komentorivillä ja se toimii.

amake -v [to compile/verify your code] amake -u [to upload your code to an arduino connected via USB] 

Jos käytät joitain IDE-makroja, voit käsittele kääntö- ja latauskomennot helposti, esimerkiksi Geany IDE: n avulla siitä tulee:

  • Käännä / vahvista: cd% d; amake -v uno% f
  • Lataa: cd% d; amake -u uno% f

Saat enemmän apua vain ”amake” tai ”amake -h” suorittamisesta asennuksen jälkeen.

Se voi myös tukea KAIKKI -taulu / lib / ohjelmoija, jonka olet asentanut / määrittänyt Arduino IDE -laitteeseesi, kyllä, moderni kortti, kuten Adafuit Trinket M0 / Arduino M0 jne …

Käynnistä vain Arduino IDE, siirry taulunhallintaohjelmaan, asenna tuki ja kaikki, noudata joitain yksinkertaisia ohjeita ja olet asetettu.

Taulu sinua ei tueta? ei ole ongelma, tunnista fqbn (lue README.md-tiedosto) ja välitä se taulun nimellä.

Etsin testaajia kasvattamaan numeroa tai taulua aliakset ja oikean USB-allekirjoituksen automaattinen tunnistus.

Muista, että tämä on yksityinen kasvatettu työkalu, joka on nyt jaettu yleisön kanssa. Tiedätkö, vain ohjelmoija naarmuttaa sen kutinaa …

Kippis.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *