📄 debugtrace.s51
字号:
// 16 Copyright (c) 2006 by Texas Instruments, Inc.
// 17 All Rights Reserved. Permission to use, reproduce, copy, prepare
// 18 derivative works, modify, distribute, perform, display or sell this
// 19 software and/or its documentation for any purpose is prohibited
// 20 without the express written consent of Texas Instruments, Inc.
// 21 *********************************************************************/
// 22
// 23 #if defined( MT_TASK ) || defined( APP_DEBUG )
// 24
// 25 /*********************************************************************
// 26 * INCLUDES
// 27 */
// 28 #include "ZComDef.h"
// 29 #include "OSAL.h"
// 30 #include "MTEL.h"
// 31 #include "DebugTrace.h"
// 32
// 33 #if defined ( APP_DEBUG )
// 34 #include "DebugApp.h"
// 35 #endif
// 36
// 37 /*********************************************************************
// 38 * MACROS
// 39 */
// 40
// 41 /*********************************************************************
// 42 * CONSTANTS
// 43 */
// 44
// 45
// 46 /*********************************************************************
// 47 * TYPEDEFS
// 48 */
// 49
// 50 /*********************************************************************
// 51 * GLOBAL VARIABLES
// 52 */
// 53
// 54 /*********************************************************************
// 55 * EXTERNAL VARIABLES
// 56 */
// 57
// 58 /*********************************************************************
// 59 * EXTERNAL FUNCTIONS
// 60 */
// 61
// 62 /*********************************************************************
// 63 * LOCAL VARIABLES
// 64 */
// 65
// 66 /*********************************************************************
// 67 * LOCAL FUNCTIONS
// 68 */
// 69
// 70 /*********************************************************************
// 71 * @fn debug_msg
// 72 *
// 73 * @brief
// 74 *
// 75 * This feature allows modules to display debug information as
// 76 * applications execute in real-time. This feature will work similar
// 77 * to "printf()" but will output to the serial port for display in
// 78 * the Z-Test tool.
// 79 *
// 80 * This feature will most likely be compiled out in the production code
// 81 * to save code space.
// 82 *
// 83 * @param byte compID - Component ID
// 84 * @param byte severity - CRITICAL(0x01), ERROR(0x02), INFORMATION(0x03)
// 85 * or TRACE(0x04)
// 86 * @param byte numParams - number of parameter fields (param1-3)
// 87 * @param UINT16 param1 - user defined data
// 88 * @param UINT16 param2 - user defined data
// 89 * @param UINT16 param3 - user defined data
// 90 *
// 91 * @return void
// 92 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 93 void debug_msg( byte compID, byte severity, byte numParams, UINT16 param1,
debug_msg:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function debug_msg
// 94 UINT16 param2, UINT16 param3 )
// 95 {
FUNCALL debug_msg, osal_msg_allocate
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL debug_msg, osal_msg_send
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 2
MOV A,#-0x2
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV ?V0 + 2,R1
MOV ?V0 + 3,R2
MOV ?V0 + 4,R3
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 6,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 7,A
MOV A,#0x14
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
// 96
// 97 mtDebugMsg_t *mtDebugMsg;
// 98 UINT16 timestamp;
// 99
// 100 #if defined ( APP_DEBUG ) && !defined (ZDO_COORDINATOR)
// 101 DebugApp_BuildMsg( compID, severity, numParams, param1, param2, param3 );
// 102 return;
// 103 #endif
// 104
// 105 if ( debugThreshold == 0 || debugCompId != compID )
MOV DPTR,#debugThreshold
MOVX A,@DPTR
JZ ??debug_msg_0
MOV DPTR,#debugCompId
MOVX A,@DPTR
XRL A,?V0 + 2
JNZ ??debug_msg_0
// 106 return;
// 107
// 108 // Fill in the timestamp
// 109 timestamp = 0;
// 110
// 111 // Get a message buffer to build the debug message
// 112 mtDebugMsg = (mtDebugMsg_t *)osal_msg_allocate( sizeof( mtDebugMsg_t ) );
; Setup parameters for call to function osal_msg_allocate
MOV R2,#0xd
MOV R3,#0x0
MOV DPTR,#(osal_msg_allocate & 0xffff)
MOV A,#((osal_msg_allocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 113 if ( mtDebugMsg )
MOV A,R2
JNZ ??debug_msg_1
MOV A,R3
??debug_msg_1:
JZ ??debug_msg_0
// 114 {
// 115 mtDebugMsg->hdr.event = CMD_DEBUG_MSG;
MOV A,#0x2
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 116 mtDebugMsg->compID = compID;
INC DPTR
INC DPTR
MOV A,?V0 + 2
LCALL ?Subroutine1 & 0xFFFF
// 117 mtDebugMsg->severity = severity;
??CrossCallReturnLabel_2:
MOV A,?V0 + 3
LCALL ?Subroutine1 & 0xFFFF
// 118 mtDebugMsg->numParams = numParams;
??CrossCallReturnLabel_3:
INC DPTR
MOV A,?V0 + 4
MOVX @DPTR,A
// 119
// 120 mtDebugMsg->param1 = param1;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
LCALL ?Subroutine0 & 0xFFFF
// 121 mtDebugMsg->param2 = param2;
??CrossCallReturnLabel_0:
MOV A,?V0 + 6
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 7
LCALL ?Subroutine0 & 0xFFFF
// 122 mtDebugMsg->param3 = param3;
??CrossCallReturnLabel_1:
INC DPTR
INC DPTR
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
// 123 mtDebugMsg->timestamp = timestamp;
MOV A,R2
ADD A,#0xb
MOV DPL,A
MOV A,R3
ADDC A,#0x0
MOV DPH,A
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 124
// 125 osal_msg_send( MT_TaskID, (uint8 *)mtDebugMsg );
; Setup parameters for call to function osal_msg_send
MOV DPTR,#MT_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_msg_send & 0xffff)
MOV A,#((osal_msg_send >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
??debug_msg_0:
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
MOV R7,#0x8
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 126 }
// 127
// 128 } /* debug_msg() */
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond1 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_3
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond2 Using cfiCommon0
CFI (cfiCond2) NoFunction
CFI (cfiCond2) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond2) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond2) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond2) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond2) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond2) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond2) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond2) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond2) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond2) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond2) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond2) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond2) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond2) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond2) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond2) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond2) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond2) CFA_SP SP+0
CFI (cfiCond2) CFA_XSP16 add(XSP16, 18)
CFI Block cfiPicker3 Using cfiCommon1
CFI (cfiPicker3) NoFunction
CFI (cfiPicker3) Picker
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_4:
RET
CFI EndBlock cfiCond1
CFI EndBlock cfiCond2
CFI EndBlock cfiPicker3
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiCond4 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_4, ??CrossCallReturnLabel_3
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -