ARM ETM Trace log Fri Sep 09 13:15:49 2011 Index Frame Address Opcode Mnemonic Operands Comment +---------+-------------+-----------+-----------+--------+----------------------------+---------------------------------- 069361 069362 Exception Entry 83 069362 069363 0x0803E17E 0xb580 PUSH {R7, LR} 069363 069364 0x0803E180 0xf8df 0x03f8 LDR.W R0, ??DataTable18_28 ; g_UsbOtgDev ; 069364 069365 0x0803E184 0xf000 0xfaae BL USBD_OTG_ISR_Handler ; 0x803e6e4 ; 069365 069366 0x0803E6E4 0xb570 PUSH {R4-R6, LR} . . . . Exception 83 executes . . . . QK_ISR_ENTRY() is called 069515 069516 0x0801B9CC 0xb672 CPSID i 069516 069517 0x0801B9CE 0x4876 LDR.N R0, ??DataTable9_15 ; QK_intNest_ ; 069517 069518 Trace synch point 069518 069519 0x0801B9D0 0x7800 LDRB R0, [R0] 069519 069520 0x0801B9D2 0x1c40 ADDS R0, R0, #1 069520 069521 0x0801B9D4 0x4974 LDR.N R1, ??DataTable9_15 ; QK_intNest_ ; 069521 069522 0x0801B9D6 0x7008 STRB R0, [R1] 069522 069523 0x0801B9D8 0xb662 CPSIE i 069523 069524 0x0801B9DA 0x4867 LDR.N R0, ??DataTable9_3 ; xPacketsToTx ; 069524 069525 0x0801B9DC 0xf00a 0xfd66 BL QEQueue_get ; 0x80264ac ; 069525 069526 0x080264AC 0xb530 PUSH {R4, R5, LR} 069526 069527 0x080264AE 0xb672 CPSID i 069527 069528 0x080264B0 0x6801 LDR R1, [R0] 069528 069529 0x080264B2 0xb191 CBZ R1, ??QEQueue_get_0 ; 0x80264da ; 069529 069530 0x080264DA 0xb662 CPSIE i 069530 069531 0x080264DC 0x4608 MOV R0, R1 069531 069532 0x080264DE 0xbd30 POP {R4, R5, PC} 069532 069533 0x0801B9E0 0x0004 MOVS R4, R0 069533 069534 0x0801B9E2 0x2c00 CMP R4, #0 069534 069535 0x0801B9E4 0xd009 BEQ.N ??vHidComTxIsr_0 ; 0x801b9fa ; 069535 069536 0x0801B9FA 0x486a LDR.N R0, ??DataTable9_14 ; bBusyTxing ; 069536 069537 0x0801B9FC 0x2100 MOVS R1, #0 069537 069538 0x0801B9FE 0x7001 STRB R1, [R0] . . . . QK_ISR_EXIT() is called 069538 069539 0x0801BA00 0xb672 CPSID i 069539 069540 0x0801BA02 0x4869 LDR.N R0, ??DataTable9_15 ; QK_intNest_ ; 069540 069541 0x0801BA04 0x7800 LDRB R0, [R0] 069541 069542 0x0801BA06 0x1e40 SUBS R0, R0, #1 069542 069543 0x0801BA08 0x4967 LDR.N R1, ??DataTable9_15 ; QK_intNest_ ; 069543 069544 0x0801BA0A 0x7008 STRB R0, [R1] . . . . PendSV is triggered inside Exception 83 069544 069545 0x0801BA0C 0x4867 LDR.N R0, ??DataTable9_16 ; ICSR ; 069545 069546 0x0801BA0E 0xf05f 0x5180 MOVS.W R1, #268435456 ; 0x10000000 ; 069546 069547 0x0801BA12 0x6001 STR R1, [R0] 069547 069548 0x0801BA14 0xb662 CPSIE i 069548 069549 0x0801BA16 0xbd10 POP {R4, PC} 069549 069550 0x0803F042 0xbd01 POP {R0, PC} . . . . Exception 83 executes uninterrupted . . . 069614 069615 0x0803E7CA 0xbd70 POP {R4-R6, PC} 069615 069616 0x0803E188 0xbd01 POP {R0, PC} 069616 069617 Exception Exit 069617 069618 Exception Entry 14 ! ! ! ! PendSV (Exception 14) is called ! ! ! ! but is immediately canceled due to the LATE-ARRIVAL of exception 36 069618 069619 0x08023258 0xb672 CPSID i Canceled ; !!! Late arrival 069619 069620 Exception Entry 36 ; of Exception 36 069620 069621 0x0803E440 0xb580 PUSH {R7, LR} 069621 069622 0x0803E442 0xb672 CPSID i 069622 069623 0x0803E444 0x4846 LDR.N R0, ??DataTable18_21 ; QK_intNest_ ; 069623 069624 0x0803E446 0x7800 LDRB R0, [R0] 069624 069625 0x0803E448 0x1c40 ADDS R0, R0, #1 069625 069626 0x0803E44A 0x4945 LDR.N R1, ??DataTable18_21 ; QK_intNest_ ; 069626 069627 0x0803E44C 0x7008 STRB R0, [R1] 069627 069628 0x0803E44E 0xb662 CPSIE i . . . . Exception 36 executes uninterrupted. 070119 070120 0x0803E476 0xb672 CPSID i 070120 070121 0x0803E478 0x4839 LDR.N R0, ??DataTable18_21 ; QK_intNest_ ; 070121 070122 0x0803E47A 0x7800 LDRB R0, [R0] 070122 070123 0x0803E47C 0x1e40 SUBS R0, R0, #1 070123 070124 0x0803E47E 0x4938 LDR.N R1, ??DataTable18_21 ; QK_intNest_ ; 070124 070125 0x0803E480 0x7008 STRB R0, [R1] . . . . PendSV is triggered inside Exception 36 070125 070126 0x0803E482 0x483b LDR.N R0, ??DataTable18_25 ; ICSR ; 070126 070127 0x0803E484 0xf05f 0x5180 MOVS.W R1, #268435456 ; 0x10000000 ; 070127 070128 0x0803E488 0x6001 STR R1, [R0] 070128 070129 0x0803E48A 0xb662 CPSIE i 070129 070130 0x0803E48C 0xbd01 POP {R0, PC} 070130 070131 Exception Exit ! ! ! ! Exit from Exception 36 comes back to the PendSV canceled by the late-arrival at index 069618, ! ! ! ! but the PENDSVSET bit in the NVIC-ICSR is set!!! ! ! ! ! The PENDSVSET should be cleared by the time PendSV exception is taken!!! 070131 070132 0x08023258 0xb672 CPSID i 070132 070133 0x0802325A 0x480a LDR.N R0, _?1 ; QK_readySet_ ; 070133 070134 0x0802325C 0x7800 LDRB R0, [R0] 070134 070135 0x0802325E 0x2800 CMP R0, #0 070135 070136 0x08023260 0xd005 BEQ.N iret ; 0x802326e ; Not executed 070136 070137 0x08023262 0x2101 MOVS R1, #1 070137 070138 0x08023264 0x0609 LSLS R1, R1, #24 070138 070139 0x08023266 0x4808 LDR.N R0, _?2 ; schedule ; 070139 070140 0x08023268 0xb403 PUSH {R0, R1} 070140 070141 0x0802326A 0xb086 SUB SP, SP, #0x18 070141 070142 0x0802326C 0x4770 BX LR 070142 070143 Exception Exit 070143 070144 0x08023272 0xf7f6 0xfa93 BL QK_schedule_ ; 0x801979c ; 070144 070145 0x0801979C 0xe92d 0x4ff8 PUSH.W {R3-R11, LR} 070145 070146 0x080197A0 0x4823 LDR.N R0, ??DataTable1 ; QK_intNest_ ; 070146 070147 0x080197A2 0x7800 LDRB R0, [R0] 070147 070148 0x080197A4 0xb120 CBZ R0, ??QK_schedule__0 ; 0x80197b0 ; 070148 070149 0x080197B0 0x4c20 LDR.N R4, ??DataTable1_1 ; QF_log2Lkup ; 070149 070150 0x080197B2 0x4d21 LDR.N R5, ??DataTable1_2 ; QK_readySet_ ; 070150 070151 0x080197B4 0x7828 LDRB R0, [R5] 070151 070152 0x080197B6 0xb148 CBZ R0, ??QK_schedule__1 ; 0x80197cc ; Not executed 070152 070153 0x080197B8 0x7828 LDRB R0, [R5] 070153 070154 0x080197BA 0x5d00 LDRB R0, [R0, R4] 070154 070155 0x080197BC 0x1e40 SUBS R0, R0, #1 070155 070156 0x080197BE 0xb2c0 UXTB R0, R0 070156 070157 0x080197C0 0x1941 ADDS R1, R0, R5 070157 070158 0x080197C2 0x7849 LDRB R1, [R1, #0x1] 070158 070159 0x080197C4 0x5d09 LDRB R1, [R1, R4] 070159 070160 0x080197C6 0xeb01 0x00c0 ADD.W R0, R1, R0, LSL #3 070160 070161 0x080197CA 0xb2c0 UXTB R0, R0 070161 070162 0x080197CC 0x4e1b LDR.N R6, ??DataTable1_3 ; QK_currPrio_ ; 070162 070163 0x080197CE 0x7831 LDRB R1, [R6] 070163 070164 0x080197D0 0x4281 CMP R1, R0 070164 070165 0x080197D2 0xda2a BGE.N ??QK_schedule__2 ; 0x801982a ; 070165 070166 0x0801982A 0xe8bd 0x8ff1 POP.W {R0, R4-R11, PC} 070166 070167 0x08023276 0xb662 CPSIE i 070167 070168 0x08023278 0xdf00 SVC #0x0 070168 070169 Exception Entry 14 ! ! ! ! As soon as interrupts are unlocked, the PendSV Exception 14 is taken again ! ! ! ! because the PENDSVSET bit in the NVIC-ICSR is set!!! 070169 070170 0x08023258 0xb672 CPSID i 070170 070171 0x0802325A 0x480a LDR.N R0, _?1 ; QK_readySet_ ; 070171 070172 0x0802325C 0x7800 LDRB R0, [R0] 070172 070173 0x0802325E 0x2800 CMP R0, #0 070173 070174 0x08023260 0xd005 BEQ.N iret ; 0x802326e ; Not executed 070174 070175 0x08023262 0x2101 MOVS R1, #1 070175 070176 0x08023264 0x0609 LSLS R1, R1, #24 070176 070177 0x08023266 0x4808 LDR.N R0, _?2 ; schedule ; 070177 070178 0x08023268 0xb403 PUSH {R0, R1} 070178 070179 0x0802326A 0xb086 SUB SP, SP, #0x18 070179 070180 0x0802326C 0x4770 BX LR 070180 070181 Exception Exit 070181 070182 0x08023272 0xf7f6 0xfa93 BL QK_schedule_ ; 0x801979c ; 070182 070183 0x0801979C 0xe92d 0x4ff8 PUSH.W {R3-R11, LR} 070183 070184 0x080197A0 0x4823 LDR.N R0, ??DataTable1 ; QK_intNest_ ; 070184 070185 0x080197A2 0x7800 LDRB R0, [R0] 070185 070186 0x080197A4 0xb120 CBZ R0, ??QK_schedule__0 ; 0x80197b0 ; 070186 070187 0x080197B0 0x4c20 LDR.N R4, ??DataTable1_1 ; QF_log2Lkup ; 070187 070188 0x080197B2 0x4d21 LDR.N R5, ??DataTable1_2 ; QK_readySet_ ; 070188 070189 0x080197B4 0x7828 LDRB R0, [R5] 070189 070190 0x080197B6 0xb148 CBZ R0, ??QK_schedule__1 ; 0x80197cc ; Not executed 070190 070191 0x080197B8 0x7828 LDRB R0, [R5] 070191 070192 0x080197BA 0x5d00 LDRB R0, [R0, R4] 070192 070193 0x080197BC 0x1e40 SUBS R0, R0, #1 070193 070194 0x080197BE 0xb2c0 UXTB R0, R0 070194 070195 0x080197C0 0x1941 ADDS R1, R0, R5 070195 070196 0x080197C2 0x7849 LDRB R1, [R1, #0x1] 070196 070197 0x080197C4 0x5d09 LDRB R1, [R1, R4] 070197 070198 0x080197C6 0xeb01 0x00c0 ADD.W R0, R1, R0, LSL #3 070198 070199 0x080197CA 0xb2c0 UXTB R0, R0 070199 070200 0x080197CC 0x4e1b LDR.N R6, ??DataTable1_3 ; QK_currPrio_ ; 070200 070201 0x080197CE 0x7831 LDRB R1, [R6] 070201 070202 0x080197D0 0x4281 CMP R1, R0 070202 070203 0x080197D2 0xda2a BGE.N ??QK_schedule__2 ; 0x801982a ; 070203 070204 0x0801982A 0xe8bd 0x8ff1 POP.W {R0, R4-R11, PC} 070204 070205 0x08023276 0xb662 CPSIE i 070205 070206 0x08023278 0xdf00 SVC #0x0 070206 070207 Exception Entry 11 070207 070208 0x0802327A 0xb008 ADD SP, SP, #0x20 070208 070209 0x0802327C 0x4770 BX LR 070209 070210 Exception Exit ! ! ! ! After this SVCall Exception 11 returns, NVIC "thinks" that it has no more nested exceptions. ! ! ! ! This is because SVCall is designed to always return to the TASK LEVEL. 070210 070211 0x0802327A 0xb008 ADD SP, SP, #0x20 070211 070212 0x0802327C 0x4770 BX LR ! ! ! ! Therefore after removeing it's own interrupt frame from the stack ! ! ! ! the SVcall Exception returns as a normal function (rather than exception) ! ! ! ! Function return does not remove the interrupt frame off the stack 070212 070213 0x08023276 0xb662 CPSIE i 070213 070214 0x08023278 0xdf00 SVC #0x0 070214 070215 Exception Entry 11 070215 070216 0x0802327A 0xb008 ADD SP, SP, #0x20 070216 070217 0x0802327C 0x4770 BX LR 070217 070218 Exception Exit 070218 070219 Exception Entry 19