Texas Instruments TMS320F20x/F24x DSP Sacl Flst, Lacl Fladrs, Newrow, Sacl BASE1, Lar, Samerow

Page 59

PRELIMINARY

Assembly Source for Algorithms

SACL

FL_ST

;Save array start address.

LACL

FL_ADRS

;Get segment start address.

NEWROW

;********Begin a new row.*

SACL

BASE_1

;Save row start address.

LAR

AR1,#0

;Init pulse count to zero.

SAMEROW

;********Same row, next pulse.*

SPLK

#1,BASE_0

;Set row done flag = 1(True).

LACL

BASE_1

;Get row start address.

SACL

FL_ADRS

;Save as current address.

LAR

AR2,#31

;Init row index.

********Repeat the following code 32 times until end of row.*

LOBYTE

 

;********First, do low byte.*

 

SPLK

#0FFh,BASE_2

;Get lo±byte mask.

 

CALL

PRG_BYTE

;Check/Program lo±byte

 

SPLK

#0FF00h,BASE_2 ;Get hi±byte mask.

 

CALL

PRG_BYTE

;Check/Program hi±byte.

NEXTWORD

;********Next word in row.

 

LACL

FL_ADRS

;Load address for next word.

 

ADD

#1

;Increment address.

 

SACL

FL_ADRS

;Save as current address.

 

MAR

*,AR2

;Point to row index.

 

BANZ

LOBYTE

;Do next word,and dec AR2.

********Reached end of row. Check if row done.*

 

BIT

BASE_0,15

;Get row_done flag.

 

BCND

ROW_DONE,TC

;If 1, then row is done.

 

MAR

*,AR1

;Else, row is not done, so

 

MAR

*+

;inc row pulse count.

 

LAR

AR0,#MAX_PGM

;Check if passed allowable max.

 

CMPR

2

;If AR1>MAX_PGM, then

 

BCND

EXIT,TC

;fail, don't continue.

 

B

SAMEROW

;else, go to beginning

 

 

 

;of same row.

********If row done, then check if Array done.*

ROW_DONE

 

;Check if end of array.

 

SUB

SEG_END

;Subtract segment end address.

 

BCND

DONE,GEQ

;If >0, then done.

********Else, go to next row.*

 

LACL

FL_ADRS

;Get current address.

 

B

NEWROW

;Start new row.

********If here, then done.

 

DONE

CALL

ARRAY

;Access flash in array mode.

 

RET

 

 

********If here, then unit failed to program.*

EXIT

SPLK

#1,ERROR

;Update error flag.

 

B

DONE

;Get outa here.

.page

 

 

*************************************************************

* THIS SECTION PROGRAMS THE VALUE STORED IN FL_DATA INTO

*

*

THE FLASH ADDRESS DEFINED BY FL_ADRS.

*

*

 

*

* The following resources are used for temporary storage: *

*

AR6

Parameter passed to Delay.

*

*

SPAD1

Flash program and STOP commands.

*

PRELIMINARY

Assembly Source Listings and Program Examples

A-7

