Отсутствие прокси-сервера USB-устройства (usbip по состоянию на февраль 2016 г. не выглядит очень портативным), другим способом является установка avrdude
на система, подключенная к Arduino (ДИСТАНЦИОННАЯ). Если это возможно, то запущенная система Arduino IDE (КЛИЕНТ) может получить указание вызвать программу, которая подключается к avrdude
на УДАЛЕННОМ. Недостатки: требуется возиться с файлами конфигурации Arduino IDE, вероятно, хрупкие, потребуется дополнительная работа для поддержки таких вещей, как arduinoOTA
и так далее ...
CLIENT (Arduino IDE) -> ssh -> REMOTE (avrdude) -> usb -> arduino
Arduino IDE должна содержать programmers.txt Файлы конфигурации
и platform.txt
(находятся, например, в Arduino.app/Contents/Java/hardware/arduino/avr
в версии для Mac). Что нам нужно в этих файлах, так это новый программатор, который установит соединение с REMOTE и передаст данные для загрузки, а затем на REMOTE будет выдавать настоящую команду программиста avrdude
, используя данные, переданные из системы CLIENT. .
В Java / hardware / arduino / avr / programmers.txt
добавьте что-то вроде
avrrelay.name=AVR RELAY
avrrelay.protocol=stk500v2
avrrelay.program.tool=avrrelay
avrrelay.program.extra_params=
Более сложно, в Java / hardware / arduino / avr / platform.txt
дублирует все tools.avrdude.
, содержащие строки, и измените их так, чтобы вместо этого они назывались tools.avrrelay.
и, где необходимо, вместо этого вызовите avrrelay-client
(большая часть этих строк не обязательна, но, вероятно, легче их все подкорректировать, чем выяснить, какие из них необходимы):
tools.avrrelay.path={runtime.tools.avrdude.path}
tools.avrrelay.cmd.path={path}/bin/avrrelay-client
tools.avrrelay.config.path={path}/etc/avrdude.conf
... many more of these not shown, e.g. the verbose one ...
tools.avrrelay.upload.pattern="{cmd.path}" "{build.path}/{build.project_name}.hex"
tools.avrrelay.program.pattern="{cmd.path}" "{build.path}/{build.project_name}.hex"
Затем в Каталог Java / hardware / tools / avr / bin
(который должен быть идентичен параметру конфигурации runtime.tools.avrdude.path
) создать avrrelay-client
и сделать это исполняемый файл:
#!/bin/sh
# send the only argument (which should be the *.hex file) to avrrelay-remote
# this will need to use public key auth, or expect to automatically fill
# in any password promptes
ssh theremotehost avrrelay-remote < "$1"
В Arduino IDE есть параметр предпочтения для отображения подробного вывода во время загрузки,который покажет запущенную команду.
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude \
-C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf \
-v -patmega328p -cstk500v2 -Pusb \
-Uflash:w:/blablabla.../Blink.ino.hex:i
Эта команда может быть скопирована и адаптирована для кода на REMOTE, хотя avrdude (1)
указывает, что имя файла должно быть указано, поэтому скопированные данные необходимо будет поместить в файл tmp, и который поступил на avrdude
; это программа avrrelay-remote
, вызываемая КЛИЕНТОМ; он должен быть chmod + x
и вызываться по полному пути или находиться в SSH-доступном каталоге PATH
.
#!/bin/sh
FLASH=`mktemp /tmp/avrrelay.XXXXXXXXXX` || exit 1
# assume data passed via standard input
cat > "$FLASH"
# these flags will vary depending on programmer, etc
avrdude -C /path/to/avrdude.conf -v -patmega328p -cstk500v2 -Pusb \
"-Uflash:w:$FLASH:i"
Теоретически перезапустите Arduino IDE и попробуйте использовать новый программатор «AVR RELAY». Используйте свои безумные навыки отладки, чтобы выяснить, где он ломается, повторите.
Чтобы монитор последовательного порта работал удаленно, вероятным вариантом будет его пересылка через socat
:
Вчера возникла временная проблема с DNS Fedora — проблема с DNSSEC — как раз в то время, когда у вас возникла эта проблема. Теперь эта проблема решена.
Я побежал dnf clean all
. Кажется, работает. Также мне пришлось изменить свой DNS на OpenDNS. Мой интернет-провайдер явно не любит Red Hat