Подтвердить что ты не робот

Командная строка Arduino компиляции и загрузки?

Как скомпилировать и загрузить Arduino эскизы из командной строки на Mac и Linux? Я установил среду программирования Arduino. Есть ли какие-нибудь образцы файлов-шаблонов где-нибудь?

4b9b3361

Ответ 1

Компиляция и загрузка эскизов (в отличие от источников C/C++) в командной строке (в Windows, Mac и Linux) поддерживается напрямую через флаги в исполняемый файл arduino начиная с версии 1.5.0.

Ino можно скомпилировать и загрузить с помощью arduino --upload [sketch.ino]

Документация

Ответ 2

Существует набор инструментов Arduino из командной строки с именем Ino. Он просто делает это.

Ответ 3

Это мой шаблонный gnu make для проектов AVR, вам может понадобиться адаптировать некоторые из них в соответствии с вашей средой. Он создает зависимости, имеет множество стандартных параметров gcc, которые я нахожу полезными или которые оптимизируются для размера, а также библиотеку, которую я использую. Я использовал это успешно для компиляции программного обеспечения arduino, я также ранее взломал PdePreprocessor в редакторе arduino для запуска из командной строки для генерации всего voodoo:

https://github.com/wesen/mididuino/blob/master/app/src/processing/app/preproc/PdePreprocessor.java

#
# generic AVR makefile
#
# (c)  July 2011 - Manuel Odendahl - [email protected]
#

# include this into your main Makefile, after having defined TARGET and TARGET_OBJS

all: $(TARGET).hex

CURDIR := $(dir $(lastword $(MAKEFILE_LIST)))
include $(CURDIR)MidiCtrl.mk

CC             = avr-gcc
CXX            = avr-g++
OBJCOPY        = avr-objcopy
AVR_ARCH       ?= atmega64
LDAVR_ARCH     ?= avrmega64
FLASH_PROTOCOL = jtag2

CFLAGS   += -Os -ffunction-sections -DAVR -I. -mmcu=$(AVR_ARCH) -mcall-prologues -fshort-enums -fpack-struct -Wall -Werror
CFLAGS   += -Wall -DLITTLE_ENDIAN -g -flto

CFLAGS += no-tree-loop-optimize -ffreestanding -morder1 -funsigned-char -funsigned-bitfields -fshort-enums -fpack-struct
CFLAGS += -fdata-sections -fno-split-wide-types -fno-inline-small-functions -mcall-prologues

CLDFLAGS += -Wl,--relax,--gc-sections -ffunction-sections
CLDFLAGS += -mmcu=$(AVR_ARCH)
LDFLAGS  = -m $(LDAVR_ARCH) -M

# generate list
# CFLAGS += -Wa,[email protected]

%.o: %.cpp
        $(CXX) $(CXXFLAGS) -c $< -o [email protected]

%.o: %.c
        $(CC) $(CFLAGS) -c $< -o [email protected]

%.o: %.s
        $(CC) $(CFLAGS) -c $< -o [email protected]

%.s: %.c
        $(CC) -S $(CFLAGS) -fverbose-asm $< -o [email protected]

%.o: %.S
        $(CC) $(CFLAGS) -c $< -o [email protected]

%.syx: %.hex
        ihex2sysex $< [email protected]

%.srec: %.elf
        $(OBJCOPY) -j .text -j .data -O srec $< [email protected]

%.hex: %.elf
        $(OBJCOPY) -j .text -j .data -O ihex $< [email protected]

%.ee_srec: %.elf
        $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< [email protected]

AVR_BASE_DIR  ?= $(abspath $(CURDIR)..)
AVR_LIB_DIR   ?= $(AVR_BASE_DIR)/hardware/libraries

