www.pudn.com > uCOS-III.zip > os_dbg.c, change:2011-08-02,size:18357b


/* 
************************************************************************************************************************ 
*                                                      uC/OS-III 
*                                                 The Real-Time Kernel 
* 
*                                  (c) Copyright 2009-2011; Micrium, Inc.; Weston, FL 
*                           All rights reserved.  Protected by international copyright laws. 
* 
*                                                  DEBUGGER CONSTANTS 
* 
* File    : OS_DBG.C 
* By      : JJL 
* Version : V3.02.00 
* 
* LICENSING TERMS: 
* --------------- 
*           uC/OS-III is provided in source form for FREE short-term evaluation, for educational use or  
*           for peaceful research.  If you plan or intend to use uC/OS-III in a commercial application/ 
*           product then, you need to contact Micrium to properly license uC/OS-III for its use in your  
*           application/product.   We provide ALL the source code for your convenience and to help you  
*           experience uC/OS-III.  The fact that the source is provided does NOT mean that you can use  
*           it commercially without paying a licensing fee. 
* 
*           Knowledge of the source code may NOT be used to develop a similar product. 
* 
*           Please help us continue to provide the embedded community with the finest software available. 
*           Your honesty is greatly appreciated. 
* 
*           You can contact us at www.micrium.com, or by phone at +1 (954) 217-2036. 
************************************************************************************************************************ 
*/ 
 
#include <os.h> 
 
#ifdef VSC_INCLUDE_SOURCE_FILE_NAMES 
const  CPU_CHAR  *os_dbg__c = "$Id: $"; 
#endif 
 
CPU_INT16U  const  OSDbg_DbgEn                 = OS_CFG_DBG_EN;                /* Debug constants are defined below   */ 
 
#if OS_CFG_DBG_EN > 0u 
 
/* 
************************************************************************************************************************ 
*                                                      DEBUG DATA 
************************************************************************************************************************ 
*/ 
 
CPU_INT08U  const  OSDbg_ArgChkEn              = OS_CFG_ARG_CHK_EN; 
CPU_INT08U  const  OSDbg_AppHooksEn            = OS_CFG_APP_HOOKS_EN; 
 
CPU_INT32U  const  OSDbg_EndiannessTest        = 0x12345678LU;                 /* Variable to test CPU endianness     */ 
 
CPU_INT08U  const  OSDbg_CalledFromISRChkEn    = OS_CFG_CALLED_FROM_ISR_CHK_EN; 
 
CPU_INT08U  const  OSDbg_FlagEn                = OS_CFG_FLAG_EN; 
OS_FLAG_GRP const  OSDbg_FlagGrp               = { 0u }; 
#if OS_CFG_FLAG_EN > 0u 
CPU_INT08U  const  OSDbg_FlagDelEn             = OS_CFG_FLAG_DEL_EN; 
CPU_INT08U  const  OSDbg_FlagModeClrEn         = OS_CFG_FLAG_MODE_CLR_EN; 
CPU_INT08U  const  OSDbg_FlagPendAbortEn       = OS_CFG_FLAG_PEND_ABORT_EN; 
CPU_INT16U  const  OSDbg_FlagGrpSize           = sizeof(OS_FLAG_GRP);          /* Size in Bytes of OS_FLAG_GRP        */ 
CPU_INT16U  const  OSDbg_FlagWidth             = sizeof(OS_FLAGS);             /* Width (in bytes) of OS_FLAGS        */ 
#else 
CPU_INT08U  const  OSDbg_FlagDelEn             = 0u; 
CPU_INT08U  const  OSDbg_FlagModeClrEn         = 0u; 
CPU_INT08U  const  OSDbg_FlagPendAbortEn       = 0u; 
CPU_INT16U  const  OSDbg_FlagGrpSize           = 0u; 
CPU_INT16U  const  OSDbg_FlagWidth             = 0u; 
#endif 
 
#if OS_CFG_ISR_POST_DEFERRED_EN > 0u 
CPU_INT16U  const  OSDbg_IntQ                  = sizeof(OS_INT_Q); 
#else 
CPU_INT16U  const  OSDbg_IntQ                  = 0u; 
#endif 
 
CPU_INT08U  const  OSDbg_ISRPostDeferredEn     = OS_CFG_ISR_POST_DEFERRED_EN; 
 
OS_MEM      const  OSDbg_Mem                   = { 0u }; 
CPU_INT08U  const  OSDbg_MemEn                 = OS_CFG_MEM_EN; 
#if OS_CFG_MEM_EN > 0u 
CPU_INT16U  const  OSDbg_MemSize               = sizeof(OS_MEM);               /* Mem. Partition header size (bytes)  */ 
#else 
CPU_INT16U  const  OSDbg_MemSize               = 0u; 
#endif 
 
 
CPU_INT08U  const  OSDbg_MsgEn                 = OS_MSG_EN; 
#if (OS_MSG_EN) > 0u 
CPU_INT16U  const  OSDbg_MsgSize               = sizeof(OS_MSG);               /* OS_MSG size                         */ 
CPU_INT16U  const  OSDbg_MsgPoolSize           = sizeof(OS_MSG_POOL); 
CPU_INT16U  const  OSDbg_MsgQSize              = sizeof(OS_MSG_Q); 
#else 
CPU_INT16U  const  OSDbg_MsgSize               = 0u; 
CPU_INT16U  const  OSDbg_MsgPoolSize           = 0u; 
CPU_INT16U  const  OSDbg_MsgQSize              = 0u; 
#endif 
 
 
OS_MUTEX    const  OSDbg_Mutex                 = { 0u }; 
CPU_INT08U  const  OSDbg_MutexEn               = OS_CFG_MUTEX_EN; 
#if OS_CFG_MUTEX_EN > 0u 
CPU_INT08U  const  OSDbg_MutexDelEn            = OS_CFG_MUTEX_DEL_EN; 
CPU_INT08U  const  OSDbg_MutexPendAbortEn      = OS_CFG_MUTEX_PEND_ABORT_EN; 
CPU_INT16U  const  OSDbg_MutexSize             = sizeof(OS_MUTEX);             /* Size in bytes of OS_MUTEX           */ 
#else 
CPU_INT08U  const  OSDbg_MutexDelEn            = 0u; 
CPU_INT08U  const  OSDbg_MutexPendAbortEn      = 0u; 
CPU_INT16U  const  OSDbg_MutexSize             = 0u; 
#endif 
 
CPU_INT08U  const  OSDbg_ObjTypeChkEn          = OS_CFG_OBJ_TYPE_CHK_EN; 
 
 
CPU_INT08U  const  OSDbg_PendMultiEn           = OS_CFG_PEND_MULTI_EN; 
CPU_INT16U  const  OSDbg_PendDataSize          = sizeof(OS_PEND_DATA); 
CPU_INT16U  const  OSDbg_PendListSize          = sizeof(OS_PEND_LIST); 
CPU_INT16U  const  OSDbg_PendObjSize           = sizeof(OS_PEND_OBJ); 
 
 
CPU_INT16U  const  OSDbg_PrioMax               = OS_CFG_PRIO_MAX;              /* Maximum number of priorities        */ 
CPU_INT16U  const  OSDbg_PrioTblSize           = sizeof(OSPrioTbl); 
 
