1

每当我需要将引导加载程序上传到我的 Arduino Mega (ATMEGA2560) 时,我都会使用带有 board.txt 文件中描述的保险丝/锁定位的 AVRISP MKII。这样做我可以通过与我的 FTDI 的串行连接来刻录 arduino 草图。

我的问题是:是否可以使用 AVRISP 刻录 arduino 草图(.hex 文件)但保留引导加载程序?每当我尝试这样做时(我使用相同的 avrdude 命令对引导加载程序进行编程,但将引导加载程序 .hex 文件更改为草图 .hex 文件)我不再能够使用 FTDI 对处理器进行编程(然后我需要再次对引导加载程序进行编程)。

我认为(当然我可能是错的)这个问题是由于保险丝和锁定位设置与用于编程引导加载程序的设置不同而发生的。

这是我使用的保险丝设置(来自 Arduino 文件夹下的 board.txt 文件)

mega2560.name=Arduino Mega 2560 or Mega ADK

mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200

mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=stk500v2
mega2560.bootloader.file=stk500boot_v2_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F

mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino
mega2560.build.variant=mega

你能帮助我吗?

提前致谢。

4

1 回答 1

1

一些控制器,如 AT*X*MEGA 系列,支持可独立编程/擦除的独立闪存部分。但是,对于 ATMEGA2560,这是不可能的。

一种方法是连接 .hex 文件作为构建过程的一部分。这可以通过对 makefile 进行一些修改来实现。

类似的东西

all: $(TARGET).hex 
    srec_cat bootloader.hex -intel $(TARGET).hex -intel -o combined.hex -intel

刷新“combined.hex”将包括主应用程序和引导加载程序。有一个关于 AVRreaks的相关讨论。

关于保险丝,您只需确保引导加载程序(地址)保持配置为入口点。

编辑:您可以使用此保险丝位计算器来验证保险丝设置。选择您的设备并确保“启动重置向量已启用(默认地址=$0000);[BOOTRST=0]”已启用您当前的高保险丝值。您目前使用

mega2560.bootloader.high_fuses=0xD8

所以这似乎很好。

于 2013-11-12T12:23:41.397 回答