Image 59
Contents Literature Number SPRU282 September Important Notice Read This First Preliminary Related Documentation From Texas Instruments Preliminary If You Need Assistance Viii Contents Contents Figures Tables Introduction Basic Concepts of Flash Memory Technology ±1. TMS320 Devices With On-Chip Flash Eeprom TMS320F20x/F24x Flash Module±1. TMS320F20x/F24x Program Space Memory Maps Benefits of Embedded Flash Memory in a DSP System Preliminary Topic Flash Operations and Control RegistersPreliminary Flash Operations and Control Registers ±1. Flash Memory Logic Levels During Programming and Erasing Accessing the Flash Module 1 TMS320F206 Flash Access-Control Register ±2. Memory Maps in Register and Array Access ModesOUT 2 TMS320F24x Flash Access-Control RegisterSegment Control Register Segctr Flash Module Control Registers±3. Segment Control Register Field Descriptions Write Address Register Wadrs Flash Test Register TSTWrite Data Register Wdata Read Modes Program Operation Erase Operation Recovering From Over-Erasure Flash-Write Operation Protecting the Array Reading From the Flash ArrayAlgorithm Implementations Software Considerations How the Algorithms Fit Into the Program-Erase-Reprogram Flow ±1. Algorithms in the Overall Flow ±2. The Programming Algorithm in the Overall Flow Programming or Clear AlgorithmPreliminary ±3. Programming or Clear Algorithm Flow Step Action Description Mask the data to program Preliminary ±4. Erase Algorithm in the Overall Flow Erase Algorithm±2. Steps for Applying One Erase Pulse Preliminary ±5. Erase Algorithm Flow ±6. Flash-Write Algorithm in the Overall Flow Flash-Write Algorithm±3. Steps for Applying One Flash-Write Pulse ±7. Flash-Write Algorithm Flow Preliminary Preliminary Assembly Source Listings Program Examples Header File for Constants and Variables, SVAR20.H Assembly Source for AlgorithmsBASE1 ErrorBASE0 BASE+0Dloop ConstantsD5K D7KProtect Clear Algorithm, SCLR20.ASMSegst SegendAR1 Gclr PROTECT,SEGST,SEGEND DELAY,REGS,ARRAYSplk #0,ERROR AR0Newrow Exit Splk #1,ERRORSacl Flst Lacl FladrsTblr Fldata Activate Write BIT Tblw SPAD1 Execute Command LARSET Delay Call DELAY,*,AR6 Wait Stop Write Operation Splk Shutdown Write Operation Tblw SPAD1 Execute Command LARBcnd PBDONE,EQ Tblw SPAD1 Execute Command LARPrgbyte Call SETRDVER0 Lacl BASE2Erase Algorithm, SERA20.ASM Flash Write Command Word Erase Command WordErase Exebin Command Word Inverse Erase Command WordXorerase Clrc OVMSacl Flend Call SetmodeNextivers Lacl BASE1 Splk #STOP,BASE0Inverase Splk #INVER,BASE0 Call Setmode BlddFlash Stop command, and Ffff for Wdata Flash-Write Algorithm, SFLW20.ASM Bldd #FLST,BASE1 MaxflwFlws Flwrite Splk Call Array Access Flash Array DoneCall DELAY,*,AR6 BcndSetmode Call Lacl Tblw LAR Call Call RET LAR AR0,#MAXFLW CmprProgramming Algorithm, SPGM20.ASM Gpgmj PROTECT,DELAY,REGS,ARRAYAR3 AR4SUB Sacl BASE4 Setc Intm Globally Mask ALL Interrupts Splk #0,ERRORGpgmj Splk Mask ALL InterruptsAdjrow NEG Rowdone Lacl FladrsBcnd DONE, GT Lacl Fladrs NewrowSETRDVER0 Call Regs Access Flash Registers Shut Down Write Operation Tblw SPAD1 Execute Command LARPbend RET XOR FldataBcnd PBEND,EQ Subroutines Used By All Four Algorithms, SUTILS20.ASM Lacc Flst SUB OUT SPAD2,FACCESS0SPAD2,FACCESS1 OUT SPAD2,F24XACCSCallable Interface to Flash Algorithms PARMS+2 GclrSEGST,SEGEND,PROTECT PARMS+1Arprotect Lacl ErrorErsparams Arstack1PROTECT Sacl ErscountCall Flws LAR AR1,SVAR1Call Gpgmj Popd *+Assembly Code for TMS320F206 Sample Assembly Code to Erase and Reprogram the TMS320F206PARMS+1 SUB Memory DLY Psaram Block B2Sections PsaramSample C Code to Erase and Reprogram the TMS320F206 Linker Command File for TMS320F206 Sample C Code Block B2 Dsaram FLASH0FLASH1 BLKB2Assembly Code for TMS320F240 Sample Assembly Code to Erase and Reprogram the TMS320F240CKCR1 RticrWdcr CKCR0LDP #PARMS Splk LDP #DPPF1PORRST, PLLRST, Illrst SWRST, Wdrst Lacl Syssr Accl = Syssr Sacl SyssrDaram LDP #PARMS B0PGM Linker Command File for TMS320F240 Sample Assembly CodeExtram Extram 0 /******Delay Subroutine Rev1.003/98 JGC Linker Command File for TMS320F240 Sample C Code B0DAT Block B2 DsramLacl Wdcr Function for Disabling TMS320F240 Watchdog TimerCompute Length Syscr Functions for Initializing the TMS320F240Sacl Wdcr PshdSacl Wdtcr Index Assembly code SERA2x.ASM Described 10 to Margin Role in single program pulse WRITE/ERASE field Described