main.lst

来自「ARM仿真案例」· LST 代码 · 共 222 行

LST
222
字号
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION    21/Jul/2006  16:27:56 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
# Time limited license: 22 days left                                         #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\Project\ucos-ii\spi\App\main.C                    #
#    Command line    =  E:\Project\ucos-ii\spi\App\main.C -lCN               #
#                       E:\Project\ucos-ii\spi\Debug\List\ -lA               #
#                       E:\Project\ucos-ii\spi\Debug\List\ -o                #
#                       E:\Project\ucos-ii\spi\Debug\Obj\ -s9 --no_cse       #
#                       --no_unroll --no_inline --no_code_motion --no_tbaa   #
#                       --no_clustering --no_scheduling --debug --cpu_mode   #
#                       thumb --endian little --cpu ARM7TDMI-S               #
#                       --stack_align 4 --interwork -e --fpu None            #
#                       --dlib_config "e:\Program Files\IAR                  #
#                       Systems\Embedded Workbench 4.0                       #
#                       Evaluation\ARM\LIB\dl4tptinl8n.h" -I                 #
#                       E:\Project\ucos-ii\spi\ -I                           #
#                       E:\Project\ucos-ii\spi\App\ -I                       #
#                       E:\Project\ucos-ii\spi\ARM\ -I                       #
#                       E:\Project\ucos-ii\spi\BSP\ -I                       #
#                       E:\Project\ucos-ii\spi\uCOS-II\ -I "e:\Program       #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Evaluation\ARM\INC\"                                 #
#    List file       =  E:\Project\ucos-ii\spi\Debug\List\main.lst           #
#    Object file     =  E:\Project\ucos-ii\spi\Debug\Obj\main.r79            #
#                                                                            #
#                                                                            #
##############################################################################

