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

📄 blockq.lst

📁 MSP430 IAR project with FreeRTOS port.
💻 LST
📖 第 1 页 / 共 3 页
字号:
    222          		{
    223          			if( usData != usExpectedValue )
   \   000026   819B0000     CMP.W   R11, 0x0(SP)
   \   00002A   0324         JEQ     ??vBlockingQueueConsumer_1
    224          			{
    225          				/* Catch-up. */
    226          				usExpectedValue = usData;
   \   00002C   2B41         MOV.W   0x0(SP), R11
    227          
    228          				sErrorEverOccurred = pdTRUE;
   \   00002E   1943         MOV.W   #0x1, R9
   \   000030   F03F         JMP     ??vBlockingQueueConsumer_0
    229          			}
    230          			else
    231          			{
    232          				/* We have successfully received a message, so increment the
    233          				variable used to check we are still running. */	
    234          				if( sErrorEverOccurred == pdFALSE )
   \                     ??vBlockingQueueConsumer_1:
   \   000032   0993         CMP.W   #0x0, R9
   \   000034   0420         JNE     ??vBlockingQueueConsumer_2
    235          				{
    236          					( *pxQueueParameters->psCheckVariable )++;
   \   000036   1F480400     MOV.W   0x4(R8), R15
   \   00003A   9F530000     ADD.W   #0x1, 0(R15)
    237          				}
    238          							
    239          				/* Increment the value we expect to remove from the queue next time
    240          				round. */
    241          				++usExpectedValue;
   \                     ??vBlockingQueueConsumer_2:
   \   00003E   1B53         ADD.W   #0x1, R11
   \   000040   E83F         JMP     ??vBlockingQueueConsumer_0
    242          			}			
    243          		}		
    244          	}
    245          }
    246          /*-----------------------------------------------------------*/
    247          
    248          /* This is called to check that all the created tasks are still running. */

   \                                 In segment CODE, align 2
    249          portBASE_TYPE xAreBlockingQueuesStillRunning( void )
   \                     xAreBlockingQueuesStillRunning:
    250          {
   \   000000   0A12         PUSH.W  R10
    251          static portSHORT sLastBlockingConsumerCount[ blckqNUM_TASK_SETS ] = { ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0 };
    252          static portSHORT sLastBlockingProducerCount[ blckqNUM_TASK_SETS ] = { ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0, ( unsigned portSHORT ) 0 };
    253          portBASE_TYPE xReturn = pdPASS, xTasks;
   \   000002   1C43         MOV.W   #0x1, R12
    254          
    255          	/* Not too worried about mutual exclusion on these variables as they are 16
    256          	bits and we are only reading them. We also only care to see if they have
    257          	changed or not.
    258          	
    259          	Loop through each check variable to and return pdFALSE if any are found not
    260          	to have changed since the last call. */
    261          
    262          	for( xTasks = 0; xTasks < blckqNUM_TASK_SETS; xTasks++ )
   \   000004   0E43         MOV.W   #0x0, R14
   \                     ??xAreBlockingQueuesStillRunning_0:
   \   000006   3E900300     CMP.W   #0x3, R14
   \   00000A   2234         JGE     ??xAreBlockingQueuesStillRunning_1
    263          	{
    264          		if( sBlockingConsumerCount[ xTasks ] == sLastBlockingConsumerCount[ xTasks ]  )
   \   00000C   0D4E         MOV.W   R14, R13
   \   00000E   0D5D         RLA.W   R13
   \   000010   0F4E         MOV.W   R14, R15
   \   000012   0F5F         RLA.W   R15
   \   000014   9D9F........ CMP.W   ??sLastBlockingConsumerCount(R15), sBlockingConsumerCount(R13)
   \   00001A   0120         JNE     ??xAreBlockingQueuesStillRunning_2
    265          		{
    266          			xReturn = pdFALSE;
   \   00001C   0C43         MOV.W   #0x0, R12
    267          		}
    268          		sLastBlockingConsumerCount[ xTasks ] = sBlockingConsumerCount[ xTasks ];
   \                     ??xAreBlockingQueuesStillRunning_2:
   \   00001E   0D4E         MOV.W   R14, R13
   \   000020   0D5D         RLA.W   R13
   \   000022   0F4E         MOV.W   R14, R15
   \   000024   0F5F         RLA.W   R15
   \   000026   9F4D........ MOV.W   sBlockingConsumerCount(R13), ??sLastBlockingConsumerCount(R15)
    269          
    270          
    271          		if( sBlockingProducerCount[ xTasks ] == sLastBlockingProducerCount[ xTasks ]  )
   \   00002C   0D4E         MOV.W   R14, R13
   \   00002E   0D5D         RLA.W   R13
   \   000030   0F4E         MOV.W   R14, R15
   \   000032   0F5F         RLA.W   R15
   \   000034   9D9F........ CMP.W   ??sLastBlockingProducerCount(R15), sBlockingProducerCount(R13)
   \   00003A   0120         JNE     ??xAreBlockingQueuesStillRunning_3
    272          		{
    273          			xReturn = pdFALSE;
   \   00003C   0C43         MOV.W   #0x0, R12
    274          		}
    275          		sLastBlockingProducerCount[ xTasks ] = sBlockingProducerCount[ xTasks ];
   \                     ??xAreBlockingQueuesStillRunning_3:
   \   00003E   0D4E         MOV.W   R14, R13
   \   000040   0D5D         RLA.W   R13
   \   000042   0F4E         MOV.W   R14, R15
   \   000044   0F5F         RLA.W   R15
   \   000046   9F4D........ MOV.W   sBlockingProducerCount(R13), ??sLastBlockingProducerCount(R15)
    276          	}
   \   00004C   1E53         ADD.W   #0x1, R14
   \   00004E   DB3F         JMP     ??xAreBlockingQueuesStillRunning_0
    277          
    278          	return xReturn;
   \                     ??xAreBlockingQueuesStillRunning_1:
   \   000050   3A41         POP.W   R10
   \   000052   3041         RET
    279          }

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

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

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QConsB1">`:
   \   000000   51436F6E7342 DC8 "QConsB1"
   \            3100        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QProdB2">`:
   \   000000   5150726F6442 DC8 "QProdB2"
   \            3200        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QProdB3">`:
   \   000000   5150726F6442 DC8 "QProdB3"
   \            3300        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QConsB4">`:
   \   000000   51436F6E7342 DC8 "QConsB4"
   \            3400        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QProdB5">`:
   \   000000   5150726F6442 DC8 "QProdB5"
   \            3500        

   \                                 In segment DATA16_C, align 1, align-sorted
   \                     `?<Constant "QConsB6">`:
   \   000000   51436F6E7342 DC8 "QConsB6"
   \            3600        
    280          

   Maximum stack usage in bytes:

     Function                       CSTACK
     --------                       ------
     vBlockingQueueConsumer            14
       -> xQueueReceive                14
     vBlockingQueueProducer            12
       -> xQueueSend                   12
     vStartBlockingQueueTasks          72
       -> pvPortMalloc                 24
       -> xQueueCreate                 24
       -> pvPortMalloc                 24
       -> xTaskCreate                  32
       -> xTaskCreate                  40
       -> pvPortMalloc                 40
       -> xQueueCreate                 40
       -> pvPortMalloc                 40
       -> xTaskCreate                  48
       -> xTaskCreate                  56
       -> pvPortMalloc                 56
       -> xQueueCreate                 56
       -> pvPortMalloc                 56
       -> xTaskCreate                  64
       -> xTaskCreate                  72
     xAreBlockingQueuesStillRunning     4


   Segment part sizes:

     Function/Label                 Bytes
     --------------                 -----
     sBlockingConsumerCount            6
     sBlockingProducerCount            6
     vStartBlockingQueueTasks        352
     vBlockingQueueProducer           60
     vBlockingQueueConsumer           66
     xAreBlockingQueuesStillRunning   84
     sLastBlockingConsumerCount        6
     sLastBlockingProducerCount        6
     ?<Constant "QConsB1">             8
     ?<Constant "QProdB2">             8
     ?<Constant "QProdB3">             8
     ?<Constant "QConsB4">             8
     ?<Constant "QProdB5">             8
     ?<Constant "QConsB6">             8

 
 562 bytes in segment CODE
  48 bytes in segment DATA16_C
  24 bytes in segment DATA16_Z
 
 562 bytes of CODE  memory
  48 bytes of CONST memory
  24 bytes of DATA  memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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