powerpc mvme5500 clock off by factor of 150
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Mon Mar 7 15:43:22 UTC 2005
Kate Feng wrote:
> Peter Dufault wrote:
>
>
>>The clock on the MVME5500 seems to be off by a factor of 150. In the
>>"ticker" test it is taking 750 seconds instead of 5 seconds for the
>>displays of the times. I started fiddling constants in bspstart.c but
>>then reading the I2C bus started to fail so I decided I had to look
>>through things and get an overview and not continue ignorantly.
>>
>>I'm looking through it now, but if anyone has hints based on knowledge
>>of the PPC decrementer and the PPC board support packages and how they
>>support the clock (or maybe changes that went into 4.7?) on where I
>>should look I'd appreciate it.
>>
>
>
> I never tested the tests/samples/ticker. However, the mvme5500 clock
> works fine for me. Attached is a test program I wrote. The test result
> is:
This is using rtems_bsp_delay. This is not the same as the
ticker test which uses that the clock tick device driver.
Look in tests/samples/ticker. You need to run it or
you can't be sure any RTEMS time related service including
timeouts on blocking, sleep, etc are right.
--joel
> Cexp>test_ticker()
>
>
> *** Ticker TEST ***
> Ticks per second 100.000000
> - rtems_clock_get - 09:00:00 03/07/2005
> - rtems_clock_get - 09:00:01 03/07/2005
> - rtems_clock_get - 09:00:02 03/07/2005
> - rtems_clock_get - 09:00:03 03/07/2005
> - rtems_clock_get - 09:00:04 03/07/2005
> - rtems_clock_get - 09:00:05 03/07/2005
> - rtems_clock_get - 09:00:06 03/07/2005
> - rtems_clock_get - 09:00:07 03/07/2005
> - rtems_clock_get - 09:00:08 03/07/2005
> - rtems_clock_get - 09:00:09 03/07/2005
>
>
> Reagrds,
> Kate
>
>
>
> ------------------------------------------------------------------------
>
> /*
> * Simple test program -- simplified version of sample test hello.
> */
>
> #include <bsp.h>
>
> #include <stdio.h>
> /*
> * ANSI C
> */
> #include <time.h>
> #include <limits.h>
>
> /*
> * RTEMS
> */
> #include <libcpu/io.h>
> #include <rtems.h>
> #include <rtems/rtems_bsdnet.h>
> #include <bsp.h>
>
> #define print_time(_s1, _tb, _s2) \
> do { \
> printf( "%s%02d:%02d:%02d %02d/%02d/%04d%s", \
> _s1, (_tb)->hour, (_tb)->minute, (_tb)->second, \
> (_tb)->month, (_tb)->day, (_tb)->year, _s2 ); \
> fflush(stdout); \
> } while ( 0 )
>
>
> void test_ticker()
> {
> rtems_interval rtemsTicksPerSecond;
> double rtemsTicksPerSecond_double;
> int i;
> rtems_status_code sc;
> rtems_time_of_day time;
>
>
> printf( "\n\n*** Ticker TEST ***\n" );
> rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &rtemsTicksPerSecond);
> rtemsTicksPerSecond_double = rtemsTicksPerSecond;
> printf("Ticks per second %lf\n", rtemsTicksPerSecond_double);
> time.year = 2005;
> time.month = 3;
> time.day = 7;
> time.hour = 9;
> time.minute = 0;
> time.second = 0;
> time.ticks = 0;
> if ((sc = rtems_clock_set (&time)) != RTEMS_SUCCESSFUL)
> printf ("***** Can't set time: %s\n", rtems_status_text (sc));
>
>
> for (i=0; i<10; i++) {
> rtems_bsp_delay(1000000); /* delay 1 second */
>
> sc = rtems_clock_get (RTEMS_CLOCK_GET_TOD, &time);
> if (sc == RTEMS_SUCCESSFUL) {
> print_time( " - rtems_clock_get - ", &time, "\n" );
> }
> else
> printf("rtems_clock_get failed %d\n", sc);
> }
> }
--
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