Q: Should Cygwin/RTEMS-4.6.2/powerpc-rtems/psim pass these: s p12. exe and sp32.exe?

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Fri Jan 21 17:19:58 UTC 2005


Mills, John M. wrote:
> Joel -
> 
> Mills, John M. wrote:
> ...
> jmm> I also fail sp32:
> jmm>  $ psim sp32.exe
> jmm> 
> jmm> I get:
> jmm>
> =========================================================================
> jmm> *** TEST 32 ***
> jmm> 
> jmm> rate_monotonic_period FAILED -- expected (successful completion) got
> (timed
> jmm> out waiting)
> jmm>
> =========================================================================
> jmm> 
> jmm> Are these failures expected?
> 
> js> sp32 is particularly sensitive to the amount of work that can be done
> js> between clock ticks.  On psim the period between clock ticks is measured
> js> in number of instructions, so TICKS_PER_MICROSECOND == the number of 
> js> instructions we treat as a microsecond.  So it could easily be too low 
> js> for this test.
> 
> Following your note to Daniel Gustafsson and the contents of <confdefs.h>, I
> edited
>  <RTEMS-srcdir>/c/src/tests/sptests/sp32/init.c to add the line:
> 
> "#define CONFIGURE_MICROSECONDS_PER_TICK
> RTEMS_MILLISECONDS_PER_MICROSECOND(xx)"
> 
> before the line: "#include <confdefs.h>" 
> 
> I still fail 'sp32.exe' for values of xx between 1 and 5000.

psim is pretty simple.  Each unit counted in the decrementer
register is 1 instruction.  There is a constant in the BSP
named PSIM_INSTRUCTIONS_PER_MICROSECOND which is set to 10000
in the CVS source.  The value put in the decrementer register
is calculated by this code.

PPC_DECREMENTER_CLICKS =
    (unsigned int)&PSIM_INSTRUCTIONS_PER_MICROSECOND;
PPC_DECREMENTER_CLICKS *=
    rtems_configuration_get_microseconds_per_tick();

So we are saying that there you need to execute at least 10000 * 5000
instructions per simulated millisecond to do the workload required
by this test.

Basically you can turn down the number of instructions per tick
to the point where you are not making forward progress on the test.

sp32.exe ran for me last night but sp12.exe failed on psim.
I left sparc/erc32 running to see how it did on sp12.exe to
see if I am looking for a generic of BSP specific issue.

> Was this the correct way to configure my psim's reported speed? What test
> would be more suitable for me to calibrate this constant?

You can't really generically calibrate psim's ticker.  If you are
simulating in order to run a real application, you might need to
accomplish a different amount of work per millisecond to accurately
reflect the capabilties of your target hardware.


> Thanks.
>  - John
> 
> John M. Mills
> Staff Engineer
> EMS Technologies
> 660 Engineering Drive
> Norcross, GA 30092
> 770.263.9200 ext4882


-- 
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