我在ATMELStudio7中为AVR做了一个引导加载程序,当生成.hex时,它是从地址0x00创建的,但是引导加载程序必须从地址0x1e000开始,如果有人知道如何在编译后的选项中更改这一点,我将不胜感激。
发布于 2019-05-13 06:58:36
.text=0xF000
(UPD)备注,此地址以文字表示,即如果您希望将一个8KB引导加载程序放入128 8KB设备(字节偏移量为0x1E000),则word偏移量将为0xF 000。32 4KB设备上的4KB引导加载程序将是0x3800,依此类推。
按OK,然后编译项目。它将告诉链接器主代码部分的起始地址位于哪里。
顺便说一句,在>64k设备的引导程序中使用pgmspace.h时要小心,因为通常放置在较低64k的闪存中的常量现在也会放在较高的地址中,并且可能无法使用通常的pgm_read.宏。在这种情况下,可以使用pgm_get_far_address和pgm_read_..._far宏。
https://stackoverflow.com/questions/56100706
复制相似问题