我使用开源USB库来启用USB AVR microcontrollers,LUFA(2011-10-09),我正在尝试编码CDC(我的AT90USB162芯片的一个bootloader示例。示例代码位于文件夹/Bootloads/CDC
中,为准备AT90USB1287的CDC做好准备。所以我需要更改makefile参数来设置合适的微芯片。
在makefile中,我更改了以下内容:
并构建代码。发生这种情况没有错误但是当我尝试使用.hex文件刻录芯片时,它返回消息:
地址超出范围
为什么会发生这种情况?
更新
在makefile
中,BOOT_START
配置为:
BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)
也许错误会出现在BOOT_START会计中?我应该配置更多吗?
答案 0 :(得分:4)
根据at90usb162数据表的第239页,对于4Kb引导加载程序,保险丝BOOTSZ0和BOOTSZ1需要为0。你检查过这个吗?您还需要检查at90usb1287和at90usb162之间是否匹配其他内容(如BOOT_START和其他内容)。 你如何尝试将新的引导加载程序刻录到AVR中?你有一个合适的程序员,或者你正试图用嵌入式USB启动加载器吗?
只是补充来自@avra评论的@avra答案
使用引导加载程序无法在现有引导加载程序上存储另一个引导加载程序。现在拿到它? ;-)这是启动加载程序的限制区域,这就是它失败的原因。引导加载程序无法自行覆盖它。你需要其他类型的程序员没有这个限制。所有带引导加载程序的AVR都需要使用这种特殊类型的编程器(JTAG / ISP / SPI / PDI编程器)进行初始编程。