AVR_LIBS       += CommonTools Midi
AVR_LIB_DIRS   += $(foreach lib,$(AVR_LIBS),$(AVR_LIB_DIR)/$(lib))
AVR_INC_FLAGS  += $(foreach dir,$(AVR_LIB_DIRS),-I$(dir))
AVR_OBJS       += $(foreach dir,$(AVR_LIB_DIRS),$(foreach file,$(wildcard $(dir)/*.cpp),$(subst .cpp,.o,$(file))))
AVR_OBJS       += $(foreach dir,$(AVR_LIB_DIRS),$(foreach file,$(filter-out $(AVR_HOST_EXCLUDE),$(wildcard $(dir)/*.c)),$(subst .c,.o,$(file))))
AVR_DEPS       += $(subst .o,.d,$(AVR_OBJS))

# AVR_HOST_EXCLUDE can be used to exclude specific files later on

CXXFLAGS += $(AVR_INC_FLAGS)
CFLAGS += $(AVR_INC_FLAGS)

CXXFlags += -Werror -Wall
CFLAGS += -Werror -Wall

default: all

%.d:%.c
        set -e; $(CC) -MM $(CFLAGS) $< \
        | sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' > [email protected] ; \
        [ -s [email protected] ] || rm -f [email protected]

%.d:%.cpp
        set -e; $(CXX) -MM $(CXXFLAGS) $< \
        | sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' > [email protected] ; \
        [ -s [email protected] ] || rm -f [email protected]

%.host.d:%.c
        set -e; $(CC) -MM $(CFLAGS) $< \
        | sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' > [email protected] ; \
        [ -s [email protected] ] || rm -f [email protected]

%.host.d:%.cpp
        set -e; $(CXX) -MM $(CXXFLAGS) $< \
        | sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' > [email protected] ; \
        [ -s [email protected] ] || rm -f [email protected]

printlibs:
        echo $(AVR_LIBS)

$(TARGET).elf: $(TARGET).o $(TARGET_OBJS) $(AVR_OBJS)
        $(CXX) $(CLDFLAGS) -g -o [email protected] $^

_clean:
        - rm *.elf *.hex *.o .midictrl.flags

libclean:
        rm -rf $(TARGET_OBJS) $(OBJS)

# concrete settings for development environment

UNAME=$(shell uname)
ISWIN=$(findstring CYGWIN,$(UNAME))
ISMAC=$(findstring Darwin,$(UNAME))

CC = avr-gcc
CXX = avr-g++
OBJCOPY = avr-objcopy
AVR_ARCH = atmega64
F_CPU = 16000000L
CORE = minicommand2

Ответ 4

Вам нужно создать жизнеспособный файл cpp из эскиза arduino. Окружающая среда arduino делает это для вас автоматически. Один трюк, чтобы добраться до этих файлов, - это открыть файл arduino preferences.txt(он в ~/Library/Arduino на Mac, я думаю, что в ваших документах и ​​настройках или данных приложения на окнах не помню точно) и установите сборку .verbose = true и upload.verbose = true. Запустите arduino и скомпилируйте свой эскиз (не загружайте его). Консоль внизу покажет вам, какие файлы были скомпилированы. Теперь вы можете перейти в этот каталог, который будет содержать файл cpp, и скомпилированные объектные файлы для всех основных объектов arduino. Вы можете скопировать их в свой проект и использовать файл cpp для дальнейшего взлома. Дайте мне знать, если вам нужна дополнительная информация о Makefile, я могу предоставить вам те, которые у меня есть.

Ответ 5

Вы можете использовать biicode (это проект, над которым я работаю), который основан на CMake (но вы на самом деле не используете необходимо написать любой файл cmake), а также инструмент для управления библиотеками Arduino

Основные функции:

  • Разрешение зависимостей, транзитно, как и maven, но без файлов конфигурации: считывает зависимости непосредственно из исходного кода.
  • Центральный репозиторий, каждый может загружать свои библиотеки. Они могут быть исследованы, пройдены и обнаружены в Интернете
  • Контроль версий: он проверяет совместимость версий и позволяет безопасное обновление зависимостей
  • Вы можете использовать его с любым текстовым редактором (он имеет необязательную интеграцию eclipse)
  • Он управляет настройкой проекта и компиляциями, сбрасывает встроенную прошивку на плате.

Вы можете увидеть демонстрацию здесь и подробнее прочитать в документации.

Ответ 6

Если вы можете использовать cmake, то есть некоторые ссылки в одной и той же сети (this и this). GNU makefile немного отличается от cmake, но ничего сложного. Просто Google немного, и вы можете найти много примеров Makefile, как скомпилировать AVR-код.

Ответ 7

Фактически вы можете использовать графический интерфейс arduino для компиляции и загрузки, а также настроить внешний редактор в настройках. Таким образом, вы можете редактировать файлы С++ (PDE) из xcode и создавать arduino для фактического CPP и строить весь shebang.

Вы также можете использовать XCode для написания простого С++/C для arduino, используя компилятор avr-gcc.

Посмотрите: fooobar.com/questions/154808/...

Затем вы можете использовать простой инструмент загрузки avrdude для программирования arduino. Посмотрите на: http://www.ladyada.net/library/arduino/bootloader.html

Раньше было, что протокол, на котором говорил Arduino, был модификацией протокола STK500, и что только avrdude в комплекте с arduino мог говорить об этом. Я не знаю, была ли модернизирована mainrd avrdude, или вам все равно придется прибегать к avrdude внутри папки Arduino.

Ответ 8

У меня есть makefile для Arduino, который можно использовать для компиляции и загрузки программ Arduino (или простых AVR C) в Arduino.

Ниже перечислены некоторые важные функции этого make файла

  • Поддержка загрузки через Arduino как ISP или любого программиста
  • Поддержка компиляции простых программ AVR C
  • Поддерживает как пользовательские, так и системные библиотеки.
  • Сгенерировать сборку и файлы символов
  • Программа, использующая альтернативное ядро ​​Arduino (например, альтернативные ядра ATtiny или Arduino)

Ответ 9

Официальный инструмент CLI

Команда Arduino разрабатывает cli клиент https://github.com/arduino/arduino-cli

Объявление: https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/

    $ 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.

Ответ 10

Если вы не настаиваете на том, что есть также scons/sconstruct scons/sconstruct. Поскольку это в основном написано на Python, гораздо проще настроить, чем сделать. Кроме того, он может быть отлажен с любым отладчиком Python.