Re: A92: Flash memory : how to (92+,89)


[Prev][Next][Index][Thread]

Re: A92: Flash memory : how to (92+,89)




Thanks, perhaps I'll give my hex-monitor editing capabilities now		A.K.

Philippe Devallois schrieb:
> 
> a good approche is to consult the documentation of the flash rom that's
> uses by TI for the 92+ and 89.
> It's a Sharp LH28F016SU  (T-70).
> an 32 sectors of 64kb each, accessible individualy for erase,write and
> lock.
> 
> The 26 first sectors are locked and the 6 last are the archive memory of
> the 92+ or 89.
> 
> start of flash memory : 0x400000
> end : 0x5fffff
> 
> so, to erase a sector, then write a sector, use the following code :
> ; a0.l = @ of start of sector ( from $400000 up to $5f0000 )
> ; a1.l = @ of start of buffer to fill in sector
> 
>         move.w #$2020,(a0)    ; block erase/confirm
>         move.w #$d0d0,(a0)    ; confirm erase
> @1      move.w (a0),d0            ; get status register
>         btst #7,d0
>         beq.s @1                                ; end of erase ?
>         move.w #$5050,(a0)    ; clear status register
>         move.l #$fffe,d0                ;
>         adda.l d0,a0                    ; end of sector minus one word
>         adda.l d0,a1                    ; end of buffer minus one word
>         move.w #$7fff           ; size of sector minus one for dbf
> @2      move.w (a1),d1          ; a word from buffer
>         move.w #$1010,(a0)      ; alternate word/byte write cmd
>         move.w d1,(a0)          ; 2nd cycle : write word in flash sect.
> @3      move.w (a0),d1          ; get status register
>         btst #7,d1
>         beq.s @3                                ; end of write ?
>         move.w #$5050,(a0)      ; clear status register
>         move.w #$ffff,(a0)      ; return to read mode
>         subq.l #2,a0                    ; - one word downto the start
>         subq.l #2,a1
>         dbf d0,@2                       ; 64KB
>         rts
> 
> Hope that this helps,
> --
> phildev
> 
> phildev
> -------


References: