avr: bootloader partially works now but stops after 3 messages...

This commit is contained in:
Martin Preuss
2025-01-20 23:47:13 +01:00
parent 0d7aca0060
commit 0a10d136d5
23 changed files with 398 additions and 1260 deletions

View File

@@ -17,24 +17,24 @@
; ---------------------------------------------------------------------------
; @routine flashInitIo
; @routine ioRawInit
; Send a message
;
; @clobbers r16, r17
flashInitIo:
ioRawInit:
rjmp UART_HW_Uart1_RawInit ; (R16, R17)
;@end
; ---------------------------------------------------------------------------
; @routine flashRawSendMsg
; @routine ioRawSendMsg
; Send a message
;
; @clobbers r16, r17, X
flashRawSendMsg:
ioRawSendMsg:
ldi xl, LOW(flashSendBuffer)
ldi xh, HIGH(flashSendBuffer)
rjmp UART_HW_Uart1_RawSendPacket ; (r16, r17, X)
@@ -43,28 +43,30 @@ flashRawSendMsg:
; ---------------------------------------------------------------------------
; @routine flashRawWaitForValidMsg
; @routine ioRawWaitForValidMsg
; Wait for valid incoming msg
;
; @return CFLAG set if okay (packet received), cleared on error
; @clobbers: r16, r17, r18 (r19, r22, X)
flashRawWaitForValidMsg:
ioRawWaitForValidMsg:
rcall UART_HW_Uart1_EnableRawRecv ; (R16)
flashRawWaitForValidMsg_loop:
ioRawWaitForValidMsg_loop:
ldi xl, LOW(flashRecvBuffer)
ldi xh, HIGH(flashRecvBuffer)
ldi r16, COM2_MAINTENANCE_ADDR
ldi r17, FLASH_RECVBUFFER_MAXLEN-3
ldi r18, 10 ; 10s
rcall UART_HW_Uart1_RawRecvPacket ; (r16, r17, r18, r19, r22, X)
brcc flashRawWaitForValidMsg_error
brcc ioRawWaitForValidMsg_error
ldi xl, LOW(flashRecvBuffer)
ldi xh, HIGH(flashRecvBuffer)
rcall com2CheckMessageInBuffer ; (R16, R17, R18, R19, R20, X)
brcc flashRawWaitForValidMsg_loop ; invalid msg, try next
brcc ioRawWaitForValidMsg_loop ; invalid msg, try next
rcall UART_HW_Uart1_DisableRawRecv ; (R16)
sec
ret
flashRawWaitForValidMsg_error:
ioRawWaitForValidMsg_error:
rcall UART_HW_Uart1_DisableRawRecv ; (R16)
clc
ret