sptests failures

Joel Sherrill joel.sherrill at OARcorp.com
Fri Aug 17 16:28:25 UTC 2001

"Oliver Wohlmuth (r40010)" wrote:
> Hi all,
> I'm working on a RTEMS port for an internal developed microprocessor core.

Very cool.  Is this core going to be generally available?  If so,
will the port be submitted?  Can you share any information about it?
Inquiring minds want to know. :)

> I'm using the RTEMS release 4.5.0 sources. To verify my code, I used the
> supplied testsuites under 'sptests'. When tracking the reported missmatches
> it seems that a few testsuites contain bugs. To name some examples:

It is not impossible. :(

> sp24:
> -----
>     file resume.c:
>     The code 'directive_failed_with_level( status, "rtems_task_resume", 1 );'
>     returns an error if variable '_Thread_Dispatch_disable_level' != 1.
>     As 'resume_task()' is called within the clock ISR, '_Thread_Dispatch_disable_level'
>     is  >= 1.
>     After commenting this line out, the test did run without problems.

I think this indicates a problem with your port's interrupt processing code.
_Thread_Dispatch_disable_level is incremented inside RTEMS services and 
when entering an ISR.  It is decremented when exiting those paths.

In this case, the clock isr invocation that is firing this routine should not 
be interrupting an RTEMS service and I would not expect it to be a nested
interrupt.  Therefor, the level should be = 1.

> sp26:
> ----
>    file task1.c:
>    In line 87, the stack size for the rtems_task_create() call is specified with
>    'RTEMS_MINIMUM_STACK_SIZE * 4'. For the calculation of the required amount of
>     workspace only 'RTEMS_MINIMUM_STACK_SIZE' is used per task. Therfore test failed
>     because it can't allocate memory for all task stacks.
>     After removing '*4', the test worked.

This is a bug.

> - Is it ok that some tests under 'sptests' fail or I'm doing something wrong ?

The sptests should not fail.  There are cases where the output does not
match the screen due to a number of factors including slow IO or interrupt
IO skewing output. In general, polled IO produces better results.

I highly recommend grabbing RPMs for a target with a good simulator
or sparc/erc32), build RTEMS for that BSP, and run the tests.  If nothing else,
it will be a good point of comparison.

> - Is there a list of tests that are known to fail ?

> Thanks in advance,
> Oliver
> PS: I configured RTEMS with:
> ../rtems-4.5.0/configure --disable-posix --disable-itron --disable-networking --enable-tests
> --target=xxx-rtems

This is good enough.  Especially when testing a port you don't want to run all
the tests.

Does hello world run?  Does ticker run?  If you can't run those, you are
wasting your
time going further.  The port will be mostly working if you can run those two.

Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985

More information about the users mailing list