From dc5c7c50b234ad469aab961dd6bc7bcfa9031268 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 5 Jul 2013 00:18:08 +0000 Subject: read flash segment allmost done git-svn-id: https://svn.spreadspace.org/pic/trunk@39 a09c6847-51d9-44de-8ef2-e725cf50f3c7 --- bootloader/bootloader.asm | 47 +++++++++++++++++++++++++++++++++++++++++------ 1 file 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 @@ -367,6 +364,44 @@ cmd_w_config call send_answer 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 -- cgit v1.2.3