当我指向与 Leonardo 兼容的分线板的库存主固件的串行端口而不是引导加载程序期间提供的串行端口时,我得到了同样的错误,还有带有带有版本avrdude: error: buffered memory access not supported
的程序员 id 的垃圾输出;看来后者是什么可以编程的?@
.
avrdude
avrdude
实际连接到引导加载程序时的正常初始输出将类似于:
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
要进入引导加载程序,您可以
- 按下复位按钮(如果您没有复位按钮,请将复位接地),或
- 以 1200 bps 短暂连接到主固件的串行端口并断开连接
引导加载程序将提供与主固件的串行 USB 设备不同的串行 USB 设备,因此它可能会在您的操作系统中分配一个不同的串行端口号,通常是下一个可用的。例如,在 Windows 中,我与 Leonardo 兼容的主固件被分配了 COM3,而引导加载程序被分配了 COM4。
一个 python 脚本,由https://nicholaskell.wordpress.com/tag/leonardo/提供,用于执行此连续“敲门”:
reset.py
:
#!/usr/bin/env python
import serial, sys
serialPort = sys.argv[1]
ser = serial.Serial(
port=serialPort,
baudrate=1200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.isOpen()
ser.close() # always close port
在 Windows 领域,我有一个用于在 virtualenv 中使用它的 cmd 脚本
reset.cmd
:
"C:\Program Files (x86)\Python37-32\Scripts\virtualenv.exe" pyreset_virtualenv
pyreset_virtualenv\Scripts\pip.exe install pyserial
pyreset_virtualenv\Scripts\python reset.py COM3
pause
调整以适合您的串口和 python 路径。
无论哪种方式,在连接引导加载程序后,您有几秒钟的短暂窗口avrdude
可以连接到新的串行端口以开始编程,然后引导加载程序将再次进入主固件,此时您必须做再次重置。所以,一旦你弄清楚了引导加载程序的串口,你就需要提前准备好avrdude
命令行来运行,这样你就可以在重置后立即启动它。