diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-07-05 00:18:08 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-07-05 00:18:08 +0000 |
commit | dc5c7c50b234ad469aab961dd6bc7bcfa9031268 (patch) | |
tree | 1b9a68acb15d67d800d2b10b6765891cc86e0e64 /bootloader | |
parent | added check for invalid command codes (diff) |
read flash segment allmost done
git-svn-id: https://svn.spreadspace.org/pic/trunk@39 a09c6847-51d9-44de-8ef2-e725cf50f3c7
Diffstat (limited to 'bootloader')
-rw-r--r-- | bootloader/bootloader.asm | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/bootloader/bootloader.asm b/bootloader/bootloader.asm index 3ff8aa4..93ec185 100644 --- a/bootloader/bootloader.asm +++ b/bootloader/bootloader.asm @@ -38,9 +38,9 @@ VERSION_MIN EQU .1 DEVID_H EQU H'20' DEVID_L EQU H'82' FSS EQU .8 -MESS_H EQU 0 +MESS_H EQU .0 MESS_L EQU .64 -SUPPORTED_H EQU 0 +SUPPORTED_H EQU .0 SUPPORTED_L EQU b'00011111' ; reset, read/write flash, read/write eeprom ;; ERROR codes @@ -316,10 +316,7 @@ cmd_reset_wait ;; ** read flash ******* cmd_r_flash - ;; call read_flash_segment - movlw E_ADDR_INVALID - movwf combuff + .1 - movlw .2 + call read_flash_segment call send_answer goto wait_new_cmd @@ -368,6 +365,44 @@ cmd_w_config goto wait_new_cmd ;; ------------------------------------- + ;; actual flash/eeprom functions +read_flash_segment + movlw FSS + movwf cnt1 + movlw b'01011000' + movwf STATUS + movlw combuff + .1 + movwf FSR + movf INDF,w + movwf EEADR + incf FSR,f + movf INDF,w + movwf EEADRH +read_flash_segment_loop + bsf STATUS,RP0 + bsf EECON1,EEPGD + bsf EECON1,RD + nop + nop + bcf STATUS,RP0 + movf EEDAT,w + movwf INDF + incf FSR,f + movf EEDATH,w + movwf INDF + incf FSR,f + incfsz EEADR,f + goto read_flash_segment_next + incf EEADRH,f +read_flash_segment_next + decfsz cnt1,f + goto read_flash_segment_loop + bcf STATUS,RP1 + clrf combuff + .1 ; = E_OK + retlw .2 + 2*FSS ; bytes to send + + ;; ------------------------------------- + ;; ------------------------------------- ;; dummy user code org USERVECT ;; goto USERVECT |