avrdude:错误:不支持缓冲内存访问

时间:2014-05-10 11:56:56

标签: arduino avr firmware arduino-uno

我正在尝试通过firmware sck_beta_v0_8_6上传此Arduino 1.0.5-r2。 我选择了LilyPad Arduino USB作为董事会。该设备是Smart Citizen Kit Urban Shield v.1.1。 上载失败,并显示以下错误消息:

Found programmer: Id = "BÛR"; type = 
   Software Version = . ; Hardware Version = .
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?

我做错了什么?

6 个答案:

答案 0 :(得分:3)

有时,不同的USB线缆会有所不同。市场上的电缆质量范围很广,有时候,您可以在可接受的边缘处获得一个。

Arduino lilypad似乎特别容易受此影响。很高兴这有帮助。

答案 1 :(得分:3)

在上传代码之前按下重置按钮,直到听到"拔出"声音(在窗户中)。打开IDE并再次尝试

答案 2 :(得分:1)

我尝试使用Arduino ver 1.0.6从Levovo笔记本电脑上传草图到Arduino Leonardo电路板时出现了同样的错误消息。 Device Manager和Arduino都在COM3上显示了连接板。 Arduino还给出了另一个应用程序正在使用COM3的错误消息。我尝试更换USB线,但收到相同的消息。有用的是将USB插座从Lenovo右上方的后部更换到右下方的后插座。它在COM8上连接,我能够上传草图。了解两个网点之间存在速度差异。现在,我需要做的就是找出为什么我不能将草图上传到我的惠普笔记本电脑上使用Windows 10和最新的Arduino版本的同一个莱昂纳多板。在COM6上连接,但在上传时挂起。 (注意:还必须编辑一些适用于ver 1.0.6但在最新版本中显示编译错误的Arduino库文件。)

答案 3 :(得分:0)

我有同样的错误,但我后来发现我选择了错误的Arduino类型,而不是Nano我有云。

答案 4 :(得分:0)

尝试将代码上传到Arduino Micro(中文克隆版)时遇到了同样的问题。在Google上花费数小时,闪烁新的引导程序 - 仍然没有。物理重置和打开带有绑定1200的COM端口不起作用。为什么呢?

我有ATMEGA168安装ATMEGA32u4!

谷歌说,Arduino Micro得到了Atmega32u4,但我的克隆得到了Atmega168!首先,通过在Arduino上的黑色焊接芯片上查找来检查你的atmega类型。 因此,不要在“Board”菜单上选择“Arduino Micro”,而是选择Arduino Nano,一切正常!

答案 5 :(得分:0)

当我将avrdude: error: buffered memory access not supported指向计算机的串行端口时,我也遇到了同样的错误,@也出现了垃圾回收的输出,程序员的ID为.,版本为avrdude。我的与Leonardo兼容的分线板的主要固件,而不是引导加载程序中提供的串行端口;似乎后者avrdude可以编程吗?

实际连接到引导加载程序时的正常初始输出如下所示:

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.

要进入引导加载程序,您可以

  • 按下重置按钮(如果没有重置按钮,则将重置接地)或
  • 以1200 bps的速度短暂连接到主固件的串行端口,然后断开连接

引导加载程序将提供与主固件的串行USB设备不同的串行USB设备,因此在您的OS中可能会为其分配一个不同的串行端口号,通常是下一个可用的串行端口号。例如,在Windows中,我与Leonardo兼容的主固件分配了COM3,而引导加载程序分配了COM4。

https://nicholaskell.wordpress.com/tag/leonardo/提供的Python脚本,用于执行此串行“敲门”:

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环境中,我有一个cmd脚本,用于在virtualenv中使用它

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命令行以使其预先运行,以便在重置后立即启动它。