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

📄 os_mem.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 4 页
字号:
   \                     OSMemQuery:
   \   00000000   70B5               PUSH     {R4-R6,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    387          #if OS_CRITICAL_METHOD == 3u                     /* Allocate storage for CPU status register           */
    388              OS_CPU_SR  cpu_sr = 0u;
   \   00000006   0026               MOVS     R6,#+0
    389          #endif
    390          
    391          
    392          
    393          #if OS_ARG_CHK_EN > 0u
    394              if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
    395                  return (OS_ERR_MEM_INVALID_PMEM);
    396              }
    397              if (p_mem_data == (OS_MEM_DATA *)0) {        /* Must release a valid storage area for the data     */
    398                  return (OS_ERR_MEM_INVALID_PDATA);
    399              }
    400          #endif
    401              OS_ENTER_CRITICAL();
   \   00000008   ........           BL       OS_CPU_SR_Save
   \   0000000C   0600               MOVS     R6,R0
    402              p_mem_data->OSAddr     = pmem->OSMemAddr;
   \   0000000E   2068               LDR      R0,[R4, #+0]
   \   00000010   2860               STR      R0,[R5, #+0]
    403              p_mem_data->OSFreeList = pmem->OSMemFreeList;
   \   00000012   6068               LDR      R0,[R4, #+4]
   \   00000014   6860               STR      R0,[R5, #+4]
    404              p_mem_data->OSBlkSize  = pmem->OSMemBlkSize;
   \   00000016   A068               LDR      R0,[R4, #+8]
   \   00000018   A860               STR      R0,[R5, #+8]
    405              p_mem_data->OSNBlks    = pmem->OSMemNBlks;
   \   0000001A   E068               LDR      R0,[R4, #+12]
   \   0000001C   E860               STR      R0,[R5, #+12]
    406              p_mem_data->OSNFree    = pmem->OSMemNFree;
   \   0000001E   2069               LDR      R0,[R4, #+16]
   \   00000020   2861               STR      R0,[R5, #+16]
    407              OS_EXIT_CRITICAL();
   \   00000022   3000               MOVS     R0,R6
   \   00000024   ........           BL       OS_CPU_SR_Restore
    408              p_mem_data->OSNUsed    = p_mem_data->OSNBlks - p_mem_data->OSNFree;
   \   00000028   E868               LDR      R0,[R5, #+12]
   \   0000002A   2969               LDR      R1,[R5, #+16]
   \   0000002C   401A               SUBS     R0,R0,R1
   \   0000002E   6861               STR      R0,[R5, #+20]
    409              return (OS_ERR_NONE);
   \   00000030   0020               MOVS     R0,#+0
   \   00000032   70BD               POP      {R4-R6,PC}       ;; return
    410          }
    411          #endif                                           /* OS_MEM_QUERY_EN                                    */
    412          /*$PAGE*/
    413          /*
    414          *********************************************************************************************************
    415          *                                    INITIALIZE MEMORY PARTITION MANAGER
    416          *
    417          * Description : This function is called by uC/OS-II to initialize the memory partition manager.  Your
    418          *               application MUST NOT call this function.
    419          *
    420          * Arguments   : none
    421          *
    422          * Returns     : none
    423          *
    424          * Note(s)    : This function is INTERNAL to uC/OS-II and your application should not call it.
    425          *********************************************************************************************************
    426          */
    427          

   \                                 In section .text, align 2, keep-with-next
    428          void  OS_MemInit (void)
    429          {
   \                     OS_MemInit:
   \   00000000   38B5               PUSH     {R3-R5,LR}
    430          #if OS_MAX_MEM_PART == 1u
    431              OS_MemClr((INT8U *)&OSMemTbl[0], sizeof(OSMemTbl));   /* Clear the memory partition table          */
    432              OSMemFreeList               = (OS_MEM *)&OSMemTbl[0]; /* Point to beginning of free list           */
    433          #if OS_MEM_NAME_EN > 0u
    434              OSMemFreeList->OSMemName    = (INT8U *)"?";           /* Unknown name                              */
    435          #endif
    436          #endif
    437          
    438          #if OS_MAX_MEM_PART >= 2u
    439              OS_MEM  *pmem;
    440              INT16U   i;
    441          
    442          
    443              OS_MemClr((INT8U *)&OSMemTbl[0], sizeof(OSMemTbl));   /* Clear the memory partition table          */
   \   00000002   7821               MOVS     R1,#+120
   \   00000004   ....               LDR.N    R0,??DataTable4_3
   \   00000006   ........           BL       OS_MemClr
    444              for (i = 0u; i < (OS_MAX_MEM_PART - 1u); i++) {       /* Init. list of free memory partitions      */
   \   0000000A   0020               MOVS     R0,#+0
   \   0000000C   0500               MOVS     R5,R0
   \                     ??OS_MemInit_0:
   \   0000000E   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   00000010   042D               CMP      R5,#+4
   \   00000012   10D2               BCS.N    ??OS_MemInit_1
    445                  pmem                = &OSMemTbl[i];               /* Point to memory control block (MCB)       */
   \   00000014   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   00000016   1820               MOVS     R0,#+24
   \   00000018   ....               LDR.N    R1,??DataTable4_3
   \   0000001A   00FB0510           MLA      R0,R0,R5,R1
   \   0000001E   0400               MOVS     R4,R0
    446                  pmem->OSMemFreeList = (void *)&OSMemTbl[i + 1u];  /* Chain list of free partitions             */
   \   00000020   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   00000022   1820               MOVS     R0,#+24
   \   00000024   ....               LDR.N    R1,??DataTable4_3
   \   00000026   00FB0510           MLA      R0,R0,R5,R1
   \   0000002A   1830               ADDS     R0,R0,#+24
   \   0000002C   6060               STR      R0,[R4, #+4]
    447          #if OS_MEM_NAME_EN > 0u
    448                  pmem->OSMemName  = (INT8U *)(void *)"?";
   \   0000002E   ....               ADR.N    R0,??DataTable4  ;; "\?"
   \   00000030   6061               STR      R0,[R4, #+20]
    449          #endif
    450              }
   \   00000032   6D1C               ADDS     R5,R5,#+1
   \   00000034   EBE7               B.N      ??OS_MemInit_0
    451              pmem                = &OSMemTbl[i];
   \                     ??OS_MemInit_1:
   \   00000036   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   00000038   1820               MOVS     R0,#+24
   \   0000003A   ....               LDR.N    R1,??DataTable4_3
   \   0000003C   00FB0510           MLA      R0,R0,R5,R1
   \   00000040   0400               MOVS     R4,R0
    452              pmem->OSMemFreeList = (void *)0;                      /* Initialize last node                      */
   \   00000042   0020               MOVS     R0,#+0
   \   00000044   6060               STR      R0,[R4, #+4]
    453          #if OS_MEM_NAME_EN > 0u
    454              pmem->OSMemName = (INT8U *)(void *)"?";
   \   00000046   ....               ADR.N    R0,??DataTable4  ;; "\?"
   \   00000048   6061               STR      R0,[R4, #+20]
    455          #endif
    456          
    457              OSMemFreeList   = &OSMemTbl[0];                       /* Point to beginning of free list           */
   \   0000004A   ....               LDR.N    R0,??DataTable4_1
   \   0000004C   ....               LDR.N    R1,??DataTable4_3
   \   0000004E   0160               STR      R1,[R0, #+0]
    458          #endif
    459          }
   \   00000050   31BD               POP      {R0,R4,R5,PC}    ;; return

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4:
   \   00000000   3F000000           DC8      "\?",0x0,0x0

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_1:
   \   00000000   ........           DC32     OSMemFreeList

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_2:
   \   00000000   ........           DC32     OSIntNesting

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_3:
   \   00000000   ........           DC32     OSMemTbl

   \                                 In section .rodata, align 2, keep-with-next
   \                     `?<Constant "?">`:
   \   00000000                      ; Initializer data, 2 bytes
   \   00000000   3F00               DC8 63, 0
    460          #endif                                                    /* OS_MEM_EN                                 */

   Maximum stack usage in bytes:

     Function     .cstack
     --------     -------
     OSMemCreate      48
     OSMemGet         24
     OSMemNameGet     24
     OSMemNameSet     24
     OSMemPut         16
     OSMemQuery       16
     OS_MemInit       16


   Section sizes:

     Function/Label  Bytes
     --------------  -----
     OSMemCreate      128
     OSMemGet          62
     OSMemNameGet      66
     OSMemNameSet      44
     OSMemPut          54
     OSMemQuery        52
     OS_MemInit        82
     ??DataTable4       4
     ??DataTable4_1     4
     ??DataTable4_2     4
     ??DataTable4_3     4
     ?<Constant "?">    2

 
   2 bytes in section .rodata
 504 bytes in section .text
 
 504 bytes of CODE  memory
   2 bytes of CONST memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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