CPU_INT16U  const  OSDbg_PtrSize               = sizeof(void *);               /* Size in Bytes of a pointer          */ 
 
 
OS_Q        const  OSDbg_Q                     = { 0u }; 
CPU_INT08U  const  OSDbg_QEn                   = OS_CFG_Q_EN; 
#if OS_CFG_Q_EN > 0u 
CPU_INT08U  const  OSDbg_QDelEn                = OS_CFG_Q_DEL_EN; 
CPU_INT08U  const  OSDbg_QFlushEn              = OS_CFG_Q_FLUSH_EN; 
CPU_INT08U  const  OSDbg_QPendAbortEn          = OS_CFG_Q_PEND_ABORT_EN; 
CPU_INT16U  const  OSDbg_QSize                 = sizeof(OS_Q);                 /* Size in bytes of OS_Q structure     */ 
#else 
CPU_INT08U  const  OSDbg_QDelEn                = 0u; 
CPU_INT08U  const  OSDbg_QFlushEn              = 0u; 
CPU_INT08U  const  OSDbg_QPendAbortEn          = 0u; 
CPU_INT16U  const  OSDbg_QSize                 = 0u; 
#endif 
 
 
CPU_INT08U  const  OSDbg_SchedRoundRobinEn     = OS_CFG_SCHED_ROUND_ROBIN_EN; 
 
 
OS_SEM      const  OSDbg_Sem                   = { 0u }; 
CPU_INT08U  const  OSDbg_SemEn                 = OS_CFG_SEM_EN; 
#if OS_CFG_SEM_EN > 0u 
CPU_INT08U  const  OSDbg_SemDelEn              = OS_CFG_SEM_DEL_EN; 
CPU_INT08U  const  OSDbg_SemPendAbortEn        = OS_CFG_SEM_PEND_ABORT_EN; 
CPU_INT08U  const  OSDbg_SemSetEn              = OS_CFG_SEM_SET_EN; 
CPU_INT16U  const  OSDbg_SemSize               = sizeof(OS_SEM);               /* Size in bytes of OS_SEM             */ 
#else 
CPU_INT08U  const  OSDbg_SemDelEn              = 0u; 
CPU_INT08U  const  OSDbg_SemPendAbortEn        = 0u; 
CPU_INT08U  const  OSDbg_SemSetEn              = 0u; 
CPU_INT16U  const  OSDbg_SemSize               = 0u; 
#endif 
 
 
CPU_INT16U  const  OSDbg_RdyList               = sizeof(OS_RDY_LIST); 
CPU_INT32U  const  OSDbg_RdyListSize           = sizeof(OSRdyList);            /* Number of bytes in the ready table  */ 
 
CPU_INT08U  const  OSDbg_StkWidth              = sizeof(CPU_STK); 
 
CPU_INT08U  const  OSDbg_StatTaskEn            = OS_CFG_STAT_TASK_EN; 
CPU_INT08U  const  OSDbg_StatTaskStkChkEn      = OS_CFG_STAT_TASK_STK_CHK_EN; 
 
CPU_INT08U  const  OSDbg_TaskChangePrioEn      = OS_CFG_TASK_CHANGE_PRIO_EN; 
CPU_INT08U  const  OSDbg_TaskDelEn             = OS_CFG_TASK_DEL_EN; 
CPU_INT08U  const  OSDbg_TaskQEn               = OS_CFG_TASK_Q_EN; 
CPU_INT08U  const  OSDbg_TaskQPendAbortEn      = OS_CFG_TASK_Q_PEND_ABORT_EN; 
CPU_INT08U  const  OSDbg_TaskProfileEn         = OS_CFG_TASK_PROFILE_EN; 
CPU_INT16U  const  OSDbg_TaskRegTblSize        = OS_CFG_TASK_REG_TBL_SIZE; 
CPU_INT08U  const  OSDbg_TaskSemPendAbortEn    = OS_CFG_TASK_SEM_PEND_ABORT_EN; 
CPU_INT08U  const  OSDbg_TaskSuspendEn         = OS_CFG_TASK_SUSPEND_EN; 
 
 
CPU_INT16U  const  OSDbg_TCBSize               = sizeof(OS_TCB);               /* Size in Bytes of OS_TCB             */ 
 
CPU_INT16U  const  OSDbg_TickSpokeSize         = sizeof(OS_TICK_SPOKE); 
 
