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

📄 tasks.lst

📁 本代码已经经过修改
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000000C0   ........           _BLF        vListInitialise,vListInitialise??rT
   \   000000C4   2548               LDR         R0,??xTaskCreate_7  ;; ??xDelayedTaskList1
   \   000000C6   ........           _BLF        vListInitialise,vListInitialise??rT
   \   000000CA   2548               LDR         R0,??xTaskCreate_7+0x4  ;; ??xDelayedTaskList2
   \   000000CC   ........           _BLF        vListInitialise,vListInitialise??rT
   \   000000D0   ....               LDR         R0,??DataTable30   ;; ??xPendingReadyList
   \   000000D2   ........           _BLF        vListInitialise,vListInitialise??rT
   \   000000D6   ....               LDR         R0,??DataTable25   ;; ??xSuspendedTaskList
   \   000000D8   ........           _BLF        vListInitialise,vListInitialise??rT
   \   000000DC   ....               LDR         R0,??DataTable17   ;; ??pxDelayedTaskList
   \   000000DE   1F49               LDR         R1,??xTaskCreate_7  ;; ??xDelayedTaskList1
   \   000000E0   0160               STR         R1,[R0, #+0]
   \   000000E2   ....               LDR         R0,??DataTable16   ;; ??pxOverflowDelayedTaskList
   \   000000E4   1E49               LDR         R1,??xTaskCreate_7+0x4  ;; ??xDelayedTaskList2
   \   000000E6   0160               STR         R1,[R0, #+0]
   \   000000E8   09E0               B           ??xTaskCreate_8
   \                     ??xTaskCreate_6:
   \   000000EA   ....               LDR         R0,??DataTable9    ;; ??xSchedulerRunning
   \   000000EC   0068               LDR         R0,[R0, #+0]
   \   000000EE   0028               CMP         R0,#+0
   \   000000F0   05D1               BNE         ??xTaskCreate_8
   \   000000F2   0898               LDR         R0,[SP, #+0x20]
   \   000000F4   3168               LDR         R1,[R6, #+0]
   \   000000F6   C968               LDR         R1,[R1, #+0xC]
   \   000000F8   8842               CMP         R0,R1
   \   000000FA   00D3               BCC         ??xTaskCreate_8
   \   000000FC   3560               STR         R5,[R6, #+0]
   \                     ??xTaskCreate_8:
   \   000000FE   E868               LDR         R0,[R5, #+0xC]
   \   00000100   1849               LDR         R1,??xTaskCreate_7+0x8  ;; ??uxTopUsedPriority
   \   00000102   0A68               LDR         R2,[R1, #+0]
   \   00000104   8242               CMP         R2,R0
   \   00000106   00D2               BCS         ??xTaskCreate_9
   \   00000108   0860               STR         R0,[R1, #+0]
   \                     ??xTaskCreate_9:
   \   0000010A   1748               LDR         R0,??xTaskCreate_7+0xC  ;; ??uxTaskNumber
   \   0000010C   0168               LDR         R1,[R0, #+0]
   \   0000010E   A960               STR         R1,[R5, #+0x8]
   \   00000110   491C               ADD         R1,R1,#+0x1
   \   00000112   0160               STR         R1,[R0, #+0]
   \   00000114   0020               MOV         R0,#+0
   \   00000116   2861               STR         R0,[R5, #+0x10]
   \   00000118   E868               LDR         R0,[R5, #+0xC]
   \   0000011A   ....               LDR         R1,??DataTable28   ;; ??uxTopReadyPriority
   \   0000011C   0A68               LDR         R2,[R1, #+0]
   \   0000011E   8242               CMP         R2,R0
   \   00000120   00D2               BCS         ??xTaskCreate_10
   \   00000122   0860               STR         R0,[R1, #+0]
   \                     ??xTaskCreate_10:
   \   00000124   291C               MOV         R1,R5
   \   00000126   1031               ADD         R1,#+0x10
   \   00000128   E868               LDR         R0,[R5, #+0xC]
   \   0000012A   4001               LSL         R0,R0,#+0x5
   \   0000012C   3818               ADD         R0,R7,R0
   \   0000012E   ........           _BLF        vListInsertEnd,vListInsertEnd??rT
   \   00000132   0127               MOV         R7,#+0x1
   \   00000134   ........           _BLF        vPortExitCritical,vPortExitCritical??rT
    520          
    521          	if( xReturn == pdPASS )
    522          	{
    523          		if( ( void * ) pxCreatedTask != NULL )
   \   00000138   002C               CMP         R4,#+0
   \   0000013A   00D0               BEQ         ??xTaskCreate_11
    524          		{
    525          			/* Pass the TCB out - in an anonymous way.  The calling function/
    526          			task can use this as a handle to delete the task later if
    527          			required.*/
    528          			*pxCreatedTask = ( xTaskHandle ) pxNewTCB;
   \   0000013C   2560               STR         R5,[R4, #+0]
    529          		}
    530          
    531          		if( xSchedulerRunning != pdFALSE )
   \                     ??xTaskCreate_11:
   \   0000013E   ....               LDR         R0,??DataTable9    ;; ??xSchedulerRunning
   \   00000140   0068               LDR         R0,[R0, #+0]
   \   00000142   0028               CMP         R0,#+0
   \   00000144   05D0               BEQ         ??xTaskCreate_2
    532          		{
    533          			/* If the created task is of a higher priority than the current task
    534          			then it should run now. */
    535          			if( pxCurrentTCB->uxPriority < uxPriority )
   \   00000146   3068               LDR         R0,[R6, #+0]
   \   00000148   C068               LDR         R0,[R0, #+0xC]
   \   0000014A   0899               LDR         R1,[SP, #+0x20]
   \   0000014C   8842               CMP         R0,R1
   \   0000014E   00D2               BCS         ??xTaskCreate_2
    536          			{
    537          				taskYIELD();
   \   00000150   00DF               SWI 0          
    538          			}
    539          		}
    540          	}
    541          
    542          	return xReturn;
   \                     ??xTaskCreate_2:
   \   00000152   381C               MOV         R0,R7
   \   00000154   03B0               ADD         SP,#+0xC
   \   00000156   F0BC               POP         {R4-R7}
   \   00000158   02BC               POP         {R1}
   \   0000015A   0847               BX          R1                 ;; return
   \                     ??xTaskCreate_7:
   \   0000015C   ........           DC32        ??xDelayedTaskList1
   \   00000160   ........           DC32        ??xDelayedTaskList2
   \   00000164   ........           DC32        ??uxTopUsedPriority
   \   00000168   ........           DC32        ??uxTaskNumber
    543          }

   \                                 In segment DATA_Z, align 4, align-sorted
   \                     ??uxTaskNumber:
   \   00000000                      DS8 4
    544          /*-----------------------------------------------------------*/
    545          
    546          #if ( INCLUDE_vTaskDelete == 1 )
    547          
    548          	void vTaskDelete( xTaskHandle pxTaskToDelete )
    549          	{
    550          	tskTCB *pxTCB;
    551          
    552          		taskENTER_CRITICAL();
    553          		{
    554          			/* If null is passed in here then we are deleting ourselves. */
    555          			pxTCB = prvGetTCBFromHandle( pxTaskToDelete );
    556          
    557          			/* Remove task from the ready list and place in the	termination list.
    558          			This will stop the task from be scheduled.  The idle task will check
    559          			the termination list and free up any memory allocated by the
    560          			scheduler for the TCB and stack. */
    561          			vListRemove( &( pxTCB->xGenericListItem ) );
    562          
    563          			/* Is the task waiting on an event also? */												
    564          			if( pxTCB->xEventListItem.pvContainer )
    565          			{
    566          				vListRemove( &( pxTCB->xEventListItem ) );
    567          			}
    568          
    569          			vListInsertEnd( ( xList * ) &xTasksWaitingTermination, &( pxTCB->xGenericListItem ) );
    570          
    571          			/* Increment the ucTasksDeleted variable so the idle task knows
    572          			there is a task that has been deleted and that it should therefore
    573          			check the xTasksWaitingTermination list. */
    574          			++uxTasksDeleted;
    575          		}
    576          		taskEXIT_CRITICAL();
    577          
    578          		/* Force a reschedule if we have just deleted the current task. */
    579          		if( ( void * ) pxTaskToDelete == NULL )
    580          		{
    581          			taskYIELD();
    582          		}
    583          	}
    584          
    585          #endif
    586          
    587          
    588          
    589          
    590          
    591          
    592          /*-----------------------------------------------------------
    593           * TASK CONTROL API documented in task.h
    594           *----------------------------------------------------------*/
    595          
    596          #if ( INCLUDE_vTaskDelayUntil == 1 )

   \                                 In segment CODE, align 4, keep-with-next
    597          	void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement )
    598          	{
   \                     vTaskDelayUntil:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
   \   00000002   041C               MOV         R4,R0
   \   00000004   0E1C               MOV         R6,R1
    599          	portTickType xTimeToWake;
    600          	portBASE_TYPE xAlreadyYielded, xShouldDelay = pdFALSE;
   \   00000006   0025               MOV         R5,#+0
    601          
    602          		vTaskSuspendAll();
   \   00000008   ........           BL          vTaskSuspendAll
    603          		{
    604          			/* Generate the tick time at which the task wants to wake. */
    605          			xTimeToWake = *pxPreviousWakeTime + xTimeIncrement;
   \   0000000C   2168               LDR         R1,[R4, #+0]
   \   0000000E   8E19               ADD         R6,R1,R6
    606          
    607          			if( xTickCount < *pxPreviousWakeTime )
   \   00000010   ....               LDR         R7,??DataTable33   ;; ??xTickCount
   \   00000012   3A68               LDR         R2,[R7, #+0]
   \   00000014   8A42               CMP         R2,R1
   \   00000016   05D2               BCS         ??vTaskDelayUntil_0
    608          			{
    609          				/* The tick count has overflowed since this function was
    610          				lasted called.  In this case the only time we should ever
    611          				actually delay is if the wake time has also	overflowed,
    612          				and the wake time is greater than the tick time.  When this
    613          				is the case it is as if neither time had overflowed. */
    614          				if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xTickCount ) )
   \   00000018   8E42               CMP         R6,R1
   \   0000001A   09D2               BCS         ??vTaskDelayUntil_1
   \   0000001C   3968               LDR         R1,[R7, #+0]
   \   0000001E   B142               CMP         R1,R6
   \   00000020   06D2               BCS         ??vTaskDelayUntil_1
    615          				{
    616          					xShouldDelay = pdTRUE;
   \   00000022   04E0               B           ??vTaskDelayUntil_2
    617          				}
    618          			}
    619          			else
    620          			{
    621          				/* The tick time has not overflowed.  In this case we will
    622          				delay if either the wake time has overflowed, and/or the
    623          				tick time is less than the wake time. */
    624          				if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xTickCount ) )
   \                     ??vTaskDelayUntil_0:
   \   00000024   8E42               CMP         R6,R1
   \   00000026   02D3               BCC         ??vTaskDelayUntil_2
   \   00000028   3968               LDR         R1,[R7, #+0]
   \   0000002A   B142               CMP         R1,R6
   \   0000002C   00D2               BCS         ??vTaskDelayUntil_1
    625          				{
    626          					xShouldDelay = pdTRUE;
   \                     ??vTaskDelayUntil_2:
   \   0000002E   0125               MOV         R5,#+0x1
    627          				}
    628          			}
    629          
    630          			/* Update the wake time ready for the next call. */
    631          			*pxPreviousWakeTime = xTimeToWake;
   \                     ??vTaskDelayUntil_1:
   \   00000030   2660               STR         R6,[R4, #+0]
    632          
    633          			if( xShouldDelay )
   \   00000032   002D               CMP         R5,#+0
   \   00000034   12D0               BEQ         ??vTaskDelayUntil_3
    634          			{
    635          				/* We must remove ourselves from the ready list before adding
    636          				ourselves to the blocked list as the same list item is used for
    637          				both lists. */

⌨️ 快捷键说明

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