?? boot.lis
字號(hào):
00FA bSSC_TABLE_TableId: equ FAh ; table ID
0000
003A OPER_KEY: equ 3Ah ; operation key
0000
0000 ;----------------------------------
0000 ; SSC_Action macro command codes
0000 ;----------------------------------
0001 FLASH_READ: equ 1 ; flash read command
0002 FLASH_WRITE: equ 2 ; flash write command
0003 FLASH_ERASE: equ 3 ; flash erase command
0004 PROTECT_BLOCK: equ 4 ; flash protect block command
0006 TABLE_READ: equ 6 ; table read command
0007 FLASH_CHECKSUM: equ 7 ; flash checksum calculation command
0008 CALIBRATE0: equ 8 ; Calibrate without checksum
0009 CALIBRATE1: equ 9 ; Calibrate with checksum
0000
0000 ;----------------------------------
0000 ; SSC_Action Flash table addresses
0000 ;----------------------------------
0000 ; Table 0 Values
00F8 SILICON_ID_1: equ F8h ; Table 0 first byte of silicon ID
00F9 SILICON_ID_0: equ F9h ; Table 0 second byte of silicon ID
0000
0000 ; Table 1 Values
00F8 SSCTBL1_TRIM_BGR_3V: equ F8h ; 3.3V bandgap ref voltage trim
00F9 SSCTBL1_TRIM_IMO_3V_24MHZ: equ F9h ; 3.3V internal main oscillator trim (24MHz)
00FA SSCTBL1_CAL_ROOM_3V: equ FAh ; 3.3V Room Temp Calibration
00FB SSCTBL1_CAL_HOT_3V: equ FBh ; 3.3V Hot Temp Calibration
00FC SSCTBL1_TRIM_BGR_5V: equ FCh ; 5.0V bandgap ref voltage trim
00FD SSCTBL1_TRIM_IMO_5V_24MHZ: equ FDh ; 5.0V internal main oscillator trim (24MHz)
00FE SSCTBL1_CAL_ROOM_5V: equ FEh ; 5.0V Room Temp Calibration
00FF SSCTBL1_CAL_HOT_5V: equ FFh ; 5.0V Hot Temp Calibration
0000 ; legacy names:
00F8 VOLTAGE_TRIM_3V: equ F8h ; Table 1 3.3V bandgap ref voltage trim value
00F9 OSCILLATOR_TRIM_3V: equ F9h ; Table 1 3.3V internal main oscillator trim value
00FC VOLTAGE_TRIM_5V: equ FCh ; Table 1 5.0V bandgap ref voltage trim value
00FD OSCILLATOR_TRIM_5V: equ FDh ; Table 1 5.0V internal main oscillator trim value
0000
0000 ; Table 2 Values
00F8 SSCTBL2_TRIM_BGR_2V: equ F8h ; 2.7V bandgap ref voltage trim
00F9 SSCTBL2_TRIM_IMO_2V_12MHZ: equ F9h ; 2.7V internal main oscillator trim (12MHz)
00FA SSCTBL2_CAL_ROOM_2V: equ FAh ; 2.7V Room Temp Calibration
00FB SSCTBL2_CAL_HOT_2V: equ FBh ; 2.7V Hot Temp Calibration
00FC SSCTBL2_TRIM_IMO_3V_6MHZ: equ FCh ; 3.3V IMO Trim for SLOWIMO 6MHz operation
00FD SSCTBL2_TRIM_IMO_2V_6MHZ: equ FDh ; 2.7V IMO Trim for SLOWIMO 6MHz operation
00FE SSCTBL2_TRIM_IMO_5V_6MHZ: equ FEh ; 5.0V IMO Trim for SLOWIMO 6MHz operation
0000
0000
0000 ;-----------------------------------------------------------------------------
0000 ; MACRO SSC_Action( OpCode )
0000 ;
0000 ; DESCRIPTION:
0000 ; Performs supervisory operations defined in Supervisory ROM (SROM)
0000 ; section of Technical Reference Manual and/or Datasheet.
0000 ;-----------------------------------------------------------------------------
0000 ;
0000 ; ARGUMENTS:
0000 ; BYTE OpCode - specified supervisory operation - defined operations
0000 ; are: FLASH_WRITE, FLASH_ERASE, FLASH_READ, TABLE_READ,
0000 ; FLASH_CHECKSUM, PROTECT_BLOCK
0000 ; RETURNS:
0000 ; Nothing
0000 ;
0000 ; SIDE EFFECTS:
0000 ; The values of the A and X registers are modified
0000 ;
0000 ; PROCEDURE:
0000 ; 1) specify a 3 byte stack frame. Save in [KEYSP]
0000 ; 2) insert the flash Supervisory key in [KEY1]
0000 ; 3) store function code in A
0000 ; 4) call the supervisory code
0000 ;
0000 macro SSC_Action( OpCode )
0000 ; !!! DO NOT CHANGE THIS CODE !!!
0000 ; This sequence of opcodes provides a
0000 ; signature for the debugger and ICE.
0000 mov X, SP ; copy SP into X
0000 mov A, X ; mov to A
0000 add A, 3 ; create 3 byte stack frame
0000 mov [bSSC_KEYSP], A ; save stack frame for supervisory code
0000 mov [bSSC_KEY1], OPER_KEY ; load the code for supervisory operations
0000 mov A, @OpCode ; load A with specific Flash operation
0000 SSC ; SSC call the supervisory code
0000 ; !!! DO NOT CHANGE THIS CODE !!!
0000 macro M8SSC_SetTableTrims( Table, IMO_Trim, Volt_Trim )
0000 mov [bSSC_TABLE_TableId], @Table ; Point to requested Flash Table
0000 SSC_Action TABLE_READ ; Perform a table read supervisor call
0000 M8C_SetBank1
0000 mov A, [@IMO_Trim]
0000 mov reg[IMO_TR], A ; Load the 3V trim oscillator setting
0000 mov A, [@Volt_Trim]
0000 mov reg[BDG_TR], A ; Load the bandgap trim setting for 3V
0000 M8C_SetBank0
0000 macro M8SSC_Set2TableTrims( TableA, IMO_Trim, TableB, Volt_Trim )
0000 mov [bSSC_TABLE_TableId], @TableA ; Point to Flash Table for IMO Trim
0000 SSC_Action TABLE_READ ; Copy table data to RAM F8-FF
0000 M8C_SetBank1 ; (Note, preserved across next SSC!)
0000 mov A, [@IMO_Trim] ; Set the main oscillator trim
0000 mov reg[IMO_TR], A
0000 mov [bSSC_TABLE_TableId], @TableB ; Point to Flash Table for Volt Trim
0000 SSC_Action TABLE_READ ; Copy table data to RAM F8-FF
0000 mov A, [@Volt_Trim] ; Set the bandgap voltage trim
0000 mov reg[BDG_TR], A ; Load the bandgap trim setting for 3V
0000 M8C_SetBank0
0000 macro M8SSC_SetTableVoltageTrim( Table, Volt_Trim )
0000 mov [bSSC_TABLE_TableId], @Table ; Point to Flash Table
0000 SSC_Action TABLE_READ ; Perform a table read supervisor call
0000 M8C_SetBank1
0000 mov A, [@Volt_Trim] ; Get the bandgap trim seting
0000 mov reg[BDG_TR], A ; Update the register value
0000 M8C_SetBank0
0000 macro M8SSC_SetTableIMOTrim( Table, IMO_Trim )
0000 mov [bSSC_TABLE_TableId], @Table ; Point to Flash Table 1
0000 SSC_Action TABLE_READ ; Perform a table read supervisor call
0000 M8C_SetBank1
0000 mov A, [@IMO_Trim] ; Get the IMO trim seting
0000 mov reg[IMO_TR], A ; Update the register value
0000 M8C_SetBank0
0001 SYSTEM_STACK_PAGE: equ 1
0000 SYSTEM_STACK_BASE_ADDR: equ 0h
0001 SYSTEM_LARGE_MEMORY_MODEL: equ 1
0000 SYSTEM_SMALL_MEMORY_MODEL: equ 0
0001 SYSTEM_TOOLS: equ 1
0001 SYSTEM_IDXPG_TRACKS_STK_PP: equ 1
0000 SYSTEM_IDXPG_TRACKS_IDX_PP: equ 0
0000 SYSTEM_MULTIPAGE_STACK: equ 0
0000
0000
0000 ; ******* Function Class Definitions *******
0000 ;
0000 ; These definitions are used to describe RAM access patterns. They provide
0000 ; documentation and they control prologue and epilogue macros that perform
0000 ; the necessary housekeeping functions for large memory model devices like
0000 ; the CY8C27x66 and CY8C29x66.
0000
0001 RAM_USE_CLASS_1: equ 1 ; PUSH, POP & I/O access
0002 RAM_USE_CLASS_2: equ 2 ; Indexed address mode on stack page
0004 RAM_USE_CLASS_3: equ 4 ; Indexed address mode to any page
0008 RAM_USE_CLASS_4: equ 8 ; Direct/Indirect address mode access
0000
0000
0000 ; ******* Page Pointer Manipulation Macros *******
0000 ;
0000 ; Most of the following macros are conditionally compiled so they only
0000 ; produce code if the large memory model is selected.
0000
0000 ;-----------------------------------------------
0000 ; Set Stack Page Macro
0000 ;-----------------------------------------------
0000 ;
0000 ; DESC: Modify STK_PP in the large or small memory Models.
0000 ;
0000 ; INPUT: Constant (e.g., SYSTEM_STACK_PAGE) that specifies the RAM page on
0000 ; which stack operations like PUSH and POP store and retrieve their
0000 ; data
0000 ;
0000 ; COST: 8 instruction cycles (in LMM only)
0000
0000 macro RAM_SETPAGE_STK( PG_NUMBER )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 mov reg[STK_PP], @PG_NUMBER
0000 ENDIF
0000 macro RAM_SETPAGE_CUR( PG_NUMBER )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 mov reg[CUR_PP], @PG_NUMBER
0000 ENDIF
0000 macro RAM_SETPAGE_IDX( PG_NUMBER )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 mov reg[IDX_PP], @PG_NUMBER
0000 ENDIF
0000 macro RAM_SETPAGE_MVR( PG_NUMBER )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 mov reg[MVR_PP], @PG_NUMBER
0000 ENDIF
0000 macro RAM_SETPAGE_MVW( PG_NUMBER )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 mov reg[MVW_PP], @PG_NUMBER
0000 ENDIF
0000 macro RAM_SETPAGE_IDX2STK
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 IF ( SYSTEM_MULTIPAGE_STACK )
0000 mov A, reg[STK_PP]
0000 mov reg[IDX_PP], A
0000 ELSE
0000 RAM_SETPAGE_IDX SYSTEM_STACK_PAGE
0000 ENDIF
0000 ENDIF
0000 macro RAM_CHANGE_PAGE_MODE( MODE )
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
0000 or F, FLAG_PGMODE_MASK & @MODE
0000 ENDIF
0000 macro RAM_SET_NATIVE_PAGING
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
0000 or F, FLAG_PGMODE_11b ; LMM w/ IndexPage<==>StackPage
0000 ENDIF ; PGMODE LOCKED
0000 IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
0000 or F, FLAG_PGMODE_10b ; LMM with independent IndexPage
0000 ENDIF ; PGMODE FREE
0000 ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
0000 macro RAM_RESTORE_NATIVE_PAGING
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -