ticker hangs on bf537Stamp

Kolja Waschk rtemsdev at ixo.de
Tue Oct 15 12:44:42 UTC 2013

> You can set a break point to _Thread_Delay_ended().

Ok, thanks, that's a good starting point.

After the first hit, it runs into _Scheduler_priority_Unblock which sets
"_Thread_Dispatch_necessary" = true.

The code following label doDispatch in cpu_asm.S shortly afterwards zeros the
flag (revealed by a HW watch on the DISPATCH_NEEDED location).

Finally, the interrupt is followed by execution of _ISR15_Handler, which calls
_Thread_Dispatch. That seems to decide (from "per_cpu->dispatch_necessary" ==
0) that no switch is needed.

After the second and third hit, _Thread_Delay_ended() ends without any attempt
to switch context. _ISR15_Handler is not called anymore.

A HW watch on the location of "dispatch_necessary" reveals that it is cleared
by _Thread_Start_multitasking line 38. Shouldn't that already have terminated
long ago?!


More information about the users mailing list