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

📄 os_core.lst

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
    137                  default:
    138                       *err = OS_ERR_EVENT_TYPE;
    139                       return (0);
    140              }
    141              OS_ENTER_CRITICAL();
   \                     ??OSEventNameGet_6:
   \   00000078   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
   \   0000007C   0080B0E1           MOVS     R8,R0
    142              len  = OS_StrCopy(pname, pevent->OSEventName);    /* Copy name from OS_EVENT                       */
   \   00000080   0F1094E2           ADDS     R1,R4,#+15
   \   00000084   0500B0E1           MOVS     R0,R5
   \   00000088   ........           BL       OS_StrCopy
   \   0000008C   0070B0E1           MOVS     R7,R0
    143              OS_EXIT_CRITICAL();
   \   00000090   0800B0E1           MOVS     R0,R8
   \   00000094   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    144              *err = OS_ERR_NONE;
   \   00000098   0000A0E3           MOV      R0,#+0
   \   0000009C   0000C6E5           STRB     R0,[R6, #+0]
    145              return (len);
   \   000000A0   0700B0E1           MOVS     R0,R7
   \   000000A4   020000EA           B        ??OSEventNameGet_2
   \                     ??OSEventNameGet_5:
   \   000000A8   0100A0E3           MOV      R0,#+1
   \   000000AC   0000C6E5           STRB     R0,[R6, #+0]
   \   000000B0   0000A0E3           MOV      R0,#+0
   \                     ??OSEventNameGet_2:
   \   000000B4   F081BDE8           POP      {R4-R8,PC}       ;; return
    146          }
    147          #endif
    148          
    149          /*$PAGE*/
    150          /*
    151          *********************************************************************************************************
    152          *                         ASSIGN A NAME TO A SEMAPHORE, MUTEX, MAILBOX or QUEUE
    153          *
    154          * Description: This function assigns a name to a semaphore, mutex, mailbox or queue.
    155          *
    156          * Arguments  : pevent    is a pointer to the event group.  'pevent' can point either to a semaphore,
    157          *                        a mutex, a mailbox or a queue.  Where this function is concerned, it doesn't
    158          *                        matter the actual type.
    159          *
    160          *              pname     is a pointer to an ASCII string that will be used as the name of the semaphore,
    161          *                        mutex, mailbox or queue.  The string must be able to hold at least
    162          *                        OS_EVENT_NAME_SIZE characters.
    163          *
    164          *              err       is a pointer to an error code that can contain one of the following values:
    165          *
    166          *                        OS_ERR_NONE                if the requested task is resumed
    167          *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to the proper event
    168          *                                                   control block type.
    169          *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
    170          *                        OS_ERR_PEVENT_NULL         if you passed a NULL pointer for 'pevent'
    171          *
    172          * Returns    : None
    173          *********************************************************************************************************
    174          */
    175          
    176          #if OS_EVENT_EN && (OS_EVENT_NAME_SIZE > 1)

   \                                 In segment CODE, align 4, keep-with-next
    177          void  OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *err)
    178          {
   \                     OSEventNameSet:
   \   00000000   F0412DE9           PUSH     {R4-R8,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
   \   0000000C   0260B0E1           MOVS     R6,R2
    179              INT8U      len;
    180          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    181              OS_CPU_SR  cpu_sr = 0;
   \   00000010   0000A0E3           MOV      R0,#+0
   \   00000014   0080B0E1           MOVS     R8,R0
    182          #endif
    183          
    184          
    185          
    186          #if OS_ARG_CHK_EN > 0
    187              if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
   \   00000018   000056E3           CMP      R6,#+0
   \   0000001C   2800000A           BEQ      ??OSEventNameSet_1
    188                  return;
    189              }
    190              if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
   \   00000020   000054E3           CMP      R4,#+0
   \   00000024   0200001A           BNE      ??OSEventNameSet_2
    191                  *err = OS_ERR_PEVENT_NULL;
   \   00000028   0400A0E3           MOV      R0,#+4
   \   0000002C   0000C6E5           STRB     R0,[R6, #+0]
    192                  return;
   \   00000030   230000EA           B        ??OSEventNameSet_1
    193              }
    194              if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
   \                     ??OSEventNameSet_2:
   \   00000034   000055E3           CMP      R5,#+0
   \   00000038   0200001A           BNE      ??OSEventNameSet_3
    195                  *err = OS_ERR_PNAME_NULL;
   \   0000003C   0C00A0E3           MOV      R0,#+12
   \   00000040   0000C6E5           STRB     R0,[R6, #+0]
    196                  return;
   \   00000044   1E0000EA           B        ??OSEventNameSet_1
    197              }
    198          #endif
    199              switch (pevent->OSEventType) {
   \                     ??OSEventNameSet_3:
   \   00000048   0000D4E5           LDRB     R0,[R4, #+0]
   \   0000004C   010040E2           SUB      R0,R0,#+1
   \   00000050   030050E3           CMP      R0,#+3
   \   00000054   0B00008A           BHI      ??OSEventNameSet_4
   \   00000058   011F8FE2           ADR      R1,??OSEventNameSet_0
   \   0000005C   0010D1E7           LDRB     R1,[R1, R0]
   \   00000060   01F18FE0           ADD      PC,PC,R1, LSL #+2
   \                     ??OSEventNameSet_0:
   \   00000064   00000000           DC8      +0,+0,+0,+0
    200                  case OS_EVENT_TYPE_SEM:
    201                  case OS_EVENT_TYPE_MUTEX:
    202                  case OS_EVENT_TYPE_MBOX:
    203                  case OS_EVENT_TYPE_Q:
    204                       break;
    205          
    206                  default:
    207                       *err = OS_ERR_EVENT_TYPE;
    208                       return;
    209              }
    210              OS_ENTER_CRITICAL();
   \                     ??OSEventNameSet_5:
   \   00000068   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
   \   0000006C   0080B0E1           MOVS     R8,R0
    211              len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?    */
   \   00000070   0500B0E1           MOVS     R0,R5
   \   00000074   ........           BL       OS_StrLen
   \   00000078   0070B0E1           MOVS     R7,R0
    212              if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                            */
   \   0000007C   100057E3           CMP      R7,#+16
   \   00000080   0800003A           BCC      ??OSEventNameSet_6
   \   00000084   020000EA           B        ??OSEventNameSet_7
   \                     ??OSEventNameSet_4:
   \   00000088   0100A0E3           MOV      R0,#+1
   \   0000008C   0000C6E5           STRB     R0,[R6, #+0]
   \   00000090   0B0000EA           B        ??OSEventNameSet_1
    213                  OS_EXIT_CRITICAL();
   \                     ??OSEventNameSet_7:
   \   00000094   0800B0E1           MOVS     R0,R8
   \   00000098   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    214                  *err = OS_ERR_EVENT_NAME_TOO_LONG;
   \   0000009C   0B00A0E3           MOV      R0,#+11
   \   000000A0   0000C6E5           STRB     R0,[R6, #+0]
    215                  return;
   \   000000A4   060000EA           B        ??OSEventNameSet_1
    216              }
    217              (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
   \                     ??OSEventNameSet_6:
   \   000000A8   0510B0E1           MOVS     R1,R5
   \   000000AC   0F0094E2           ADDS     R0,R4,#+15
   \   000000B0   ........           BL       OS_StrCopy
    218              OS_EXIT_CRITICAL();
   \   000000B4   0800B0E1           MOVS     R0,R8
   \   000000B8   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
    219              *err = OS_ERR_NONE;
   \   000000BC   0000A0E3           MOV      R0,#+0
   \   000000C0   0000C6E5           STRB     R0,[R6, #+0]
    220          }
   \                     ??OSEventNameSet_1:
   \   000000C4   F081BDE8           POP      {R4-R8,PC}       ;; return
    221          #endif
    222          
    223          /*$PAGE*/
    224          /*
    225          *********************************************************************************************************
    226          *                                             INITIALIZATION
    227          *
    228          * Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to
    229          *              creating any uC/OS-II object and, prior to calling OSStart().
    230          *
    231          * Arguments  : none
    232          *
    233          * Returns    : none
    234          *********************************************************************************************************
    235          */
    236          

   \                                 In segment CODE, align 4, keep-with-next
    237          void  OSInit (void)
    238          {
   \                     OSInit:
   \   00000000   00402DE9           PUSH     {LR}
    239          #if OS_VERSION >= 204
    240              OSInitHookBegin();                                           /* Call port specific initialization code   */
   \   00000004   ........           _BLF     OSInitHookBegin,??OSInitHookBegin??rA
    241          #endif
    242          
    243              OS_InitMisc();                                               /* Initialize miscellaneous variables       */
   \   00000008   ........           BL       OS_InitMisc
    244          
    245              OS_InitRdyList();                                            /* Initialize the Ready List                */
   \   0000000C   ........           BL       OS_InitRdyList
    246          
    247              OS_InitTCBList();                                            /* Initialize the free list of OS_TCBs      */
   \   00000010   ........           BL       OS_InitTCBList
    248          
    249              OS_InitEventList();                                          /* Initialize the free list of OS_EVENTs    */
   \   00000014   ........           BL       OS_InitEventList
    250          
    251          #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
    252              OS_FlagInit();                                               /* Initialize the event flag structures     */
   \   00000018   ........           _BLF     OS_FlagInit,??OS_FlagInit??rA
    253          #endif
    254          
    255          #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
    256              OS_MemInit();                                                /* Initialize the memory manager            */
   \   0000001C   ........           _BLF     OS_MemInit,??OS_MemInit??rA
    257          #endif
    258          
    259          #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
    260              OS_QInit();                                                  /* Initialize the message queue structures  */
   \   00000020   ........           _BLF     OS_QInit,??OS_QInit??rA
    261          #endif
    262          
    263              OS_InitTaskIdle();                                           /* Create the Idle Task                     */
   \   00000024   ........           BL       OS_InitTaskIdle
    264          #if OS_TASK_STAT_EN > 0
    265              OS_InitTaskStat();                                           /* Create the Statistic Task                */
   \   00000028   ........           BL       OS_InitTaskStat
    266          #endif
    267          
    268          #if OS_TMR_EN > 0
    269              OSTmr_Init();                                                /* Initialize the Timer Manager             */
   \   0000002C   ........           _BLF     OSTmr_Init,??OSTmr_Init??rA
    270          #endif
    271          

⌨️ 快捷键说明

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