我正在ATMELStudio7中为AVR做一个引导加载程序,当生成.hex时,它是从地址0x00创建的,但是如果有人知道如何在编译选项中更改它,则引导加载程序必须从地址0x1e000开始。感谢它。
答案 0 :(得分:4)
.text = 0xF000
(UPD)注意,此地址用 words 表示,即,如果要将8KB引导加载程序放入128KB设备中(字节偏移为0x1E000),则字偏移量将为 0xF000 。在32KB设备上的4KB引导加载程序将为0x3800,依此类推。
按OK,然后编译项目。它将告诉链接程序主代码段的起始地址位于何处。
顺便说一句,在> 64k设备上的引导程序中使用 pgmspace.h 时要小心,因为闪存中的常量(通常放置在较低的64k中)现在将放置在较高的地址中,如很好,并且可能无法使用常规的 pgm_read ... 宏进行访问。在这种情况下,请使用 pgm_get_far_address 和 pgm_read _..._ far 宏。