restore SP when exit
This commit is contained in:
12
bsp/init0.c
12
bsp/init0.c
@@ -1,15 +1,17 @@
|
|||||||
/* Exec after reset */
|
#include <bootloader.h>
|
||||||
|
|
||||||
|
#ifdef ENABLE_OPTION_BOOTLOADER
|
||||||
void bootloader_enter(void) __trap __naked {
|
void bootloader_enter(void) __trap __naked {
|
||||||
|
/* Exec after reset */
|
||||||
__asm
|
__asm
|
||||||
// ldw X, #0x03FF
|
ldw Y, SP ; [90 96]
|
||||||
// ldw SP, X
|
|
||||||
ldw X, #0x483F ; [AE 48 3F]
|
ldw X, #0x483F ; [AE 48 3F]
|
||||||
_cycle:
|
_cycle:
|
||||||
decw X ; [5A]
|
decw X ; [5A]
|
||||||
push A ; [88]
|
push A ; [88]
|
||||||
ld A, (X) ; [F6]
|
ld A, (X) ; [F6]
|
||||||
jrne _cycle ; [26 FB]
|
jrne _cycle ; [26 FB]
|
||||||
// check
|
// check address
|
||||||
ldw X, SP ; [96]
|
ldw X, SP ; [96]
|
||||||
addw X, #3 ; [1C 00 03]
|
addw X, #3 ; [1C 00 03]
|
||||||
cpw X, (1,SP) ; [13 01]
|
cpw X, (1,SP) ; [13 01]
|
||||||
@@ -17,6 +19,8 @@ __asm
|
|||||||
// jump to ram
|
// jump to ram
|
||||||
ret ; [81]
|
ret ; [81]
|
||||||
_exit:
|
_exit:
|
||||||
|
ldw SP,Y ; [90 94]
|
||||||
jp 0x8004 ; [cc 80 04]
|
jp 0x8004 ; [cc 80 04]
|
||||||
__endasm;
|
__endasm;
|
||||||
}
|
}
|
||||||
|
#endif /* ENABLE_OPTION_BOOTLOADER */
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stm8s.h>
|
#include <stm8s.h>
|
||||||
#include <delay.h>
|
#include <delay.h>
|
||||||
|
#include <bootloader.h>
|
||||||
|
|
||||||
#define LED_PIN 5
|
#define LED_PIN 5
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user