Невозможно загрузить скетчс помощью Platformio (но Arduino IDE работает)

Я использую Arduino Nano (клон), который я программировал с помощью Arduino IDE (версия 1.8.5 для Mac OS X 10.10.5).

Используя Arduino IDE, мне нужно повторно подключить Nano перед загрузкой, но после этого все работает должным образом, и скетч успешно загружается.

Затем я попытался использовать Platformio core (CLI) и получил хорошо известную ошибку not in sync:

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

Как уже было сказано, эта ошибка хорошо известна, особенно. в отношении клонов Arduino и несколько раз сообщал об Интернете с различными решениями.

Мне просто интересно, как Arduino IDE может успешно загружать код, но Platformio - нет, поскольку и Arduino IDE, и Platformio CLI просто вызывают avrdude для загрузки кода.

Примечание: Загрузка одного и того же кода в Arduino Uno работает как шарм как с использованием Arduino IDE, так и с Platformio.


Обновления в связи с дальнейшим расследованием:

Я включил подробный вывод как для Arduino IDE, так и для Platformio, показывающий точную команду avrdude, выполняемую для загрузки встроенного шестнадцатеричного файла. Я принял вызов avrdude из Arduino IDE с указанием пути к скомпилированному коду Platformio. Это работает так, как и ожидалось:

avrdude -v -p atmega328p -c arduino -b 57600 -D -P /dev/cu.usbserial-00000000 -U flash:w:.pioenvs/nano/firmware.hex:i

Затем я взглянул на команду, используемую Platformio, которая очень похожа, но предоставляет дополнительный -C для конфигурационного файла:

avrdude -v -p atmega328p -C /Users/Albert/.platformio/packages/tool-avrdude/avrdude.conf -c arduino -b 57600 -D -P "/dev/cu.usbserial-00000000" -U flash:w:.pioenvs/nano/firmware.hex:i

К сожалению, я не могу запустить эту команду из терминала из-за ошибки:

avrdude: Version 6.0.1, compiled on Dec 16 2013 at 17:26:24
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/Users/Albert/.platformio/packages/tool-avrdude/avrdude.conf"
avrdude: syntax error at /Users/Albert/.platformio/packages/tool-avrdude/avrdude.conf:1080

, 👍4

Обсуждение

попробуйте загрузить в Nano с выбранным Uno в качестве платы, @Juraj

@Juraj: Использование Uno вместо Nano также не работает., @albert

есть ли у Platformio опция "старый загрузчик" для Nano?, @Juraj

Существует "обычный" и "новый" вариант. Оба не работают. Единственное отличие, на первый взгляд, заключается в скорости передачи данных в бодах. Я мог бы взглянуть на сценарии загрузки для получения дополнительных различий..., @albert

Я попытался воспроизвести эту проблему с помощью клона nano в mac os 10.12.6 с использованием platformio IDE, и никаких проблем не возникло. Я бы попробовал две вещи: загрузить простой скетч blink (или пустой цикл) с помощью arduino IDE, чтобы убедиться, что плата не пытается подключиться через UART, что мешает процессу загрузки в platformio; и если это не поможет, я бы повторно прошил загрузчик. Кроме того, если platformio не обновлен, безусловно, неплохо обновить его, чтобы убедиться, что он использует последний конфигурационный файл avrdude +., @ex-punctis

@Im_Int: Обновлен до Arduino 1.8.7 и попытался перепрошить загрузчик. Перепрошивка работала не с Arduino 1.8.7, а с 1.8.5. После этого все еще не удалось загрузить код с помощью Platformio. Попробовал другой клон Arduino Nano: смог загрузить код один раз с помощью Platformio, но больше никогда. Загрузка с помощью Arduino IDE 1.8.7 работает, невозможно повторно прошить загрузчик на эту плату. В Интернете есть несколько дискуссий о протоколе передачи, использовании сигнала сброса на выводе сброса (RST) и конденсаторе. Так что это может быть проблемой, связанной с оборудованием / платой, из-за дешевых клонов Arduino... :/, @albert

как вы перепрошиваете загрузчик?, @Juraj

Я использовал / пытался использовать Arduino Uno в качестве провайдера, поскольку в настоящее время у меня нет моего оригинального AVR ISP mkII, @albert

и почему ты это сделал? возможно ли, что вы перешли на другой загрузчик?, @Juraj

У меня точно такая же проблема. Из-за этого я отказываюсь от platform io. Это гораздо сложнее, чем arduino IDE., @Hein du Plessis


1 ответ


1

Пожалуйста, используйте board = nanoatmega328new в вашем platformio.ini

,