avr: adapted boot firmware to latest changes (mainly switch to uart_bitbang).
This commit is contained in:
@@ -69,14 +69,33 @@ bootLoader:
|
|||||||
ldi r16, Low(RAMEND)
|
ldi r16, Low(RAMEND)
|
||||||
out SPL, r16 ; init LSB stack pointer
|
out SPL, r16 ; init LSB stack pointer
|
||||||
|
|
||||||
|
; start by setting all ports as inputs and enable internal pull-up resistors
|
||||||
|
ldi r16, 0xff
|
||||||
|
clr r17
|
||||||
|
.ifdef PORTA
|
||||||
|
out DDRA, r17 ; all input
|
||||||
|
out PORTA, r16 ; enable pull-up on all
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.ifdef PORTB
|
||||||
|
out DDRB, r17 ; all input
|
||||||
|
out PORTB, r16 ; enable pull-up on all
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.ifdef PORTC
|
||||||
|
out DDRC, r17 ; all input
|
||||||
|
out PORTC, r16 ; enable pull-up on all
|
||||||
|
.endif
|
||||||
|
|
||||||
|
|
||||||
; rcall watchdogOff ; turn off watchdog timer (sometimes it stays on after reboot)
|
; rcall watchdogOff ; turn off watchdog timer (sometimes it stays on after reboot)
|
||||||
|
|
||||||
; setup pins and interrupts
|
; setup pins and interrupts
|
||||||
cbi COM_TXD_DATA, COM_TXD_PIN ; disable internal pullup for DATA
|
cbi COM_DATA_DDR, COM_DATA_PIN ; set TXD port as input
|
||||||
cbi COM_TXD_DDR, COM_TXD_PIN ; set DATA port as input
|
cbi COM_DATA_OUTPUT, COM_DATA_PIN ; disable internal pullup for TXD
|
||||||
|
|
||||||
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN
|
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input
|
||||||
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input
|
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN
|
||||||
|
|
||||||
sbi LED_DDR, LED_PINNUM ; out
|
sbi LED_DDR, LED_PINNUM ; out
|
||||||
cbi LED_PORT, LED_PINNUM ; on
|
cbi LED_PORT, LED_PINNUM ; on
|
||||||
@@ -88,11 +107,11 @@ bootLoader:
|
|||||||
st X+, r19
|
st X+, r19
|
||||||
st X+, r20
|
st X+, r20
|
||||||
st X+, r21
|
st X+, r21
|
||||||
|
|
||||||
; wait for 3 secs before doing anything else
|
; wait for 3 secs before doing anything else
|
||||||
ldi r16, 30
|
ldi r16, 30
|
||||||
rcall flashWaitForMulti100ms
|
rcall flashWaitForMulti100ms
|
||||||
|
|
||||||
rcall bootCheckFlash
|
rcall bootCheckFlash
|
||||||
brcc bootLoader_startFirmware ; no flash process, try start installed firmware
|
brcc bootLoader_startFirmware ; no flash process, try start installed firmware
|
||||||
rcall bootLoaderFlash ; received a FLASH START msg, handle flashing
|
rcall bootLoaderFlash ; received a FLASH START msg, handle flashing
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ flashWaitForSpecificMessage_received: ; R16 contains message type
|
|||||||
; REGS: R24 (R22)
|
; REGS: R24 (R22)
|
||||||
|
|
||||||
flashWaitForAttnState1ms:
|
flashWaitForAttnState1ms:
|
||||||
|
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input
|
||||||
|
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN
|
||||||
ldi r24, 100
|
ldi r24, 100
|
||||||
flashWaitForAttnState1ms_loop:
|
flashWaitForAttnState1ms_loop:
|
||||||
push r17
|
push r17
|
||||||
|
|||||||
Reference in New Issue
Block a user