AT90USB162 的 LUFA 编码示例

发布于 2024-12-13 09:59:29 字数 919 浏览 6 评论 0原文

我有一个开源 USB 库,用于支持 USB 的 AVR 微控制器LUFA (2011-10-09),我正在尝试编码我的 AT90USB162 芯片。示例代码位于文件夹 /Bootloads/CDC 中,准备为

在 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记帐中?我应该配置更多东西吗?

I'm with an open-source USB library for the USB-enabled AVR microcontrollers, LUFA (2011-10-09), and I am trying to code the CDC (a bootloader) example to my AT90USB162 chip. The sample code is in folder /Bootloads/CDC and comes prepared for building a CDC for AT90USB1287. So I needed to change the makefile parameters to set the proper microchip.

In the makefile I changed the following:

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

and built the code. This occurred without errors but when I tried to burn the chip with the .hex file, it returns the message:

Address is out of range

Why could this happen?

Update

In makefile, the BOOT_START is configured as:

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

Maybe the error would be in the BOOT_START accounting? Should I configure something more?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空‖城人不在 2024-12-20 09:59:29

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

只是补充@avra评论中的@avra答案

<块引用>

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

According to page 239 of at90usb162 datasheet, fuses BOOTSZ0 and BOOTSZ1 need to be 0 for a 4Kb boot loader. Have you checked this? You also need to check if other things are matched between at90usb1287 and at90usb162 (like BOOT_START and others).
How do you try to burn new boot loader into an AVR? Do you have a proper programmer or you are trying to do it with embedded USB boot loader?

Just complementing @avra answer from @avra comment

Storing another boot loader over existing boot loader is not possible with a boot loader. Get it now? ;-) That is restricted area for a boot loader, and that's why it fails for you. Boot loader is not capable to overwrite it self. You need other type of programmer which doesn't come with this restriction. All AVRs with boot loaders need to have initial programming with this special type of programmer (JTAG/ISP/SPI/PDI programmer).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文