CPU_INT08U  const  OSDbg_TimeDlyHMSMEn         = OS_CFG_TIME_DLY_HMSM_EN; 
CPU_INT08U  const  OSDbg_TimeDlyResumeEn       = OS_CFG_TIME_DLY_RESUME_EN; 
 
 
OS_TMR      const  OSDbg_Tmr                   = { 0u }; 
CPU_INT08U  const  OSDbg_TmrEn                 = OS_CFG_TMR_EN; 
#if OS_CFG_TMR_EN > 0u 
CPU_INT08U  const  OSDbg_TmrDelEn              = OS_CFG_TMR_DEL_EN; 
CPU_INT16U  const  OSDbg_TmrSize               = sizeof(OS_TMR); 
CPU_INT16U  const  OSDbg_TmrSpokeSize          = sizeof(OS_TMR_SPOKE); 
#else 
CPU_INT08U  const  OSDbg_TmrDelEn              = 0u; 
CPU_INT16U  const  OSDbg_TmrSize               = 0u; 
CPU_INT16U  const  OSDbg_TmrSpokeSize          = 0u; 
#endif 
 
CPU_INT16U  const  OSDbg_VersionNbr            = OS_VERSION; 
 
/*$PAGE*/ 
/* 
************************************************************************************************************************ 
*                                                      DEBUG DATA 
*                                     TOTAL DATA SPACE (i.e. RAM) USED BY uC/OS-III 
************************************************************************************************************************ 
*/ 
 
CPU_INT32U  const  OSDbg_DataSize = sizeof(OSIntNestingCtr) 
 
#if OS_CFG_APP_HOOKS_EN > 0u 
                                  + sizeof(OS_AppTaskCreateHookPtr) 
                                  + sizeof(OS_AppTaskDelHookPtr) 
                                  + sizeof(OS_AppTaskReturnHookPtr) 
 
                                  + sizeof(OS_AppIdleTaskHookPtr) 
                                  + sizeof(OS_AppStatTaskHookPtr) 
                                  + sizeof(OS_AppTaskSwHookPtr) 
                                  + sizeof(OS_AppTimeTickHookPtr) 
#endif 
 
                                  + sizeof(OSIdleTaskCtr) 
                                  + sizeof(OSIdleTaskTCB) 
 
#if OS_CFG_ISR_POST_DEFERRED_EN > 0u 
                                  + sizeof(OSIntQInPtr) 
                                  + sizeof(OSIntQOutPtr) 
                                  + sizeof(OSIntQNbrEntries) 
                                  + sizeof(OSIntQMaxNbrEntries) 
                                  + sizeof(OSIntQOvfCtr) 
                                  + sizeof(OSIntQTaskTCB) 
#endif 
 
                                  + sizeof(OSRunning) 
 
#ifdef OS_SAFETY_CRITICAL_IEC61508 
                                  + sizeof(OSSafetyCriticalStartFlag); 
#endif 
 
#if OS_CFG_FLAG_EN > 0u 
                                  + sizeof(OSFlagQty) 
#endif 
 
#if OS_CFG_MEM_EN > 0u 
                                  + sizeof(OSMemQty) 
#endif 
 
                                  + sizeof(OSMsgPool) 
 
#if OS_CFG_MUTEX_EN > 0u 
                                  + sizeof(OSMutexQty) 
#endif 
 
                                  + sizeof(OSPrioCur) 
                                  + sizeof(OSPrioHighRdy) 
                                  + sizeof(OSPrioTbl) 
 
#if OS_CFG_Q_EN > 0u 
                                  + sizeof(OSQQty) 
#endif 
 
                                  + sizeof(OSRdyList) 
 
                                  + sizeof(OSSchedLockNestingCtr) 
 
#if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u 
                                  + sizeof(OSSchedLockTimeBegin) 
                                  + sizeof(OSSchedLockTimeMax) 
                                  + sizeof(OSSchedLockTimeMaxCur) 
