Программирование AVR Как компилировать скетч без среды Arduino IDE Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Как компилировать скетч без среды 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.

Arduino IDE Show verbose output

Пример скрипта  для компиляции скетча 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

[Ссылки]

1. uSDX: микро-трансивер SDR на AVR.

 

Добавить комментарий


Защитный код
Обновить

Top of Page