链接器中的ATTiny和Linux AVR-GCC中断重置向量
在这个网站上(很抱歉是德语,我不得不使用google translator),它描述了一种在链接代码时通过以下方式更改重置地址值的方法:链接器中的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
-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现在记不起来了)