#endif 
 
#if OS_CFG_SCHED_ROUND_ROBIN_EN 
                                  + sizeof(OSSchedRoundRobinDfltTimeQuanta) 
                                  + sizeof(OSSchedRoundRobinEn) 
#endif 
 
#if OS_CFG_SEM_EN > 0u 
                                  + sizeof(OSSemQty) 
#endif 
                                  + sizeof(OSTaskCtxSwCtr) 
                                  + sizeof(OSTaskQty) 
 
#if OS_CFG_STAT_TASK_EN > 0u 
                                  + sizeof(OSStatTaskCtr) 
                                  + sizeof(OSStatTaskCtrMax) 
                                  + sizeof(OSStatTaskCtrRun) 
                                  + sizeof(OSStatTaskRdy) 
                                  + sizeof(OSStatTaskTCB) 
                                  + sizeof(OSStatTaskCPUUsage) 
#endif 
 
                                  + sizeof(OSTickCtr) 
                                  + sizeof(OSTickTaskTCB) 
 
#if OS_CFG_TMR_EN > 0u 
                                  + sizeof(OSTmrTaskTCB) 
                                  + sizeof(OSTmrTickCtr) 
                                  + sizeof(OSTmrQty) 
                                  + sizeof(OSTmrUpdateCnt) 
                                  + sizeof(OSTmrUpdateCtr) 
#endif 
 
                                  + sizeof(OSTCBCurPtr) 
                                  + sizeof(OSTCBHighRdyPtr); 
 
/*$PAGE*/ 
/* 
************************************************************************************************************************ 
*                                               OS DEBUG INITIALIZATION 
* 
* Description: This function is used to make sure that debug variables that are unused in the application are not 
*              optimized away.  This function might not be necessary for all compilers.  In this case, you should simply 
*              DELETE the code in this function while still leaving the declaration of the function itself. 
* 
* Arguments  : none 
* 
* Returns    : none 
* 
* Note(s)    : (1) This code doesn't do anything, it simply prevents the compiler from optimizing out the 'const' 
*                  variables which are declared in this file. 
*              (2) You may decide to 'compile out' the code (by using #if 0/#endif) INSIDE the function if your compiler 
*                  DOES NOT optimize out the 'const' variables above. 
************************************************************************************************************************ 
*/ 
 
