【问题标题】:LUFA Coding an Example for AT90USB162LUFA 编码 AT90USB162 的示例
【发布时间】:2011-11-02 13:05:14
【问题描述】:

我正在为支持 USB 的AVR microcontrollersLUFA (2011-10-09) 使用开源 USB 库,并且我正在尝试将 CDC(引导加载程序)示例编写到我的AT90USB162 芯片。示例代码位于文件夹 /Bootloads/CDC 中,为为 AT90USB1287 构建 CDC 做好了准备。所以我需要更改 makefile 参数以设置正确的微芯片。

在 makefile 中我更改了以下内容:

  • MCU = at90usb162
  • F_CPU = 16000000
  • FLASH_SIZE_KB = 16
  • BOOT_SECTION_SIZE_KB = 4

并构建代码。这发生时没有错误,但是当我尝试使用 .hex 文件烧录芯片时,它返回消息:

地址超出范围

为什么会发生这种情况?

更新

makefile中,BOOT_START配置为:

BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)

也许错误会出现在 BOOT_START 记帐中?我应该配置更多东西吗?

【问题讨论】:

    标签: arduino avr libusb avr-gcc atmel


    【解决方案1】:

    根据 at90usb162 数据表的第 239 页,对于 4Kb 引导加载程序,保险丝 BOOTSZ0 和 BOOTSZ1 需要为 0。你检查过这个吗?您还需要检查 at90usb1287 和 at90usb162 之间是否匹配其他内容(如 BOOT_START 等)。 您如何尝试将新的引导加载程序刻录到 AVR 中?您是否有合适的程序员,或者您正在尝试使用嵌入式 USB 引导加载程序?

    只是补充来自@avra评论的@avra答案

    使用引导加载程序无法在现有引导加载程序上存储另一个引导加载程序。现在得到吗? ;-) 那是引导加载程序的受限区域,这就是它对您失败的原因。引导加载程序无法自行覆盖它。您需要没有此限制的其他类型的程序员。所有带有引导加载程序的 AVR 都需要使用这种特殊类型的编程器(JTAG/ISP/SPI/PDI 编程器)进行初始编程。

    【讨论】:

    • 我应该在哪里寻找 BOOTSZ0 和 BOOTSZ1?我在makefile中没有找到任何接近它们的东西。 (但我按照您的建议阅读了数据表并同意,但还没有找到)。
    • 我还在BootloaderCDC.avrgccproj 中找到了一些对at90usb1287 的引用,但已经更正了。
    • 我在 Update 中发布了 BOOT_START makefile 配置。我承认没有完全理解。也许是错的?
    • 我使用Atmel Flip 来刻录 .hex 文件。我想它也会起作用。我的版本是FLIP 3.4.5 for Windows (Java Runtime Environement included)
    • 使用引导加载程序无法在现有引导加载程序上存储另一个引导加载程序。现在得到吗? ;-) 那是引导加载程序的受限区域,这就是它对你失败的原因。引导加载程序无法自行覆盖它。您需要没有此限制的其他类型的程序员。所有带有引导加载程序的 AVR 都需要使用这种特殊类型的编程器(JTAG/ISP/SPI/PDI 编程器)进行初始编程。谷歌一下,你会明白的。您不接受 SO 中的答案,因此我将不再提供帮助。当你收到东西时,你会给予一些东西。干杯。
    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多