nanosleep blocks inifinity (internal rtems deathlock?) even CPU is in idle Task

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Nov 16 08:42:30 UTC 2012


On 11/16/2012 08:48 AM, Matthias Goldhoorn wrote:
> On 15.11.2012 19:45, Chris Johns wrote:
>> Matthias Goldhoorn wrote:
>>> On 15.11.2012 14:52, Sebastian Huber wrote:
>>>> On 11/15/2012 01:26 PM, Matthias Goldhoorn wrote:
>>>>> On 15.11.2012 11:52, Sebastian Huber wrote:
>>>>>> On 11/15/2012 10:44 AM, Matthias Goldhoorn wrote:
>>>>>>
>>>>> Yeah it's both defined.
>>>>> The nanosleep sometimes (mostly) works.
>>>>> Only if some interrupts during the sleep i got this non-awaking
>>>>> behavior it seems strange.
>>
>> Which interrupts are happening that cause the sleep to not wake up, ie the
>> timer to not fire ?
>>
>> What concerns me with the 'rtems_posix_threads' list you posted is no IDLE
>> task which leads me to think any classic threads are not listed. Is there
>> something else loading the CPU ? Maybe a classic thread created by the BSP.
>>
>> Chris
> First of all:
>
> Questions to _Watchdog_Ticks_since_boot
> the _Watchdog_Ticks_since_boot is incrementing after watch interrupt that
> results of the br to rtems_clock_tick()

The _Watchdog_Ticks_since_boot value is incremented with each call to 
rtems_clock_tick().  The rtems_clock_tick() is called normally by the clock 
driver interrupt handler.

>
>
> Question regarding to an simple example or my current setup:
> i attached the RTEMS initialization classes for my base-system. The whole rest
> is rock standard, but i don't have an out of the box bootstrap or simple
> example because i glued rock and rtems together.
> I currently working by side of this problem to integrate the whole RTEMs think
> into ROCK itself as an clean bootstrap. If i finished this (hopefully in the
> next days) i could send you the link howto bootstrap this.
> This might then also be interesting for RTEMs users that to Robot control in
> general. But i got offtopic...

If you don't know the exact stack requirements, then it my help to use the 
stack checker (for <rtems/confdefs.h>).

#define CONFIGURE_STACK_CHECKER_ENABLED

You can also use the "stackuse" RTEMS shell command.

>
> Questions to another bsp:
> Not yet
>
> Regarding to the missing idle thread:
> I think this idle function is only directly called from the scheduler and not
> an "real" rtems thread or thread?!

The idle thread is a normal thread.  The only restriction is that it must not 
call a potentially blocking function.

>
> To the point no source lines available:
> I dont know why GDB could not figure out the code inside of the clock interrupt
> function for everything expect this function i have code lines...

Particular easy to use simulators are the built-in GDB simulators for the 
"sis", "psim", or "jmr3904" BSPs.

-- 
Sebastian Huber, embedded brains GmbH

Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
Phone   : +49 89 18 90 80 79-6
Fax     : +49 89 18 90 80 79-9
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.





More information about the users mailing list