📄 semtest.lst
字号:
\ 00000042 0180 STRH R1,[R0, #+0]
211 }
212 }
213
214 /* If we have a block time then we are running at a priority higher
215 than the idle priority. This task takes a long time to complete
216 a cycle (deliberately so to test the guarding) so will be starving
217 out lower priority tasks. Block for some time to allow give lower
218 priority tasks some processor time. */
219 vTaskDelay( pxParameters->xBlockTime * semtstDELAY_FACTOR );
\ ??prvSemaphoreTest_6:
\ 00000044 A068 LDR R0,[R4, #+0x8]
\ 00000046 0A21 MOV R1,#+0xA
\ 00000048 4843 MUL R0,R1
\ 0000004A ........ _BLF vTaskDelay,vTaskDelay??rT
\ ??prvSemaphoreTest_4:
\ 0000004E A268 LDR R2,[R4, #+0x8]
\ 00000050 0021 MOV R1,#+0
\ 00000052 2068 LDR R0,[R4, #+0]
\ 00000054 ........ _BLF xQueueReceive,xQueueReceive??rT
\ 00000058 0128 CMP R0,#+0x1
\ 0000005A 18D1 BNE ??prvSemaphoreTest_7
\ 0000005C 3868 LDR R0,[R7, #+0]
\ 0000005E 0099 LDR R1,[SP, #+0]
\ 00000060 8842 CMP R0,R1
\ 00000062 00D0 BEQ ??prvSemaphoreTest_8
\ 00000064 0125 MOV R5,#+0x1
\ ??prvSemaphoreTest_8:
\ 00000066 0020 MOV R0,#+0
\ 00000068 05E0 B ??prvSemaphoreTest_9
\ ??prvSemaphoreTest_10:
\ 0000006A 3860 STR R0,[R7, #+0]
\ 0000006C 3968 LDR R1,[R7, #+0]
\ 0000006E 8142 CMP R1,R0
\ 00000070 00D0 BEQ ??prvSemaphoreTest_11
\ 00000072 0125 MOV R5,#+0x1
\ ??prvSemaphoreTest_11:
\ 00000074 401C ADD R0,R0,#+0x1
\ ??prvSemaphoreTest_9:
\ 00000076 0099 LDR R1,[SP, #+0]
\ 00000078 8142 CMP R1,R0
\ 0000007A F6D2 BCS ??prvSemaphoreTest_10
\ 0000007C 0022 MOV R2,#+0
\ 0000007E 0021 MOV R1,#+0
\ 00000080 2068 LDR R0,[R4, #+0]
\ 00000082 ........ _BLF xQueueSend,xQueueSend??rT
\ 00000086 0028 CMP R0,#+0
\ 00000088 D1D1 BNE ??prvSemaphoreTest_5
\ 0000008A 0125 MOV R5,#+0x1
\ 0000008C DAE7 B ??prvSemaphoreTest_6
220 }
221 else
222 {
223 if( pxParameters->xBlockTime == ( portTickType ) 0 )
\ ??prvSemaphoreTest_7:
\ 0000008E A068 LDR R0,[R4, #+0x8]
\ 00000090 0028 CMP R0,#+0
\ 00000092 DCD1 BNE ??prvSemaphoreTest_4
224 {
225 /* We have not got the semaphore yet, so no point using the
226 processor. We are not blocking when attempting to obtain the
227 semaphore. */
228 taskYIELD();
\ 00000094 00DF SWI 0
\ 00000096 DAE7 B ??prvSemaphoreTest_4
\ ??prvSemaphoreTest_1:
\ 00000098 ........ DC32 ??sNextCheckVariable
229 }
230 }
231 }
232 }
233 /*-----------------------------------------------------------*/
234
235 /* This is called to check that all the created tasks are still running. */
\ In segment CODE, align 4, keep-with-next
236 portBASE_TYPE xAreSemaphoreTasksStillRunning( void )
237 {
\ xAreSemaphoreTasksStillRunning:
\ 00000000 30B4 PUSH {R4,R5}
238 static portSHORT sLastCheckVariables[ semtstNUM_TASKS ] = { 0 };
239 portBASE_TYPE xTask, xReturn = pdTRUE;
\ 00000002 0120 MOV R0,#+0x1
240
241 for( xTask = 0; xTask < semtstNUM_TASKS; xTask++ )
\ 00000004 .... LDR R1,??DataTable3 ;; ??sCheckVariables
\ 00000006 094A LDR R2,??xAreSemaphoreTasksStillRunning_0 ;; ??sLastCheckVariables
\ 00000008 0423 MOV R3,#+0x4
242 {
243 if( sLastCheckVariables[ xTask ] == sCheckVariables[ xTask ] )
\ ??xAreSemaphoreTasksStillRunning_1:
\ 0000000A 0024 MOV R4,#+0
\ 0000000C 145F LDRSH R4,[R2, R4]
\ 0000000E 0025 MOV R5,#+0
\ 00000010 4D5F LDRSH R5,[R1, R5]
\ 00000012 AC42 CMP R4,R5
\ 00000014 00D1 BNE ??xAreSemaphoreTasksStillRunning_2
244 {
245 xReturn = pdFALSE;
\ 00000016 0020 MOV R0,#+0
246 }
247
248 sLastCheckVariables[ xTask ] = sCheckVariables[ xTask ];
\ ??xAreSemaphoreTasksStillRunning_2:
\ 00000018 0C88 LDRH R4,[R1, #+0]
\ 0000001A 1480 STRH R4,[R2, #+0]
249 }
\ 0000001C 921C ADD R2,R2,#+0x2
\ 0000001E 891C ADD R1,R1,#+0x2
\ 00000020 5B1E SUB R3,R3,#+0x1
\ 00000022 F2D1 BNE ??xAreSemaphoreTasksStillRunning_1
250
251 return xReturn;
\ 00000024 30BC POP {R4,R5}
\ 00000026 00B0 ADD SP,#+0
\ 00000028 7047 BX LR ;; return
\ 0000002A C046 NOP
\ ??xAreSemaphoreTasksStillRunning_0:
\ 0000002C ........ DC32 ??sLastCheckVariables
252 }
\ In segment DATA_Z, align 4, align-sorted
\ ??sLastCheckVariables:
\ 00000000 DS8 8
\ In segment CODE, align 4, keep-with-next
\ ??DataTable1:
\ 00000000 FF0F0000 DC32 0xfff
\ In segment CODE, align 4, keep-with-next
\ ??DataTable3:
\ 00000000 ........ DC32 ??sCheckVariables
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "PolSEM1">`:
\ 00000000 506F6C53454D DC8 "PolSEM1"
\ 3100
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "PolSEM2">`:
\ 00000000 506F6C53454D DC8 "PolSEM2"
\ 3200
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "BlkSEM1">`:
\ 00000000 426C6B53454D DC8 "BlkSEM1"
\ 3100
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "BlkSEM2">`:
\ 00000000 426C6B53454D DC8 "BlkSEM2"
\ 3200
253
254
Maximum stack usage in bytes:
Function CSTACK
-------- ------
prvSemaphoreTest 24
vStartSemaphoreTasks 32
xAreSemaphoreTasksStillRunning 12
Segment part sizes:
Function/Label Bytes
-------------- -----
sCheckVariables 8
sNextCheckVariable 2
vStartSemaphoreTasks 216
prvSemaphoreTest 156
xAreSemaphoreTasksStillRunning 48
sLastCheckVariables 8
??DataTable1 4
??DataTable3 4
?<Constant "PolSEM1"> 8
?<Constant "PolSEM2"> 8
?<Constant "BlkSEM1"> 8
?<Constant "BlkSEM2"> 8
Others 108
524 bytes in segment CODE
32 bytes in segment DATA_C
18 bytes in segment DATA_Z
12 bytes in segment INITTAB
428 bytes of CODE memory (+ 108 bytes shared)
32 bytes of CONST memory
18 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -