Как загрузить уже скомпилированный код, когда никаких изменений не производилось?

Как использовать Arduino IDE для загрузки последнего скомпилированного кода? Я не хочу ждать 2 минуты, чтобы загрузить скомпилированный код, когда нет никаких изменений. Это большая кодовая база, в которую я часто вношу одно или два небольших изменения, и у меня возникают проблемы с моим MCU или кабелями USB. Часто контроллер на моих платах повреждается из-за перегрузки по току из-за высокой температуры при 3D-печати. Так что ждать лишние 2-5 минут каждый раз, когда я экспериментирую с этим, неприемлемо.

Очевидно, что для этого есть сочетание клавиш, о котором я не знаю. Потому что в противном случае это увеличило бы время разработки.

Пожалуйста, скажите мне, как я могу заставить Arduino-IDE просто «загружать без компиляции» мой скетч.

, 👍3

Обсуждение

Какую версию Arduino IDE вы используете? Раньше это был хлам, но в более поздних версиях лучше кэшируется скомпилированный код. В качестве альтернативы [UECIDE](https://uecide.org) имеет гораздо лучшее кэширование, чем Arduino IDE, и из-за этого перекомпиляция выполняется намного быстрее., @Majenko

вы можете найти bin-файл компиляции в своей временной папке, а затем использовать другой инструмент загрузки (или OTA), чтобы отправить его., @dandavis

@Majko: ссылка на UECIDE выше, похоже, не указывает туда, куда она должна указывать; возможно, заменить на https://github.com/UECIDE/UECIDE?, @ocrdu


2 ответа


Лучший ответ:

3

Вы можете загрузить шестнадцатеричный файл на плату из командной строки без Arduino IDE.

Чтобы получить шестнадцатеричный файл, используйте в Arduino IDE в меню команду «Экспортировать скомпилированный двоичный файл». Hex-файл будет сохранен рядом с ino-файлом.

Я предполагаю, что ваша плата в принтере имеет микроконтроллер AVR. Затем вы можете использовать avrdude из командной строки, чтобы снова и снова загружать шестнадцатеричный файл без какой-либо компиляции.

Команда avrdude в Windows (при запуске из папки скетча):

%LOCALAPPDATA%\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -C%LOCALAPPDATA%\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -PCOM11 -b115200 -D -Uflash:w:Blink.ino.hex:i

Командная строка предназначена для скетча Blink и пакета плат AVC 1.6.21

,

2

Это то, что я сделал. На панели настроек IDE Arduino включите параметр «Показывать подробный вывод во время компиляции и загрузки». Таким образом, всякий раз, когда вы выполняете проверку и загрузку, вы можете видеть все команды, которые выполнил Arduino. Теперь после того, как вы нажмете «Проверить» или «Загрузить», вы можете скопировать последнюю команду перед загрузкой, например

"/Users/fang/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude" "-C/Users/fang/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf" -v -V -patmega32u4 -cavr109 "-P/dev/cu.usbmodem21101" -b57600 -D "-Uflash:w:/private/var/folders/xb/4609zdjx4tn3bv_6jh2nym_r0000gn/T/arduino/sketches/7972D54945A751059BF3114D2057C2B6/sketch_aug4c.ino.hex:iquot;

Теперь, когда вам нужно загрузить без повторной компиляции, просто вставьте эту строку в Терминал, все остальное он сделает за вас. По сути, вы можете видеть, что Arduino IDE — это всего лишь оболочка этих команд.

Обновление:

Я также нашел другой способ, немного другой, но более эффективный. Если вы используете код Visual Studio, вы также можете попробовать плагин PlatformIO, который может компилировать и загружать код отдельно. Я написал об этом статью здесь, https://windmaomao.medium.com/use-platformio-to-write-arduino-code-3c957c4e58b5

,