E:\Project\ucos-ii\spi\App\main.C
      1          
      2          /********************************************************************************************************/
      3          #include "config.h"

   \                                 In segment DATA_AN, at 0xe002c000
   \   union <unnamed> volatile __data _A_PINSEL0
   \                     _A_PINSEL0:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe0028004
   \   union <unnamed> volatile __data _A_IOSET
   \                     _A_IOSET:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe0028008
   \   union <unnamed> volatile __data _A_IODIR
   \                     _A_IODIR:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe002800c
   \   union <unnamed> volatile __data _A_IOCLR
   \                     _A_IOCLR:
   \   00000000                      DS8 4
      4          #define   HC595_CS       0x00000100             /* P0.8口为74HC595的片选 */
      5          #define  TASK_STK_SIZE                  64

   \                                 In segment DATA_Z, align 4, align-sorted
      6          OS_STK        TaskStartStk[TASK_STK_SIZE];
   \                     TaskStartStk:
   \   00000000                      DS8 256
      7          
      8          void  TaskStart(void *data);
      9          
     10          /*********************************************************************************************************
     11          ** 函数名称: main
     12          ** 功能描述: c语言的主函数,由它启动多任务环境
     13          ********************************************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     14                  int main (void)
     15          {
   \                     main:
   \   00000000   00B5               PUSH     {LR}
     16              OSInit();
   \   00000002   ........           _BLF     OSInit,??OSInit??rT
     17              OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
   \   00000006   0023               MOVS     R3,#+0
   \   00000008   044A               LDR      R2,??main_0      ;; TaskStartStk + 252
   \   0000000A   0021               MOVS     R1,#+0
   \   0000000C   0448               LDR      R0,??main_0+0x4  ;; TaskStart
   \   0000000E   ........           _BLF     OSTaskCreate,??OSTaskCreate??rT
     18              OSStart();
   \   00000012   ........           _BLF     OSStart,??OSStart??rT
     19              return 0;
   \   00000016   0020               MOVS     R0,#+0
   \   00000018   02BC               POP      {R1}
   \   0000001A   0847               BX       R1               ;; return
   \                     ??main_0:
   \   0000001C   ........           DC32     TaskStartStk + 252
   \   00000020   ........           DC32     TaskStart
     20          }
     21          
     22          /*********************************************************************************************************
     23          ** 函数名称: TaskStart
     24          ** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
     25          ********************************************************************************************************/

   \                                 In segment DATA_C, align 4, align-sorted
     26          INT8U const ShowTable[11] = {
   \                     ShowTable:
   \   00000000   3F065B4F666D       DC8 63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 0, 0
   \              7D077F6F0000
     27                0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00};

   \                                 In segment CODE, align 4, keep-with-next
     28                  void  TaskStart(void *pdata)
     29          {
   \                     TaskStart:
   \   00000000   30B5               PUSH     {R4,R5,LR}
   \   00000002   81B0               SUB      SP,SP,#+4
     30              INT8U temp,i;
     31          
     32              pdata = pdata;                                                  /* 避免编译警告 */
     33          
     34              BSP_Init();                                                   /* 目标板初始化 */
   \   00000004   ........           _BLF     BSP_Init,??BSP_Init??rT
     35              PINSEL0 = (PINSEL0 & 0xfffcfff0);
   \   00000008   1248               LDR      R0,??TaskStart_0  ;; 0xe002c000
   \   0000000A   0168               LDR      R1,[R0, #+0]
   \   0000000C   124A               LDR      R2,??TaskStart_0+0x4  ;; 0xfffcfff0
   \   0000000E   0A40               ANDS     R2,R2,R1
   \   00000010   0260               STR      R2,[R0, #+0]
     36              IODIR = HC595_CS;
   \   00000012   1248               LDR      R0,??TaskStart_0+0x8  ;; 0xe0028008
   \   00000014   8021               MOVS     R1,#+128
   \   00000016   4900               LSLS     R1,R1,#+1        ;; #+256
   \   00000018   0160               STR      R1,[R0, #+0]
     37              
     38              for (;;)
     39              {
     40                  for (i = 0; i < 10; i++)
   \                     ??TaskStart_1:
   \   0000001A   114C               LDR      R4,??TaskStart_0+0xC  ;; ShowTable
   \   0000001C   0A25               MOVS     R5,#+10
     41                  {
     42                      SPIStart();
   \                     ??TaskStart_2:
   \   0000001E   ........           _BLF     SPIStart,??SPIStart??rT
     43                      IOCLR = HC595_CS;
   \   00000022   1048               LDR      R0,??TaskStart_0+0x10  ;; 0xe002800c
   \   00000024   8021               MOVS     R1,#+128
   \   00000026   4900               LSLS     R1,R1,#+1        ;; #+256
   \   00000028   0160               STR      R1,[R0, #+0]
     44                      SPIRW(&temp, ~ShowTable[i]);
   \   0000002A   2078               LDRB     R0,[R4, #+0]
   \   0000002C   C143               MVNS     R1,R0
   \   0000002E   0906               LSLS     R1,R1,#+24
   \   00000030   090E               LSRS     R1,R1,#+24
   \   00000032   6846               MOV      R0,SP
   \   00000034   ........           _BLF     SPIRW,??SPIRW??rT
     45                      IOSET = HC595_CS;
   \   00000038   0B48               LDR      R0,??TaskStart_0+0x14  ;; 0xe0028004
   \   0000003A   8021               MOVS     R1,#+128
   \   0000003C   4900               LSLS     R1,R1,#+1        ;; #+256
   \   0000003E   0160               STR      R1,[R0, #+0]
     46                      SPIEnd();
   \   00000040   ........           _BLF     SPIEnd,??SPIEnd??rT
     47                      OSTimeDly(OS_TICKS_PER_SEC / 5); 
   \   00000044   1420               MOVS     R0,#+20
   \   00000046   ........           _BLF     OSTimeDly,??OSTimeDly??rT
     48                                
     49                  }
   \   0000004A   641C               ADDS     R4,R4,#+1
   \   0000004C   6D1E               SUBS     R5,R5,#+1
   \   0000004E   E4D0               BEQ      ??TaskStart_1
   \   00000050   E5E7               B        ??TaskStart_2
   \   00000052   C046               Nop      
   \                     ??TaskStart_0:
   \   00000054   00C002E0           DC32     0xe002c000
   \   00000058   F0FFFCFF           DC32     0xfffcfff0
   \   0000005C   088002E0           DC32     0xe0028008
   \   00000060   ........           DC32     ShowTable
   \   00000064   0C8002E0           DC32     0xe002800c
   \   00000068   048002E0           DC32     0xe0028004
     50              }
     51          }
     52          
     53          /*********************************************************************************************************
     54          **                            End Of File
     55          ********************************************************************************************************/

   Maximum stack usage in bytes:

     Function  CSTACK
     --------  ------
     TaskStart    16
     main          4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     _A_PINSEL0        4
     _A_IOSET          4
     _A_IODIR          4
     _A_IOCLR          4
     TaskStartStk    256
     main             36
     ShowTable        12
     TaskStart       108
      Others         100

 
 232 bytes in segment CODE
  16 bytes in segment DATA_AN
  12 bytes in segment DATA_C
 256 bytes in segment DATA_Z
  12 bytes in segment INITTAB
 
 144 bytes of CODE  memory (+ 100 bytes shared)
  12 bytes of CONST memory
 256 bytes of DATA  memory (+  16 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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