Code:
*********************************************************************************************
SECTION-ALLOCATION SECTION
Section Name Size Type From To Segment
---------------------------------------------------------------------------------------------
CodeFDSect 13837 R 0x4000 0x760C ROM_4000
CodeFESect 3214 R 0xFE8000 0xFE8C8D PAGE_FE
ConstSect 10268 R 0xC000 0xE81B ROM_C000
EEPromSect 884 R 0xC00 0xF73 EEPROM
PageF2Sect 16384 R 0xF28000 0xF2BFFF PAGE_F2
PageF6Sect 4096 R 0xF68000 0xF68FFF PAGE_F6
XGATE_CODE 608 R 0xFEB100 0xFEB35F ROM_XGATE
.stack 101 R/W 0x3F9B 0x3FFF MY_STK
RAMSect 9808 R/W 0x1000 0x364F RAM
PagedRAMSect 2056 R/W 0xF81100 0xF81907 RAM_F8
ISR_Sect 230 R 0xF700 0xF7E5 ISR
VectorTable 240 R 0xFF10 0xFFFF Vector
.init 23 R 0xF800 0xF816 Boot
BootSect 1227 R 0xF817 0xFCE1 Boot
Summary of section sizes per section type:
READ_ONLY (R): C743 (dec: 51011)
READ_WRITE (R/W): 2EBD (dec: 11965)
XGATEINIT:
MOVW #XGMCTL_CLEAR,XGMCTL ;clear all XGMCTL bits
BRSET XGCHID,#0FFh,XGATEINIT ;wait until possible current thread is done
LDX #GLOBAL(XGATE_VectorTable);initialize the XGATE vector block and
STX XGVBR ;set the XGVBR register to its start address
LDX #XGIF0 ;clear all channel interrupt flags
LDD #0FFFFh ;by writing 1 to
STD 2,X+ ;XGIF0
STD 2,X+ ;XGIF1
STD 2,X+ ;XGIF2
STD 2,X+ ;XGIF3
STD 2,X+ ;XGIF4
STD 2,X+ ;XGIF5
STD 2,X+ ;XGIF6
STD 2,X+ ;XGIF7
MOVW #0FF00h,XGSWT ;clear all software triggers
;* Copy the XGATE program code from Flash to the RAM
LDY #GLOBAL(__SEG_START_XGATE_CODE) ;we use GPAGE for the src (to flash)
LDAB #GLOBAL_PAGE(__SEG_START_XGATE_CODE)
STAB GPAGE
LDX #__SEG_RELOCATE_TO_XGATE_CODE ;and RPAGE to the RAM
LDAB #PAGE(__SEG_RELOCATE_TO_XGATE_CODE)
STAB RPAGE
LDD #__SEG_SIZE_XGATE_CODE
PSHD
CopyLoop:
GLDAA 1,Y+ ;load a single code byte from flash
STAA 1,X+ ;and store it to RAM
DECW 0,SP
BNE CopyLoop
PULD ;restore stack
MOVB #FDRAM,RPAGE
RTS
;
; XGATE Vector table
;
;#########################################################################################################
ALIGN 4
XGATE_VectorTable:
; Channel_# = Vector address / 2
Channel_00: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 0) ; Reserved
Channel_01: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 1) ; Reserved
Channel_02: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 2) ; Reserved
Channel_03: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 3) ; Reserved
Channel_04: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 4) ; Reserved
Channel_05: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 5) ; Reserved
Channel_06: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 6) ; Reserved
Channel_07: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 7) ; Reserved
Channel_08: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 8) ; Spurious Interrupt
Channel_09: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 9) ; Reserved
Channel_0A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 10) ; Reserved
Channel_0B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 11) ; Reserved
Channel_0C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 12) ; Reserved
Channel_0D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 13) ; Reserved
Channel_0E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 14) ; Reserved
Channel_0F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 15) ; Reserved
Channel_10: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 16) ; Reserved
Channel_11: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 17) ; Reserved
Channel_12: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 18) ; Reserved
Channel_13: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 19) ; Reserved
Channel_14: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 20) ; Reserved
Channel_15: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 21) ; Reserved
Channel_16: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 22) ; Reserved
Channel_17: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 23) ; Reserved
Channel_18: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 24) ; Reserved
Channel_19: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 25) ; Reserved
Channel_1A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 26) ; Reserved
Channel_1B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 27) ; Reserved
Channel_1C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 28) ; Reserved
Channel_1D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 29) ; Reserved
Channel_1E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 30) ; Reserved
Channel_1F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 31) ; Reserved
Channel_20: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 32) ; Reserved
Channel_21: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 33) ; Reserved
Channel_22: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 34) ; Reserved
Channel_23: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 35) ; Reserved
Channel_24: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 36) ; Reserved
Channel_25: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 37) ; Reserved
Channel_26: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 38) ; Reserved
Channel_27: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 39) ; Reserved
Channel_28: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 40) ; Reserved
Channel_29: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 41) ; Reserved
Channel_2A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 42) ; Reserved
Channel_2B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 43) ; Reserved
Channel_2C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 44) ; Reserved
Channel_2D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 45) ; Reserved
Channel_2E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 46) ; Reserved
Channel_2F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 47) ; Reserved
Channel_30: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 48) ; XSRAM20K Access Violation
Channel_31: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 49) ; XGATE Software Error Interrupt
Channel_32: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 50) ; XGATE Software Trigger 7
Channel_33: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 51) ; XGATE Software Trigger 6
Channel_34: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 52) ; XGATE Software Trigger 5
Channel_35: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 53) ; XGATE Software Trigger 4
Channel_36: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 54) ; XGATE Software Trigger 3
Channel_37: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 55) ; XGATE Software Trigger 2
Channel_38: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 56) ; XGATE Software Trigger 1
Channel_39: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 57) ; XGATE Software Trigger 0
Channel_3A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 58) ; Periodic Interrupt Timer
Channel_3B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 59) ; Periodic Interrupt Timer
Channel_3C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 60) ; Periodic Interrupt Timer
Channel_3D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 61) ; Periodic Interrupt Timer
Channel_3E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 62) ; Reserved
Channel_3F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 63) ; Autonomous Periodical interrupt API
Channel_40: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 64) ; Low Voltage interrupt LVI
Channel_41: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 65) ; IIC1 Bus
Channel_42: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 66) ; SCI5
Channel_43: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 67) ; SCI4
Channel_44: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 68) ; SCI3
Channel_45: DC.W %XGATE_16(SCI2_Thread), %XGATE_16( PRTBUF) ; SCI2
Channel_46: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 60) ; PWM Emergency Shutdown
Channel_47: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 71) ; Port P Interrupt
Channel_48: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 72) ; CAN4 transmit
Channel_49: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 73) ; CAN4 receive
Channel_4A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 74) ; CAN4 errors
Channel_4B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 75) ; CAN4 wake-up
Channel_4C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 76) ; CAN3 transmit
Channel_4D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 77) ; CAN3 receive
Channel_4E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 78) ; CAN3 errors
Channel_4F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 79) ; CAN3 wake-up
Channel_50: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 80) ; CAN2 transmit
Channel_51: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 81) ; CAN2 receive
Channel_52: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 82) ; CAN2 errors
Channel_53: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 83) ; CAN2 wake-up
Channel_54: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 84) ; CAN1 transmit
Channel_55: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 85) ; CAN1 receive
Channel_56: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 86) ; CAN1 errors
Channel_57: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 87) ; CAN1 wake-up
Channel_58: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 88) ; CAN0 transmit
Channel_59: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 89) ; CAN0 receive
Channel_5A: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 90) ; CAN0 errors
Channel_5B: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 91) ; CAN0 wake-up
Channel_5C: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 92) ; FLASH
Channel_5D: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 93) ; EEPROM
Channel_5E: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 94) ; SPI2
Channel_5F: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 95) ; SPI1
Channel_60: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 96) ; IIC0 Bus
Channel_61: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 97) ; Reserved
Channel_62: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 98) ; CRG Self Clock Mode
Channel_63: DC.W %XGATE_16(ErrorHandler), %XGATE_16( 99) ; CRG PLL lock
Channel_64: DC.W %XGATE_16(ErrorHandler), %XGATE_16(100) ; Pulse Accumulator B Overflow
Channel_65: DC.W %XGATE_16(ErrorHandler), %XGATE_16(101) ; Modulus Down Counter underflow
Channel_66: DC.W %XGATE_16(ErrorHandler), %XGATE_16(102) ; Port H
Channel_67: DC.W %XGATE_16(ErrorHandler), %XGATE_16(103) ; Port J
Channel_68: DC.W %XGATE_16(ErrorHandler), %XGATE_16(104) ; ATD1
Channel_69: DC.W %XGATE_16(ErrorHandler), %XGATE_16(105) ; ATD0
Channel_6A: DC.W %XGATE_16(SCI1_Thread), %XGATE_16( RECEIBEBUF1) ; SCI1
Channel_6B: DC.W %XGATE_16(SCI0_Thread), %XGATE_16( RECEIVEBUF) ; SCI0
Channel_6C: DC.W %XGATE_16(ErrorHandler), %XGATE_16(108) ; SPI0
Channel_6D: DC.W %XGATE_16(ErrorHandler), %XGATE_16(109) ; Pulse accumulator input edge
Channel_6E: DC.W %XGATE_16(ErrorHandler), %XGATE_16(110) ; Pulse accumulator A overflow
Channel_6F: DC.W %XGATE_16(ErrorHandler), %XGATE_16(111) ; Enhanced Capture Timer overflow
Channel_70: DC.W %XGATE_16(ErrorHandler), %XGATE_16(112) ; Enhanced Capture Timer channel 7
Channel_71: DC.W %XGATE_16(ErrorHandler), %XGATE_16(113) ; Enhanced Capture Timer channel 6
Channel_72: DC.W %XGATE_16(ErrorHandler), %XGATE_16(114) ; Enhanced Capture Timer channel 5
Channel_73: DC.W %XGATE_16(ErrorHandler), %XGATE_16(115) ; Enhanced Capture Timer channel 4
Channel_74: DC.W %XGATE_16(ErrorHandler), %XGATE_16(116) ; Enhanced Capture Timer channel 3
Channel_75: DC.W %XGATE_16(ErrorHandler), %XGATE_16(117) ; Enhanced Capture Timer channel 2
Channel_76: DC.W %XGATE_16(ErrorHandler), %XGATE_16(118) ; Enhanced Capture Timer channel 1
Channel_77: DC.W %XGATE_16(ErrorHandler), %XGATE_16(119) ; Enhanced Capture Timer channel 0
Channel_78: DC.W %XGATE_16(ErrorHandler), %XGATE_16(120) ; Real Time Interrupt
Channel_79: DC.W %XGATE_16(ErrorHandler), %XGATE_16(121) ; Reserved
Channel_7A: DC.W %XGATE_16(ErrorHandler), %XGATE_16(122) ; Reserved
Channel_7B: DC.W %XGATE_16(ErrorHandler), %XGATE_16(123) ; Reserved
Channel_7C: DC.W %XGATE_16(ErrorHandler), %XGATE_16(124) ; Reserved
Channel_7D: DC.W %XGATE_16(ErrorHandler), %XGATE_16(125) ; Reserved
Channel_7E: DC.W %XGATE_16(ErrorHandler), %XGATE_16(126) ; Reserved
Channel_7F: DC.W %XGATE_16(ErrorHandler), %XGATE_16(127) ; Reserved