Fix bootloader jump use word address
- Call of function pointer is compiled into 'icall' instruction. It should use word address but it has used byte address :( It seems jump has worked luckily by chance until now. why it worked?
This commit is contained in:
parent
c7faa51ee8
commit
0ca415004a
1 changed files with 4 additions and 3 deletions
|
@ -71,7 +71,8 @@ void bootloader_jump_after_watchdog_reset(void)
|
|||
MCUSR &= ~(1<<WDRF);
|
||||
wdt_disable();
|
||||
|
||||
((void (*)(void))BOOTLOADER_START)();
|
||||
// This is compled into 'icall', address should be in word unit, not byte.
|
||||
((void (*)(void))(BOOTLOADER_START/2))();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,7 +142,7 @@ void bootloader_jump(void) {
|
|||
ADCSRA = 0; TWCR = 0; UCSR0B = 0;
|
||||
#endif
|
||||
|
||||
// start Bootloader
|
||||
((void (*)(void))BOOTLOADER_START)();
|
||||
// This is compled into 'icall', address should be in word unit, not byte.
|
||||
((void (*)(void))(BOOTLOADER_START/2))();
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue