New user - timer problems

Richardson, Anthony ar63 at evansville.edu
Tue Feb 22 17:59:53 UTC 2005


Duh.  Thanks that was it.

Tony 

> -----Original Message-----
> From: Joel Sherrill <joel at OARcorp.com> 
> [mailto:joel.sherrill at OARcorp.com] 
> Sent: Tuesday, February 22, 2005 9:49 AM
> To: Richardson, Anthony
> Cc: rtems-users at rtems.com
> Subject: Re: New user - timer problems
> 
> Richardson, Anthony wrote:
> > I think I am missing something fundamental with regard to
> > the use of timers.  Calls to rtems_timer_create() and
> > rtems_timer_initiate_server() return a status of
> > RTEMS_NOT_CONFIGURED.  If I ignore the error returns
> > everything seems to work ok, but I'm concerned I'm not
> > configuring something that I should be.
> 
> You are probably using hello world as a starting point.
> Look in the Makefile for
> 
> # optional managers required
> MANAGERS=io
> 
> and change io to "all"
> 
> 
> > A complete, simple test case is included below.  The
> > 
> > #define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
> > #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
> > 
> > lines don't seem to help.  I threw them in when
> > trying to get rid of the error.
> > 
> > I'm using RTEMS 4.6.2 on the PC.
> > 
> > Thanks,
> > Tony Richardson
> > 
> > ===========================================================
> > #include <bsp.h>
> > #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
> > #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
> > #define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
> > #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
> > #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
> > #define CONFIGURE_MAXIMUM_TASKS      3
> > #define CONFIGURE_MAXIMUM_TIMERS     1
> > #define CONFIGURE_MAXIMUM_SEMAPHORES 1
> > #define CONFIGURE_INIT
> > rtems_task Init(rtems_task_argument arg);
> > #include <confdefs.h>
> > #include <stdio.h>
> > #include <string.h>
> > #include <stdlib.h>
> > 
> > rtems_id sem_id;
> > rtems_id tim_id;
> > 
> > rtems_timer_service_routine my_timer(rtems_id timer, void *arg)
> > {
> >    // We just need to release the semaphore
> >    rtems_semaphore_release(sem_id);
> > }
> > 
> > rtems_task Init(rtems_task_argument ignored)
> > {
> >   rtems_status_code status;
> > 
> >   // Create semaphore, initially it should be unavailable
> >   rtems_semaphore_create(
> >      rtems_build_name('S','M','0','1'),
> >      0,
> >      RTEMS_SIMPLE_BINARY_SEMAPHORE,
> >      0,
> >      &sem_id);
> > 
> >   status = rtems_timer_create(
> >      rtems_build_name('T','M','0','1'),
> >      &tim_id);
> >   // timer_create seems to always return an 
> RTEMS_NOT_CONFIGURED error
> >   // but works never-the-less.
> >   printf("status = %d\n", status);
> >   if (status != RTEMS_SUCCESSFUL && status != 
> RTEMS_NOT_CONFIGURED) {
> >      printf("Error creating timer 1\n");
> >      exit(0);
> >   }
> > 
> >   rtems_timer_initiate_server(
> >      RTEMS_TIMER_SERVER_DEFAULT_PRIORITY,
> >      RTEMS_MINIMUM_STACK_SIZE,
> >      RTEMS_DEFAULT_ATTRIBUTES);
> >   printf("status = %d\n", status);
> >   if (status != RTEMS_SUCCESSFUL && status != 
> RTEMS_NOT_CONFIGURED) {
> >      printf("Error creating timer 1\n");
> >      exit(0);
> >   }
> > 
> >   printf("Entering application loop ...\n");
> >   while(1) {
> >      printf("Hello world!\n");
> >      // fire timer
> >      rtems_timer_server_fire_after(
> >         tim_id,
> >         5000/rtems_configuration_get_milliseconds_per_tick(),
> >         my_timer,
> >         (void *)NULL);
> >      // wait for the semaphore, it is released by the timer
> >      rtems_semaphore_obtain(sem_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
> >   }
> >   exit( 0 );
> > }
> 
> 
> -- 
> 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