Specifications

Developer’s Serial Bootloader, Rev. 13
MCU slave software
Freescale Semiconductor52
ERASE_ALG — whole FLASH erase routine
WR_ALG — whole WRITE erase routine
Because the flow is straightforward, no flowchart is provided. Basically, the sequence of events is executed
according to FLASH erasing/programming specifications.
;*******************************************************************************************
CPY_PRG:
TSX ;
STHX STACK ; copy stack for later re-call
LDHX SOURCE ; LOAD WRITE ALGORITHM TO RAM
TXS
LDHX #PRG
CPY_PRG_L1:
PULA
STA X
AIX #1
DBNZ STAT,CPY_PRG_L1
LDHX STACK
TXS ; restore stack
RTS
;*******************************************************************************************
ERASE_ALG:
LDA #%00000010
STA FLCR ; ERASE bit on
LDA FLBPR ; dummy read FLBPR
LDHX ADRS ; write anything
STA X ; to desired range
D_US #T10US ; wait 10us
LDA #%00001010
STA FLCR ; set HVEN, keep ERASE
D_MS #T1MS ; wait 1ms
LDA #%00001000
STA FLCR ; keep HVEN, ERASE off
D_US #T5US ; wait 5us
CLRA
STA FLCR ; HVEN off
D_US #T1US ; wait 1us
JMP SUCC ; finish with ACK
ERASE_ALG_END:
;*******************************************************************************************
WR_ALG:
LDA #%00000001
STA FLCR ; PGM bit on
LDA FLBPR ; dummy read FLBPR
LDHX ADRS ; prepare addresses
STA X ; and write to desired range
D_US #T10US ; wait 10us