⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osal_memory.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 4 页
字号:
    408               * during steady state Tx load, 0% during idle and steady state Rx load.
    409               */
    410              if ( (size <= OSALMEM_SMALL_BLKSZ) && (hdr > ff2) )
    411              {
    412                proSmallBlkMiss++;
    413              }
    414          #endif
    415            }
    416          
    417            HAL_EXIT_CRITICAL_SECTION( intState );  // Re-enable interrupts.
   \                     ??osal_mem_alloc_8:
   \   000101   EC           MOV     A,R4
   \   000102   A2E0         MOV     C,0xE0 /* A   */.0
   \   000104   92AF         MOV     0xa8.7,C
    418          
    419            return (void *)hdr;
   \   000106   7F06         MOV     R7,#0x6
   \   000108   02....       LJMP    ?BANKED_LEAVE_XDATA
    420          }
    421          
    422          /*********************************************************************
    423           * @fn      osal_mem_free
    424           *
    425           * @brief   Implementation of the de-allocator functionality.
    426           *
    427           * @param   ptr - pointer to the memory to free.
    428           *
    429           * @return  void
    430           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    431          void osal_mem_free( void *ptr )
   \                     osal_mem_free:
    432          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
    433            osalMemHdr_t *currHdr;
    434            halIntState_t intState;
    435          
    436          #if ( OSALMEM_GUARD )
    437            // Try to protect against premature use by HAL / OSAL.
    438            if ( ready != OSALMEM_READY )
   \   000009   90....       MOV     DPTR,#??ready
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   64E2         XRL     A,#0xe2
   \   00000F   6008         JZ      ??osal_mem_free_0
    439            {
    440              osal_mem_init();
   \   000011                ; Setup parameters for call to function osal_mem_init
   \   000011   90....       MOV     DPTR,#(osal_mem_init & 0xffff)
   \   000014   74..         MOV     A,#((osal_mem_init >> 16) & 0xff)
   \   000016   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    441            }
    442          #endif
    443          
    444            HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
   \                     ??osal_mem_free_0:
   \   000019   A2AF         MOV     C,0xa8.7
   \   00001B   E4           CLR     A
   \   00001C   92E0         MOV     0xE0 /* A   */.0,C
   \   00001E   FC           MOV     R4,A
   \   00001F   C2AF         CLR     0xa8.7
    445          
    446            OSALMEM_ASSERT( ptr );
    447          
    448            currHdr = (osalMemHdr_t *)ptr - 1;
   \   000021   EE           MOV     A,R6
   \   000022   24FE         ADD     A,#-0x2
   \   000024   F8           MOV     R0,A
   \   000025   EF           MOV     A,R7
   \   000026   34FF         ADDC    A,#-0x1
   \   000028   F9           MOV     R1,A
    449          
    450            // Has this block already been freed?
    451            OSALMEM_ASSERT( *currHdr & OSALMEM_IN_USE );
    452          
    453            *currHdr &= ~OSALMEM_IN_USE;
   \   000029   8882         MOV     DPL,R0
   \   00002B   8983         MOV     DPH,R1
   \   00002D   E0           MOVX    A,@DPTR
   \   00002E   F0           MOVX    @DPTR,A
   \   00002F   A3           INC     DPTR
   \   000030   E0           MOVX    A,@DPTR
   \   000031   547F         ANL     A,#0x7f
   \   000033   F0           MOVX    @DPTR,A
    454          
    455          #if ( OSALMEM_PROFILER )
    456            {
    457              uint16 size = *currHdr;
    458              byte idx;
    459          
    460              for ( idx = 0; idx < OSALMEM_PROMAX; idx++ )
    461              {
    462                if ( size <= proCnt[idx] )
    463                {
    464                  break;
    465                }
    466              }
    467          
    468              proCur[idx]--;
    469            }
    470          #endif
    471          
    472          #if ( OSALMEM_METRICS )
    473            memAlo -= *currHdr;
    474            blkFree++;
    475          #endif
    476          
    477            if ( ff1 > currHdr )
   \   000034   90....       MOV     DPTR,#??ff1
   \   000037   E0           MOVX    A,@DPTR
   \   000038   FA           MOV     R2,A
   \   000039   A3           INC     DPTR
   \   00003A   E0           MOVX    A,@DPTR
   \   00003B   FB           MOV     R3,A
   \   00003C   C3           CLR     C
   \   00003D   E8           MOV     A,R0
   \   00003E   9A           SUBB    A,R2
   \   00003F   E9           MOV     A,R1
   \   000040   9B           SUBB    A,R3
   \   000041   5008         JNC     ??osal_mem_free_1
    478            {
    479              ff1 = currHdr;
   \   000043   90....       MOV     DPTR,#??ff1
   \   000046   E8           MOV     A,R0
   \   000047   F0           MOVX    @DPTR,A
   \   000048   A3           INC     DPTR
   \   000049   E9           MOV     A,R1
   \   00004A   F0           MOVX    @DPTR,A
    480            }
    481          
    482          #if ( OSALMEM_PROFILER )
    483            osal_memset( (byte *)currHdr+HDRSZ, OSALMEM_REIN, (*currHdr - HDRSZ) );
    484          #endif
    485          
    486            HAL_EXIT_CRITICAL_SECTION( intState );  // Re-enable interrupts.
   \                     ??osal_mem_free_1:
   \   00004B   EC           MOV     A,R4
   \   00004C   A2E0         MOV     C,0xE0 /* A   */.0
   \   00004E   92AF         MOV     0xa8.7,C
    487          }
   \   000050   7F01         MOV     R7,#0x1
   \   000052   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment XDATA_ID, align 1, keep-with-next
   \                     `?<Initializer for theHeap>`:
   \   000000   ....         DW ??_theHeap

   \                                 In segment SFR_AN, at 0xa8
   \   union <unnamed> volatile __sfr _A_IEN0
   \                     _A_IEN0:
   \   000000                DS 1
    488          
    489          #if ( OSALMEM_METRICS )
    490          /*********************************************************************
    491           * @fn      osal_heap_block_max
    492           *
    493           * @brief   Return the maximum number of blocks ever allocated at once.
    494           *
    495           * @param   none
    496           *
    497           * @return  Maximum number of blocks ever allocated at once.
    498           */
    499          uint16 osal_heap_block_max( void )
    500          {
    501            return blkMax;
    502          }
    503          
    504          /*********************************************************************
    505           * @fn      osal_heap_block_cnt
    506           *
    507           * @brief   Return the current number of blocks now allocated.
    508           *
    509           * @param   none
    510           *
    511           * @return  Current number of blocks now allocated.
    512           */
    513          uint16 osal_heap_block_cnt( void )
    514          {
    515            return blkCnt;
    516          }
    517          
    518          /*********************************************************************
    519           * @fn      osal_heap_block_free
    520           *
    521           * @brief   Return the current number of free blocks.
    522           *
    523           * @param   none
    524           *
    525           * @return  Current number of free blocks.
    526           */
    527          uint16 osal_heap_block_free( void )
    528          {
    529            return blkFree;
    530          }
    531          
    532          /*********************************************************************
    533           * @fn      osal_heap_mem_used
    534           *
    535           * @brief   Return the current number of bytes allocated.
    536           *
    537           * @param   none
    538           *
    539           * @return  Current number of bytes allocated.
    540           */
    541          uint16 osal_heap_mem_used( void )
    542          {
    543            return memAlo;
    544          }
    545          #endif
    546          
    547          #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
    548          /*********************************************************************
    549           * @fn      osal_heap_high_water
    550           *
    551           * @brief   Return the highest byte ever allocated in the heap.
    552           *
    553           * @param   none
    554           *
    555           * @return  Highest number of bytes ever used by the stack.
    556           */
    557          uint16 osal_heap_high_water( void )
    558          {
    559          #if ( OSALMEM_METRICS )
    560            return memMax;
    561          #else
    562            return MAXMEMHEAP;
    563          #endif
    564          }
    565          #endif
    566          
    567          /*********************************************************************
    568          *********************************************************************/

   Maximum stack usage in bytes:

     Function            ISTACK PSTACK XSTACK
     --------            ------ ------ ------
     osal_mem_alloc          2      0     14
       -> osal_mem_init      0      0     28
     osal_mem_free           0      0      9
       -> osal_mem_init      0      0     18
     osal_mem_init           2      0     14
       -> osal_mem_alloc     4      0      0
     osal_mem_kick           2      0      0


   Segment part sizes:

     Function/Label             Bytes
     --------------             -----
     ready                         1
     ff1                           2
     ff2                           2
     _theHeap                   1664
     theHeap                       2
     osal_mem_init               104
     ?Subroutine2                  7
     ?Subroutine0                 12
     ?Subroutine1                 11
     osal_mem_kick                21
     osal_mem_alloc              267
     osal_mem_free                85
     ?<Initializer for theHeap>    2
     _A_IEN0                       1

 
   507 bytes in segment BANKED_CODE
     1 byte  in segment SFR_AN
     2 bytes in segment XDATA_I
     2 bytes in segment XDATA_ID
 1 669 bytes in segment XDATA_Z
 
   509 bytes of CODE  memory
     0 bytes of DATA  memory (+ 1 byte shared)
 1 671 bytes of XDATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -