【发布时间】:2019-05-12 15:27:50
【问题描述】:
我正在 ATMELStudio7 中为 AVR 做一个引导加载程序,在生成 .hex 时,它是从地址 0x00 创建的,但引导加载程序必须从地址 0x1e000 开始,如果有人知道如何在编译选项中更改它,我会欣赏它。
【问题讨论】:
标签: avr atmel avr-gcc atmelstudio avrdude
我正在 ATMELStudio7 中为 AVR 做一个引导加载程序,在生成 .hex 时,它是从地址 0x00 创建的,但引导加载程序必须从地址 0x1e000 开始,如果有人知道如何在编译选项中更改它,我会欣赏它。
【问题讨论】:
标签: avr atmel avr-gcc atmelstudio avrdude
.text=0xF000
(UPD) 注意,这个地址是words,也就是说,如果你想把一个 8KB 的 bootloader 放到一个 128KB 的设备中(字节偏移量是 0x1E000),那么字偏移量将是 0xF000。 32KB 设备上的 4KB 引导加载程序将是 0x3800,依此类推。
按 OK,然后编译项目。它会告诉链接器主代码段的起始地址在哪里。
顺便说一句,在 >64k 设备上的引导加载程序中使用 pgmspace.h 时要小心,因为闪存中的常量通常被放置在低 64k 中,现在将被放置在高地址中好吧,使用通常的 pgm_read... 宏可能无法访问。在这种情况下,请使用 pgm_get_far_address 和 pgm_read_..._far 宏。
【讨论】: