我购买了带有ATmega2560的Arduino PCB,该芯片已使用Arduino引导加载程序和某些程序进行了编程。我确实有草图,但是在摆弄它之前,我想备份控制器中的当前二进制文件。和大多数Arduino一样,它使用连接到TX0和RX0的USB串行转换器连接到PC,并且没有ISP接口。
显然,可以在Arduino引导加载程序中读取代码,但是由于Arduino IDE中没有菜单项,因此我不知道使用哪种工具来访问它。
我需要什么软件才能从Arduino读取程序?
我购买了带有ATmega2560的Arduino PCB,该芯片已使用Arduino引导加载程序和某些程序进行了编程。我确实有草图,但是在摆弄它之前,我想备份控制器中的当前二进制文件。和大多数Arduino一样,它使用连接到TX0和RX0的USB串行转换器连接到PC,并且没有ISP接口。
显然,可以在Arduino引导加载程序中读取代码,但是由于Arduino IDE中没有菜单项,因此我不知道使用哪种工具来访问它。
我需要什么软件才能从Arduino读取程序?
Answers:
Arduino引导程序是原始STK500协议(1.x)的变体。字符“ t”(ASCII 0x74)是“读取页面”命令。因此,也许可以使用AVRDUDE通过引导加载程序通过串行端口将程序拉出 ...但是最好的情况是,将其拉出需要花一些时间。
我已使用以下命令从带有ATMega328P的Duemillenova中转储了内存:
avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600
-v
S?
./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0
; 写:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0
; 验证:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
备份AVR是否使用avrdude线程回答您的问题?基本上,只要未设置保护保险丝,就可以从AVR读取所有内存。
这是我用于ATtiny和ATmega的设置。
在显示的板上:
请参阅控制器的数据表,以使用确切的引脚。互联网上有很多网站都在写有关使用Arduino编程AVR的信息,例如:http : //hlt.media.mit.edu/?p=1229
据我从Arduino Bootloader源代码看到的那样,没有办法从中“转储”所有内存。引导加载程序确实支持“监视”模式,该模式允许您一次转储一个内存字节。但是,根据源代码注释,“ / *由于引导块大小的限制,仅在使用ATmega128时才编译监视功能”
因此,如果您不想使用ISP,更改引导加载程序或上传草图来完成此操作,我想您很不走运。
else if(ch=='t') {
。
我以为有一个菜单选项,但现在找不到。如果您有ISP程序员,则可以使用AVR Studio从芯片上读取内存映像并将其保存在HEX文件中,这将使您可以通过相同的方式对其进行还原。
编辑
根据您的评论-很简单!您需要吸收两个图表的相关信息才能实现。第一个是Arduino / ATMega2560引脚映射。
第二个是ISP标头/ AVR引脚映射:
有了这两张图片,您应该能够看到如何进行连接。
有了这些文件之后,您应该能够使用AVR Studio从芯片上读取Hex文件-如果您需要更多指导,请告诉我。