每当我需要将引导加载程序上传到我的Arduino Mega(ATMEGA2560)时,我使用带有boards.txt文件中描述的保险丝/锁定位的AVRISP MKII。这样做我能够通过与FTDI的串行连接来刻录arduino草图。
我的问题是:是否可以使用AVRISP刻录arduino草图(.hex文件)但保留引导加载程序?每当我尝试这样做时(我使用相同的avrdude命令,我用来编程引导程序,但将bootloader .hex文件更改为草图.hex文件)我不再能用FTDI编程处理器(然后我需要再次编程引导加载程序。)
我认为(当然我可能是错的)由于保险丝和锁定位设置不能与用于编程引导加载程序的设置相同而出现此问题。
这是我使用的保险丝设置(来自Arduino文件夹下的boards.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
你能帮助我吗?
提前致谢。
答案 0 :(得分:1)
某些控制器(如AT * X * MEGA系列)支持可单独编程/擦除的各个闪光灯部分。但是,使用ATMEGA2560是不可能的。
一种方法是将.hex文件连接为构建过程的一部分。这可以通过对makefile进行一些修改来实现。
与此类似的东西
all: $(TARGET).hex
srec_cat bootloader.hex -intel $(TARGET).hex -intel -o combined.hex -intel
闪烁'combined.hex'将包括主应用程序和引导加载程序。 AVRFreaks上有一个related discussion。
关于保险丝,您只需确保将引导加载程序(地址)保持配置为入口点。
编辑:您可以使用this fuse bit calculator来验证保险丝设置。选择您的器件并确保使用当前的高熔丝值启用“启动复位向量(默认地址= $ 0000); [BOOTRST = 0]”。 您目前使用
mega2560.bootloader.high_fuses=0xD8
所以看起来很好。