我有一个支持USB的AVR微控制器,卢法 (2011-10-09)的开源USB库,我正在尝试将CDC (一个引导加载程序)示例编码到我的AT90USB162芯片上。示例代码位于文件夹/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会计中会出现错误?我应该配置更多的东西吗?
发布于 2011-11-03 10:05:46
根据at90usb162数据表的第239页,对于4Kb的引导加载程序,熔断BOOTSZ0和BOOTSZ1需要为0。你查过这个了吗?您还需要检查at90usb1287和at90usb162之间是否匹配其他东西(比如BOOT_START和其他东西)。如何将新的引导加载程序刻录到AVR中?你是否有一个合适的程序员,或者你试图用嵌入式USB引导加载程序来完成它?
刚刚从@avra评论中补充@avra的回答
在现有的引导加载程序之上存储另一个引导加载程序是不可能的。现在就得到它?;-)这是引导加载程序的限制区域,这就是为什么它会为您失败。引导加载程序无法自行覆盖它。您需要其他类型的程序员,这是不附带此限制的。所有带有引导加载器的AVR都需要使用这种特殊类型的程序员进行初始编程(JTAG/ISP/SPI/PDI程序员)。
https://stackoverflow.com/questions/7980808
复制相似问题