链接器中的ATTiny和Linux AVR-GCC中断重置向量

链接器中的ATTiny和Linux AVR-GCC中断重置向量,linux,reset,boot,avr,avr-gcc,Linux,Reset,Boot,Avr,Avr Gcc,在这个网站上(很抱歉是德语,我不得不使用google translator),它描述了一种在链接代码时通过以下方式更改重置地址值的方法: -Wl,--section-start=.bootreset=0x00 然后,在代码中,我们将bootreset值定义为: uint16_t boot_reset __attribute__((section(".bootreset"))) = 0xC000U + 0x1800 / 2 - 1; 其中0x1800是我们的代码起点 我在Atmel Studi

在这个网站上(很抱歉是德语,我不得不使用google translator),它描述了一种在链接代码时通过以下方式更改重置地址值的方法:

-Wl,--section-start=.bootreset=0x00
然后,在代码中,我们将bootreset值定义为:

uint16_t boot_reset __attribute__((section(".bootreset"))) = 0xC000U + 0x1800 / 2 - 1;
其中0x1800是我们的代码起点

我在Atmel Studio中尝试了这一点,它完全按照它所说的那样工作,但是在使用avr.gcc 4.5的linux上,它没有:S

有谁知道如何在linux avr gcc中实现这一点,最好是同时使用(win和linux)


谢谢。

经过大量挖掘,我找到了答案

我使用的avr objcopy命令行参数只包括代码转换为十六进制的特定部分,如-j.text等,因此省略了custom.bootreset部分

在Atmel Studio上,默认行为是通过使用-R排除某些部分,因此将包括上面的自定义部分

要在十六进制中添加此自定义部分,只需在avr objcopy上使用-j(或-j现在记不起来了)