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

📄 death.lst

📁 MSP430 IAR project with FreeRTOS port.
💻 LST
📖 第 1 页 / 共 2 页
字号:
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   00002A   2C41         MOV.W   0x0(SP), R12
   \   00002C   1D410200     MOV.W   0x2(SP), R13
   \   000030   1E410400     MOV.W   0x4(SP), R14
   \   000034   1F410600     MOV.W   0x6(SP), R15
   \   000038   B012....     CALL    #?Mul32
   \   00003C   814C0000     MOV.W   R12, 0x0(SP)
   \   000040   814D0200     MOV.W   R13, 0x2(SP)
    152          		vTaskDelay( xDelay );
   \   000044   0C48         MOV.W   R8, R12
   \   000046   B012....     CALL    #vTaskDelay
    153          
    154          		if( xTaskToKill != NULL )
   \   00004A   0B93         CMP.W   #0x0, R11
   \   00004C   E527         JEQ     ??vSuicidalTask_0
    155          		{
    156          			/* Make sure the other task has a go before we delete it. */
    157          			vTaskDelay( ( portTickType ) 0 );
   \   00004E   0C43         MOV.W   #0x0, R12
   \   000050   B012....     CALL    #vTaskDelay
    158          			/* Kill the other task that was created by vCreateTasks(). */
    159          			vTaskDelete( xTaskToKill );
   \   000054   0C4B         MOV.W   R11, R12
   \   000056   B012....     CALL    #vTaskDelete
    160          			/* Kill ourselves. */
    161          			vTaskDelete( NULL );
   \   00005A   0C43         MOV.W   #0x0, R12
   \   00005C   B012....     CALL    #vTaskDelete
   \   000060   DB3F         JMP     ??vSuicidalTask_0
    162          		}
    163          	}
    164          }/*lint !e818 !e550 Function prototype must be as per standard for task functions. */
    165          /*-----------------------------------------------------------*/
    166          

   \                                 In segment CODE, align 2
    167          static portTASK_FUNCTION( vCreateTasks, pvParameters )
   \                     vCreateTasks:
    168          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0812         PUSH.W  R8
   \   000006   0A4C         MOV.W   R12, R10
    169          const portTickType xDelay = ( portTickType ) 1000 / portTICK_RATE_MS;
   \   000008   3B40E803     MOV.W   #0x3e8, R11
    170          unsigned portBASE_TYPE uxPriority;
    171          
    172          	uxPriority = *( unsigned portBASE_TYPE * ) pvParameters;
   \   00000C   284A         MOV.W   @R10, R8
    173          	vPortFree( pvParameters );
   \   00000E   0C4A         MOV.W   R10, R12
   \   000010   B012....     CALL    #vPortFree
    174          
    175          	for( ;; )
    176          	{
    177          		/* Just loop round, delaying then creating the four suicidal tasks. */
    178          		vTaskDelay( xDelay );
   \                     ??vCreateTasks_0:
   \   000014   0C4B         MOV.W   R11, R12
   \   000016   B012....     CALL    #vTaskDelay
    179          
    180          		xTaskCreate( vSuicidalTask, "SUICID1", deathSTACK_SIZE, NULL, uxPriority, &xCreatedTask1 );
   \   00001A   3012....     PUSH.W  #xCreatedTask1
   \   00001E   0812         PUSH.W  R8
   \   000020   0312         PUSH.W  #0x0
   \   000022   30125800     PUSH.W  #0x58
   \   000026   3E40....     MOV.W   #`?<Constant "SUICID1">`, R14
   \   00002A   3C40....     MOV.W   #vSuicidalTask, R12
   \   00002E   B012....     CALL    #xTaskCreate
    181          		xTaskCreate( vSuicidalTask, "SUICID2", deathSTACK_SIZE, &xCreatedTask1, uxPriority, NULL );
   \   000032   0312         PUSH.W  #0x0
   \   000034   0812         PUSH.W  R8
   \   000036   3012....     PUSH.W  #xCreatedTask1
   \   00003A   30125800     PUSH.W  #0x58
   \   00003E   3E40....     MOV.W   #`?<Constant "SUICID2">`, R14
   \   000042   3C40....     MOV.W   #vSuicidalTask, R12
   \   000046   B012....     CALL    #xTaskCreate
    182          
    183          		xTaskCreate( vSuicidalTask, "SUICID1", deathSTACK_SIZE, NULL, uxPriority, &xCreatedTask2 );
   \   00004A   3012....     PUSH.W  #xCreatedTask2
   \   00004E   0812         PUSH.W  R8
   \   000050   0312         PUSH.W  #0x0
   \   000052   30125800     PUSH.W  #0x58
   \   000056   3E40....     MOV.W   #`?<Constant "SUICID1">`, R14
   \   00005A   3C40....     MOV.W   #vSuicidalTask, R12
   \   00005E   B012....     CALL    #xTaskCreate
    184          		xTaskCreate( vSuicidalTask, "SUICID2", deathSTACK_SIZE, &xCreatedTask2, uxPriority, NULL );
   \   000062   0312         PUSH.W  #0x0
   \   000064   0812         PUSH.W  R8
   \   000066   3012....     PUSH.W  #xCreatedTask2
   \   00006A   30125800     PUSH.W  #0x58
   \   00006E   3E40....     MOV.W   #`?<Constant "SUICID2">`, R14
   \   000072   3C40....     MOV.W   #vSuicidalTask, R12
   \   000076   B012....     CALL    #xTaskCreate
    185          
    186          		++usCreationCount;
   \   00007A   9253....     ADD.W   #0x1, &usCreationCount
   \   00007E   31502000     ADD.W   #0x20, SP
   \   000082   C83F         JMP     ??vCreateTasks_0
    187          	}
    188          }
    189          /*-----------------------------------------------------------*/
    190          
    191          /* This is called to check that the creator task is still running and that there
    192          are not any more than four extra tasks. */

   \                                 In segment CODE, align 2
    193          portBASE_TYPE xIsCreateTaskStillRunning( void )
   \                     xIsCreateTaskStillRunning:
    194          {
   \   000000   0A12         PUSH.W  R10
    195          static portSHORT usLastCreationCount = -1;
    196          portBASE_TYPE xReturn = pdTRUE;
   \   000002   1A43         MOV.W   #0x1, R10
    197          static unsigned portBASE_TYPE uxTasksRunningNow;
    198          
    199          	if( usLastCreationCount == usCreationCount )
   \   000004   9292........ CMP.W   &usCreationCount, &??usLastCreationCount
   \   00000A   0220         JNE     ??xIsCreateTaskStillRunning_0
    200          	{
    201          		xReturn = pdFALSE;
   \   00000C   0A43         MOV.W   #0x0, R10
   \   00000E   033C         JMP     ??xIsCreateTaskStillRunning_1
    202          	}
    203          	else
    204          	{
    205          		usLastCreationCount = usCreationCount;
   \                     ??xIsCreateTaskStillRunning_0:
   \   000010   9242........ MOV.W   &usCreationCount, &??usLastCreationCount
    206          	}
    207          	
    208          	uxTasksRunningNow = ( unsigned portBASE_TYPE ) uxTaskGetNumberOfTasks();
   \                     ??xIsCreateTaskStillRunning_1:
   \   000016   B012....     CALL    #uxTaskGetNumberOfTasks
   \   00001A   824C....     MOV.W   R12, &??uxTasksRunningNow
    209          
    210          	if( uxTasksRunningNow < uxTasksRunningAtStart )
   \   00001E   9292........ CMP.W   &uxTasksRunningAtStart, &??uxTasksRunningNow
   \   000024   022C         JC      ??xIsCreateTaskStillRunning_2
    211          	{
    212          		xReturn = pdFALSE;
   \   000026   0A43         MOV.W   #0x0, R10
   \   000028   083C         JMP     ??xIsCreateTaskStillRunning_3
    213          	}
    214          	else if( ( uxTasksRunningNow - uxTasksRunningAtStart ) > uxMaxNumberOfExtraTasksRunning )
   \                     ??xIsCreateTaskStillRunning_2:
   \   00002A   1F42....     MOV.W   &??uxTasksRunningNow, R15
   \   00002E   1F82....     SUB.W   &uxTasksRunningAtStart, R15
   \   000032   829F....     CMP.W   R15, &uxMaxNumberOfExtraTasksRunning
   \   000036   012C         JC      ??xIsCreateTaskStillRunning_3
    215          	{
    216          		xReturn = pdFALSE;
   \   000038   0A43         MOV.W   #0x0, R10
    217          	}
    218          	else
    219          	{
    220          		/* Everything is okay. */
    221          	}
    222          
    223          	return xReturn;
   \                     ??xIsCreateTaskStillRunning_3:
   \   00003A   0C4A         MOV.W   R10, R12
   \   00003C   3A41         POP.W   R10
   \   00003E   3041         RET
    224          }

   \                                 In segment DATA16_I, align 2, align-sorted
   \   000000                REQUIRE ?cstart_init_copy
   \                     ??usLastCreationCount:
   \   000000                DS8 2
   \   000002                REQUIRE `?<Initializer for usLastCreationCount>`

   \                                 In segment DATA16_Z, align 2, align-sorted
   \   000000                REQUIRE ?cstart_init_zero
   \                     ??uxTasksRunningNow:
   \   000000                DS8 2

   \                                 In segment DATA16_ID, align 2, align-sorted
   \                     `?<Initializer for usLastCreationCount>`:
   \   000000   FFFF         DC16 -1

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "CREATOR">`:
   \   000000   43524541544F DC8 "CREATOR"
   \            5200        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "SUICID1">`:
   \   000000   535549434944 DC8 "SUICID1"
   \            3100        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "SUICID2">`:
   \   000000   535549434944 DC8 "SUICID2"
   \            3200        
    225          
    226          

   Maximum stack usage in bytes:

     Function                    CSTACK
     --------                    ------
     vCreateSuicidalTasks           14
       -> pvPortMalloc               6
       -> xTaskCreate               14
       -> uxTaskGetNumberOfTasks    14
     vCreateTasks                   40
       -> vPortFree                  8
       -> vTaskDelay                 8
       -> xTaskCreate               16
       -> xTaskCreate               24
       -> xTaskCreate               32
       -> xTaskCreate               40
     vSuicidalTask                  16
       -> vTaskDelay                16
       -> vTaskDelay                16
       -> vTaskDelete               16
       -> vTaskDelete               16
     xIsCreateTaskStillRunning       4
       -> uxTaskGetNumberOfTasks     4


   Segment part sizes:

     Function/Label                 Bytes
     --------------                 -----
     usCreationCount                   2
     uxTasksRunningAtStart             2
     uxMaxNumberOfExtraTasksRunning    2
     xCreatedTask1                     2
     xCreatedTask2                     2
     vCreateSuicidalTasks             60
     vSuicidalTask                    98
     vCreateTasks                    132
     xIsCreateTaskStillRunning        64
     usLastCreationCount               2
     uxTasksRunningNow                 2
     ?<Initializer for usLastCreationCount>
                                       2
     ?<Constant "CREATOR">             8
     ?<Constant "SUICID1">             8
     ?<Constant "SUICID2">             8

 
 354 bytes in segment CODE
  26 bytes in segment DATA16_C
   2 bytes in segment DATA16_I
   2 bytes in segment DATA16_ID
  10 bytes in segment DATA16_Z
 
 354 bytes of CODE  memory
  28 bytes of CONST memory
  12 bytes of DATA  memory

Errors: none
Warnings: 1

⌨️ 快捷键说明

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