void  OS_Dbg_Init (void) 
{ 
    void  const  *p_temp; 
 
 
    p_temp = (void const *)&OSDbg_DbgEn; 
 
    p_temp = (void const *)&OSDbg_DataSize; 
 
    p_temp = (void const *)&OSDbg_ArgChkEn; 
    p_temp = (void const *)&OSDbg_AppHooksEn; 
 
    p_temp = (void const *)&OSDbg_EndiannessTest; 
 
    p_temp = (void const *)&OSDbg_CalledFromISRChkEn; 
 
    p_temp = (void const *)&OSDbg_FlagGrp; 
    p_temp = (void const *)&OSDbg_FlagEn; 
#if OS_CFG_FLAG_EN > 0u 
    p_temp = (void const *)&OSDbg_FlagDelEn; 
    p_temp = (void const *)&OSDbg_FlagModeClrEn; 
    p_temp = (void const *)&OSDbg_FlagPendAbortEn; 
    p_temp = (void const *)&OSDbg_FlagGrpSize; 
    p_temp = (void const *)&OSDbg_FlagWidth; 
#endif 
 
#if OS_CFG_ISR_POST_DEFERRED_EN > 0u 
    p_temp = (void const *)&OSDbg_IntQ; 
#endif 
 
    p_temp = (void const *)&OSDbg_ISRPostDeferredEn; 
 
    p_temp = (void const *)&OSDbg_Mem; 
    p_temp = (void const *)&OSDbg_MemEn; 
#if OS_CFG_MEM_EN > 0u 
    p_temp = (void const *)&OSDbg_MemSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_MsgEn; 
#if (OS_MSG_EN) > 0u 
    p_temp = (void const *)&OSDbg_MsgSize; 
    p_temp = (void const *)&OSDbg_MsgPoolSize; 
    p_temp = (void const *)&OSDbg_MsgQSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_Mutex; 
    p_temp = (void const *)&OSDbg_MutexEn; 
#if (OS_CFG_MUTEX_EN) > 0u 
    p_temp = (void const *)&OSDbg_MutexDelEn; 
    p_temp = (void const *)&OSDbg_MutexPendAbortEn; 
    p_temp = (void const *)&OSDbg_MutexSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_ObjTypeChkEn; 
 
    p_temp = (void const *)&OSDbg_PendMultiEn; 
    p_temp = (void const *)&OSDbg_PendDataSize; 
    p_temp = (void const *)&OSDbg_PendListSize; 
    p_temp = (void const *)&OSDbg_PendObjSize; 
 
    p_temp = (void const *)&OSDbg_PrioMax; 
    p_temp = (void const *)&OSDbg_PrioTblSize; 
 
    p_temp = (void const *)&OSDbg_PtrSize; 
 
    p_temp = (void const *)&OSDbg_Q; 
    p_temp = (void const *)&OSDbg_QEn; 
#if (OS_CFG_Q_EN) > 0u 
    p_temp = (void const *)&OSDbg_QDelEn; 
    p_temp = (void const *)&OSDbg_QFlushEn; 
    p_temp = (void const *)&OSDbg_QPendAbortEn; 
    p_temp = (void const *)&OSDbg_QSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_SchedRoundRobinEn; 
 
    p_temp = (void const *)&OSDbg_Sem; 
    p_temp = (void const *)&OSDbg_SemEn; 
#if (OS_CFG_SEM_EN) > 0u 
    p_temp = (void const *)&OSDbg_SemDelEn; 
    p_temp = (void const *)&OSDbg_SemPendAbortEn; 
    p_temp = (void const *)&OSDbg_SemSetEn; 
    p_temp = (void const *)&OSDbg_SemSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_RdyList; 
    p_temp = (void const *)&OSDbg_RdyListSize; 
 
    p_temp = (void const *)&OSDbg_StkWidth; 
 
    p_temp = (void const *)&OSDbg_StatTaskEn; 
    p_temp = (void const *)&OSDbg_StatTaskStkChkEn; 
 
    p_temp = (void const *)&OSDbg_TaskChangePrioEn; 
    p_temp = (void const *)&OSDbg_TaskDelEn; 
    p_temp = (void const *)&OSDbg_TaskQEn; 
    p_temp = (void const *)&OSDbg_TaskQPendAbortEn; 
    p_temp = (void const *)&OSDbg_TaskProfileEn; 
    p_temp = (void const *)&OSDbg_TaskRegTblSize; 
    p_temp = (void const *)&OSDbg_TaskSemPendAbortEn; 
    p_temp = (void const *)&OSDbg_TaskSuspendEn; 
 
    p_temp = (void const *)&OSDbg_TCBSize; 
 
    p_temp = (void const *)&OSDbg_TickSpokeSize; 
 
    p_temp = (void const *)&OSDbg_TimeDlyHMSMEn; 
    p_temp = (void const *)&OSDbg_TimeDlyResumeEn; 
 
 
    p_temp = (void const *)&OSDbg_Tmr; 
    p_temp = (void const *)&OSDbg_TmrEn; 
#if (OS_CFG_TMR_EN) > 0u 
    p_temp = (void const *)&OSDbg_TmrDelEn; 
    p_temp = (void const *)&OSDbg_TmrSize; 
    p_temp = (void const *)&OSDbg_TmrSpokeSize; 
#endif 
 
    p_temp = (void const *)&OSDbg_VersionNbr; 
 
    p_temp = p_temp;                                        /* Prevent compiler warning for not using 'p_temp'        */ 
} 
#endif