Как Arduino IDE сбрасывает плату перед прошивкой? Почему avrdude этого не делает?

У меня есть плата beetle, клон Леонардо, такой же, как в этом вопросе.

Мини-плата Arduino Leonardo Beetle

Используя контакт сброса и быстрые руки на клавиатуре, я могу прошить avrdude и получить информацию о плате с помощью командной строки, подобной этой:

$ avrdude -c avr109 -p atmega32u4 -P /dev/ttyACM1 

И получить результат:

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x44

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4)

avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)

avrdude done.  Thank you.

Это хорошо, но когда я прошиваю что-то из ArduinoIDE, я заметил, что мне не нужно сбрасывать плату вручную, заземляя контакты сброса, загрузчик запускается автоматически

Как ArduinoIDE сбрасывает загрузчик, какая-то связь на /dev/ttyACM1?

, 👍2


1 ответ


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

1

Загруженный скетч Arduino содержит в части, предоставленной ядром, код, который ожидает соединения со скоростью 1200 бод по USB. Если установлено соединение со скоростью 1200 бод, плата сбрасывает загрузчик. Затем загрузчик запускает COM-порт и ожидает загрузки.

Чтобы сбросить плату, в файле boards.txt upload.use_1200bps_touch=true, Arduino IDE открывает соединение со скоростью 1200 бод с платой, затем обнаруживает новый COM-порт и запускает avrdude для загрузки.

,