Arduino cli что это
Перейти к содержимому

Arduino cli что это

  • автор:

Arduino cli что это

6.07.2018 Опубликовано в Полезные советы

Среда разработки Quartus II имеет удобное средство для загрузки «прошивки» в ПЛИС с помощью интерфейса командной строки ( CLI ) – консольную программу quartus_pgm.exe. Чтобы её использовать, проще всего использовать bat-файл примерно вот с таким содержимым:

  1. Arduino это.
  2. Arduino это.
  3. Arduino это.

Отличный способ начать знакомство с электроникой, микроконтроллерами и программированием!

Замечательное средство для создания собственных электронных устройств, которые пригодятся в быту или для развлечения!

Уникальный конструктор, для которого разработаны десятки совместимых датчиков и модулей!

Полезные советы

Print Friendly, PDF & Email

Для настройки останова процесса отладки при возникновении определённого типа исключения, нужно сделать следующее. Открыть в меню Отладка – Исключения (Debugging – Exceptions) или нажать сочетание клавиш Ctrl+Alt+E . Открываем окно «Исключения»Нажать кнопку Найти и ввести часть имени или полное название исключения: Найти название исключенияВыбрать в древовидном списке исключений желаемые и нажать OK: Выбрать в древовидном списке исключений желаемоеТеперь отладка будет остановлена в момент возникновения данного типа исключения и показана отладочная информация.

Home

Arduino CLI is an all-in-one solution that provides Boards/Library Managers, sketch builder, board detection, uploader, and many other tools needed to use any Arduino compatible board and platform from command line or machine interfaces.

In addition to being a standalone tool, Arduino CLI is the heart of all official Arduino development software (Arduino IDE, Arduino Web Editor). Parts of this documentation apply to those tools as well.

Installation¶

You have several options to install the latest version of the Arduino CLI on your system, see the installation page.

Getting started¶

Follow the Getting started guide to see how to use the most common CLI commands available.

Using the gRPC interface¶

The client_example folder contains a sample program that shows how to use the gRPC interface of the CLI. Available services and messages are detailed in the gRPC reference pages.

Versioning and backward compatibility policy¶

This software is currently under active development: anything can change at any time, API and UI must be considered unstable until we release version 1.0.0. For more information see our versioning and backward compatibility policy.

Arduino cli что это

В составе установленной системы 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

[Ссылки]

GITLAB CI для ESP32 и Arduino CLI

Я тут подумал, что давно про программирование ничего не писал. А тут и повод появился. Жорик-аннигилятор ведь вовсю обрастает кодом, который, естественно, хранится на домашнем GitLab сервере, но который всё ещё ни тестами не покрыт, ни билдится автоматически.. В общем, всячески игнорирует блага цивилизации.

Тут, конечно, есть некоторая уважительная причина — код пишется же на микроконтроллере, билдится через Arduino IDE, и с точки зрения CI/CD тут не сразу непонятно, с какой стороны ко всему этому подходить. Всё-таки, если тестировать, то.. как? Вводить какой-нибудь hardware abstraction layer? Или вот если автоматически собирать проект на GitLab сервере, то как тогда избавиться от окошек Arduino и делать всё исключительно в консоли? И как вообще спустя 2 месяца после начала проекта вспомнить, что за пакеты я устанавливал и откуда?

С тестами у меня уже какие-то мысли намечаются, но с автоматическими билдами и Continuous Integration вообще у Arduino, оказывается, всё вполне себе хорошо уже сейчас. Всего пара часов гугла и вот оно, работает. Теперь буду делиться впечатлениями.

Секретный рецепт

Если очень кратно, то есть такая штука как arduino-cli , которая, пусть всё ещё и живёт в preview версии, вполне способна заменить своего взрослого оконного собрата. А дальше всё просто: берём гитлаб сервер, у которого настроен хотя бы один gitlab-runner (а иначе кто будет собирать билды?), в проект кладём .gitlab-ci.yml , чтобы runner знал, что именно входит в билд, и изнутри дёргаем arduino-cli .

Так как сам по себе GitLab CI слегка выходит за рамки этого поста, то вот ссылка на мой старый пост про сам GitLab, второй — про docker executors, один из которых будет сегодня использоваться, и мы сразу перейдём к созданию .gitlab-ci.yml файла, настройки build окружения и самому билду. Поехали.

1. .gitlab-ci.yml

Значит, .gitlab-ci.yml будет простым — запросит билд в docker контейнере, установит внутри arduino-cli и библиотеки для проекта, и в качестве единственной стадии сборки скомпилирует проект.

Почему в docker контейнере? Просто я не люблю захламлять живую систему временными и большей частью бесполезными пакетами. А так запустил контейнер, поделал дела, да и выбросил его на помойку.

Запрашиваем билд в docker контейнере

На моём GitLab сервере зарегистрирован всего один gitlab-runner, который, по счастливому совпадению, сконфигурирован как docker-executor, и поэтому любые пришедшие к нему билды он будет запускать прямиком в докер контейнере. Более того, он и помечен тэгом docker , так что для того, чтобы навсегда гарантировать, что мои esp32 билды пойдут именно туда, этот же тэг я буду использовать и в .gitlab-ci.yml файле.

Для docker раннера ещё стоит указать какой именно образ контейнера мы хотим использовать, дабы он не скатился к дефолтному. На сегодня ubuntu:18.04 мне вполне хватит, так что заготовка для .gitlab-ci.yml становится похожей вот на что:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *