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

📄 artx_ex1.lst

📁 嵌入式例程系列1
💻 LST
字号:
ARM COMPILER V2.50a,  Artx_ex1                                                             05/04/06  21:09:47  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE Artx_ex1
OBJECT MODULE PLACED IN .\Obj\Artx_ex1.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Artx_ex1.c THUMB OPTIMIZE(7,SPEED) DEBUG CODE PRINT(.\LST\ARTX_EX1.LST) TABS
                    -(4) OBJECT(.\Obj\Artx_ex1.obj) 

stmt  level    source

    1          /*----------------------------------------------------------------------------
    2           *      A R T X   K e r n e l   E x a m p l e
    3           *----------------------------------------------------------------------------
    4           *      Name:    ARTX_EX1.C
    5           *      Purpose: Your First Advanced RTX example program
    6           *      Rev.:    V2.02 / 6-feb-2006
    7           *----------------------------------------------------------------------------
    8           *      This code is part of the ARTX-ARM kernel package of Keil Software.
    9           *      Copyright (c) 2004-2006 Keil Software. All rights reserved. 
   10           *---------------------------------------------------------------------------*/
   11          
   12          #include <ARTX.h>                      /* ARTX kernel functions & defines    */
   13          
   14          /* id1, id2 will contain task identifications at run-time */
   15          OS_TID id1, id2;
   16          
   17          /* Forward reference */
   18          void task1 (void) __task;
   19          void task2 (void) __task;
   20          
   21          /*----------------------------------------------------------------------------
   22           *   Task 1:  ARTX Kernel starts this task with os_sys_init (task1)
   23           *---------------------------------------------------------------------------*/
   24          void task1 (void) __task {
   25   1        /* Obtain own system task identification number */
   26   1        id1 = os_tsk_self ();
   27   1        /* Assign system identification number of task2 to id2 */
   28   1        id2 = os_tsk_create (task2, 1);
   29   1        for (;;) {    /* do-this */
   30   2          /* Indicate to task2 completion of do-this */
   31   2          os_evt_set (0x0004, id2);
   32   2          /* Wait for completion of do-that (0xffff means no time-out)*/
   33   2          os_evt_wait_or (0x0004, 0xffff);
   34   2          /* Wait now for 50 ms */
   35   2          os_dly_wait (5);
   36   2        }
   37   1      }
   38          
   39          /*----------------------------------------------------------------------------
   40           *   Task 2:  ARTX Kernel starts this task with os_tsk_create (task2, 1)
   41           *---------------------------------------------------------------------------*/
   42          void task2 (void) __task {
   43   1        for (;;) {
   44   2          /* Wait for completion of do-this (0xffff means no time-out) */
   45   2          os_evt_wait_or (0x0004, 0xffff); /* do-that */
   46   2          /* Pause for 20 ms until signaling event to task1 */
   47   2          os_dly_wait (2);
   48   2          /* Indicate to task1 completion of do-that */
   49   2          os_evt_set (0x0004, id1);
   50   2        }
   51   1      }
   52          
   53          /*----------------------------------------------------------------------------
   54           *        Main: Initialize and start ARTX Kernel
   55           *---------------------------------------------------------------------------*/
   56          void main (void) {
   57   1      #ifdef MCB2100
                 U32 volatile start;
ARM COMPILER V2.50a,  Artx_ex1                                                             05/04/06  21:09:47  PAGE 2   

                
                  /* Wait for debugger connection (about 0.3 sec) */
                 for (start = 0; start < 1000000; start++) { ; }
               #endif
   63   1        os_sys_init (task1);
   64   1      }
   65          
   66          /*----------------------------------------------------------------------------
   67           * end of file
   68           *---------------------------------------------------------------------------*/
   69          
   70          
ARM COMPILER V2.50a,  Artx_ex1                                                             05/04/06  21:09:47  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (os_tsk_create_user?T)
 EXTERN CODE16 (os_tsk_self?T)
 EXTERN CODE16 (os_sys_init_user?T)
 EXTERN CODE16 (os_evt_wait?T)
 EXTERN CODE16 (os_evt_set?T)
 EXTERN CODE16 (os_dly_wait?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         task1?T
 PUBLIC         task2?T
 PUBLIC         main
 PUBLIC         id1
 PUBLIC         id2



*** DATA SEGMENT '?DT0?Artx_ex1':
 00000000          id1:
 00000000            DS          4
 00000004          id2:
 00000004            DS          4



*** CODE SEGMENT '?PR?task1?T?Artx_ex1':
   26:   id1 = os_tsk_self ();
 00000000  F7FF      BL          os_tsk_self?T  ; T=0x0001  (1)
 00000002  FFFE      BL          os_tsk_self?T  ; T=0x0001  (2)
 00000004  4800      LDR         R1,=id1 ; id1
 00000006  6008      STR         R0,[R1,#0x0] ; id1
   28:   id2 = os_tsk_create (task2, 1);
 00000008  4800      LDR         R0,=task2?T ; task2?T
 0000000A  2200      MOV         R2,#0x0
 0000000C  2101      MOV         R1,#0x1
 0000000E  2300      MOV         R3,#0x0
 00000010  F7FF      BL          os_tsk_create_user?T  ; T=0x0001  (1)
 00000012  FFF6      BL          os_tsk_create_user?T  ; T=0x0001  (2)
 00000014  4800      LDR         R1,=id2 ; id2
 00000016  6008      STR         R0,[R1,#0x0] ; id2
   29:   for (;;) {    /* do-this */
 00000018          L_4:
   31:     os_evt_set (0x0004, id2);
 00000018  4800      LDR         R0,=id2 ; id2
 0000001A  6801      LDR         R1,[R0,#0x0] ; id2
 0000001C  2004      MOV         R0,#0x4
 0000001E  F7FF      BL          os_evt_set?T  ; T=0x0001  (1)
 00000020  FFEF      BL          os_evt_set?T  ; T=0x0001  (2)
   33:     os_evt_wait_or (0x0004, 0xffff);
 00000022  2004      MOV         R0,#0x4
 00000024  4800      LDR         R1,=0xFFFF
 00000026  2200      MOV         R2,#0x0
 00000028  F7FF      BL          os_evt_wait?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          os_evt_wait?T  ; T=0x0001  (2)
   35:     os_dly_wait (5);
 0000002C  2005      MOV         R0,#0x5
 0000002E  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 00000030  FFE7      BL          os_dly_wait?T  ; T=0x0001  (2)
   36:   }
 00000032  E7F1      B           L_4  ; T=0x00000018
   37: }
 00000034          ENDP ; 'task1?T'


*** CODE SEGMENT '?PR?task2?T?Artx_ex1':
   43:   for (;;) {
 00000000          L_9:
   45:     os_evt_wait_or (0x0004, 0xffff); /* do-that */
ARM COMPILER V2.50a,  Artx_ex1                                                             05/04/06  21:09:47  PAGE 4   

 00000000  2004      MOV         R0,#0x4
 00000002  4800      LDR         R1,=0xFFFF
 00000004  2200      MOV         R2,#0x0
 00000006  F7FF      BL          os_evt_wait?T  ; T=0x0001  (1)
 00000008  FFFB      BL          os_evt_wait?T  ; T=0x0001  (2)
   47:     os_dly_wait (2);
 0000000A  2002      MOV         R0,#0x2
 0000000C  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          os_dly_wait?T  ; T=0x0001  (2)
   49:     os_evt_set (0x0004, id1);
 00000010  4800      LDR         R0,=id1 ; id1
 00000012  6801      LDR         R1,[R0,#0x0] ; id1
 00000014  2004      MOV         R0,#0x4
 00000016  F7FF      BL          os_evt_set?T  ; T=0x0001  (1)
 00000018  FFF3      BL          os_evt_set?T  ; T=0x0001  (2)
   50:   }
 0000001A  E7F1      B           L_9  ; T=0x00000000
   51: }
 0000001C          ENDP ; 'task2?T'


*** CODE SEGMENT '?PR?main?Artx_ex1':
   56: void main (void) {
 00000000  B500      PUSH        {LR}
   63:   os_sys_init (task1);
 00000002  4800      LDR         R0,=task1?T ; task1?T
 00000004  2200      MOV         R2,#0x0
 00000006  2300      MOV         R3,#0x0
 00000008  1C19      MOV         R1,R3
 0000000A  F7FF      BL          os_sys_init_user?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          os_sys_init_user?T  ; T=0x0001  (2)
   64: }
 0000000E  BC08      POP         {R3}
 00000010  4718      BX          R3
 00000012          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         8
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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