Как компилировать скетч без среды Arduino IDE |
![]() |
Добавил(а) microsin |
В составе установленной системы Arduino IDE есть утилита командной строки arduino-cli: $ find ~/arduino-ide_2.2.1_Linux_64bit/ -name arduino-cli
~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli
$ ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli --help Arduino Command Line Interface (arduino-cli). Usage: arduino-cli [command] Examples: ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli < command> [flags...] Доступны команды (command): board команды для платы Arduino. burn-bootloader прошивка загрузчика (Upload the bootloader). cache команды кэша Arduino. compile компиляция скетчей Arduino. completion создание сценариев завершения (completion scripts). config команды конфигурации Arduino. core операции ядра Arduino. daemon запуск службы на port: 50051 debug отладка скетчей Arduino. help подсказка по любой команде. lib команды Arduino, касающиеся библиотек. monitor открыть порт обмена с платой. outdated перечислит ядра (cores) и библиотеки, которые можно обновить. sketch команды скетча Arduino CLI. update обновит индекс ядер и библиотек. upgrade обновляет установленные ядра и библиотеки. upload прошивка скомпилированного скетча. version покажет номер версии Arduino CLI. Флаги (flags): --additional-urls strings список разделенных запятой дополнительных ссылок (URL) для Boards Manager. --config-file string пользовательский файл конфигурации (если он не указан, то будет файл конфигурации по умолчанию). --format string формат вывода для логов, может быть: text, json, jsonmini, yaml (по умолчанию "text"). -h, --help вывод подсказки для arduino-cli. --log печать логов в стандартный вывод. --log-file string путь до файла, куда будут записаны логи. --log-format string формат вывода для логов, может быть: text, json --log-level string будут выведены в лог сообщения с этим уровнем и выше. Допустимы уровни: trace, debug, info, warn, error, fatal, panic. --no-color запрет раскраски вывода. Используйте "arduino-cli [command] --help" для дополнительной информации по любой команде command. Также командную строку для компиляции можно подсмотреть, если разрешить подробный вывод в лог процесса компиляции. Это делается настройкой "Show verbose output during", доступной в меню File -> Preferences, надо поставить галочки compile и upload. Пример скрипта для компиляции скетча Quark.ino для трансивера uSDK Quark v2.0, составленный с помощью подробного вывода из Arduino IDE: #!/bin/bash
SKETCH=Quark.ino TOOLSPATH=~/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin ARDCORE=~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino VARIANTS=~/.arduino15/packages/arduino/hardware/avr/1.8.6/variants/eightanaloginputs CTAGS=$HOME/.arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags cp -f ./$SKETCH ./$SKETCH.cpp # Detecting libraries used...
$TOOLSPATH/avr-g++ -c -g -Os -w \ -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics \ -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o /dev/null # Generating function prototypes...
$TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L \ -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./sketch_merged.cpp $CTAGS -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives ./sketch_merged.cpp # Компиляция скетча...
$TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./$SKETCH.cpp.o # Compiling libraries...
# Compiling core...
# Using precompiled core: core.a
# Linking everything together...
$TOOLSPATH/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o ./$SKETCH.elf \ ./$SKETCH.cpp.o ./core.a -L. -lm $TOOLSPATH/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings \ --change-section-lma .eeprom=0 ./$SKETCH.elf ./$SKETCH.eep $TOOLSPATH/avr-objcopy -O ihex -R .eeprom ./$SKETCH.elf ./$SKETCH.hex $TOOLSPATH/avr-size -A ./$SKETCH.elf Скрипт для прошивки: #!/bin/bash
SKETCH=Quark.ino # Upload:
AVRDUDE=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude AVRDUDECONF=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf PORT=/dev/ttyUSB0 $AVRDUDE -C$AVRDUDECONF -v -V -patmega328p -carduino -P$PORT -b57600 -D -Uflash:w:$SKETCH.hex:i [Ссылки] |