上述问题尚不清楚,什么是有效的,什么是失败的。关于你的环境,这很重要。也就是说,我猜你说 void 和/或“jmp BOOTL”可以按需要工作,但会使代码看起来很大。
我在 Arduino IDE 1.0.5 上试过,只看到不到 1/2K 的代码。注意 16K 或巨大的。
无效* bl =(无效*)0x3c00;
void setup()
{
// put your setup code here, to run once:
}
void loop()
{
goto *bl;
// put your main code here, to run repeatedly:
}
编译输出...
Binary sketch size: 474 bytes (of a 32,256 byte maximum)
Estimated used SRAM memory: 11 bytes (of a 2048 byte maximum)
我怀疑您的观察结果是链接器在 0x3C00 处看到了 BOOTSECTOR 位置的指针(注意它位于代码末尾)所以它看起来只是很大。我怀疑您可能想要使用“avr-objdump.exe -d output.elf”来查看它实际在做什么,而不是您所期望的之间有很多空白。