boot2: add F4
This commit is contained in:
8
Makefile
8
Makefile
@@ -42,7 +42,7 @@ CFLAGS += --stack-auto --noinduction --use-non-free
|
|||||||
LDFLAGS = -m$(ARCH) -l$(ARCH) --out-fmt-ihx
|
LDFLAGS = -m$(ARCH) -l$(ARCH) --out-fmt-ihx
|
||||||
|
|
||||||
OPTION_BOOT := 0x480D
|
OPTION_BOOT := 0x480D
|
||||||
RAM_BOOT := 0x023E
|
RAM_BOOT := 0x0232
|
||||||
OPTFLAGS = -Wl-bOPTION=0x4800 -Wl-bOPTION_BOOT=$(OPTION_BOOT)
|
OPTFLAGS = -Wl-bOPTION=0x4800 -Wl-bOPTION_BOOT=$(OPTION_BOOT)
|
||||||
B2FLAGS = -Wl-bRAM_BOOT=$(RAM_BOOT)
|
B2FLAGS = -Wl-bRAM_BOOT=$(RAM_BOOT)
|
||||||
|
|
||||||
@@ -130,8 +130,10 @@ boot2: $(SCRIPTS_DIR)/boot2.s | $(BUILD_DIR)
|
|||||||
@B2SIZE=$$(wc -c < $(SCRIPTS_DIR)/boot2.bin); \
|
@B2SIZE=$$(wc -c < $(SCRIPTS_DIR)/boot2.bin); \
|
||||||
SIZE1K=$$(($$B2SIZE+$(RAM_BOOT)+(0x4840-$(OPTION_BOOT)-3))); \
|
SIZE1K=$$(($$B2SIZE+$(RAM_BOOT)+(0x4840-$(OPTION_BOOT)-3))); \
|
||||||
if [ $$SIZE1K -ne 1024 ]; then \
|
if [ $$SIZE1K -ne 1024 ]; then \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo "!!! boot2 ram address error!!! $(RAM_BOOT)"; \
|
echo "!!! boot2 ram address error!!!"; \
|
||||||
|
NEW_RAM_BOOT=$$((1024-$$SIZE1K+$(RAM_BOOT))); \
|
||||||
|
echo " RAM_BOOT: $(RAM_BOOT) -> 0x$$(printf "%X" $$NEW_RAM_BOOT)"; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Show sizes of generated binaries
|
# Show sizes of generated binaries
|
||||||
|
|||||||
Binary file not shown.
@@ -30,6 +30,7 @@ WWDG_CR = 0x50D1 ; WWDG control register
|
|||||||
CMD_READ = 0xF1 ; 读内存命令
|
CMD_READ = 0xF1 ; 读内存命令
|
||||||
CMD_WRITE = 0xF2 ; 写内存命令
|
CMD_WRITE = 0xF2 ; 写内存命令
|
||||||
CMD_GO = 0xF3 ; 跳转执行命令
|
CMD_GO = 0xF3 ; 跳转执行命令
|
||||||
|
CMD_EXEC = 0xF4 ; 直接执行机器码命令
|
||||||
|
|
||||||
CMD_HEADER = 0x5A ; 帧头
|
CMD_HEADER = 0x5A ; 帧头
|
||||||
ACK_HEADER = 0xA5 ; 应答帧头
|
ACK_HEADER = 0xA5 ; 应答帧头
|
||||||
@@ -90,6 +91,9 @@ _main_loop:
|
|||||||
cp A, #CMD_GO
|
cp A, #CMD_GO
|
||||||
jreq _cmd_go
|
jreq _cmd_go
|
||||||
|
|
||||||
|
cp A, #CMD_EXEC
|
||||||
|
jreq _cmd_exec
|
||||||
|
|
||||||
_invalid_cmd_error:
|
_invalid_cmd_error:
|
||||||
; 未知命令,发送错误响应
|
; 未知命令,发送错误响应
|
||||||
mov tx_state, #ERR_INVCMD
|
mov tx_state, #ERR_INVCMD
|
||||||
@@ -118,6 +122,13 @@ _cmd_go:
|
|||||||
jp (X)
|
jp (X)
|
||||||
; 注意: jump_to_address 不返回
|
; 注意: jump_to_address 不返回
|
||||||
|
|
||||||
|
_cmd_exec:
|
||||||
|
; 直接执行收到的机器码
|
||||||
|
ld A, #0x81 ; ret code
|
||||||
|
ld (X), A ; X point to checksum already
|
||||||
|
call rx_buffer
|
||||||
|
jra _main_loop
|
||||||
|
|
||||||
receive_frame:
|
receive_frame:
|
||||||
; 初始化接收状态
|
; 初始化接收状态
|
||||||
clr rx_state
|
clr rx_state
|
||||||
|
|||||||
Reference in New Issue
Block a user