This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Change system tick during runtime
- From: "Daniel Lidsten" <Daniel dot Lidsten at combitechsystems dot com>
- To: "Gary Thomas" <gary at mlbassoc dot com>
- Cc: "eCos Discussion" <ecos-discuss at sources dot redhat dot com>
- Date: Wed, 1 Oct 2003 15:15:27 +0200
- Subject: RE: [ECOS] Change system tick during runtime
> > Is there any way of changing the system tick during runtime? I have
> > made a quick test by letting an application provided
> variable be used
> > when setting the decrementer in the HAL_CLOCK_*-functions.
> This will
> > make the system generate tick more or less often depending on the
> > value set. However, the drawback is that the system expects that we
> > have a heartbeat of 100Hz and that will differ when changing the
> > decrementer. Is there any way to get around this? Is there
> any way to
> > change the CYGNUM_HAL_RTC_DENOMINATOR during runtime so that the
> > change will affect every file that use it? I want to be
> able to have
> > 10000 ticks per second but then i also need to let the system know
> > that we have 10000 ticks per seconds so that not all timeouts and
> > stuff gets all confused.
> >
>
> Are you sure that you want the system clock to run at this
> high of a frequency? That means that every 100us you are
> going to execute the clock handler, which oft times ends up
> running the scheduler, etc. Unless you're on a blazingly fast
> platform, this seems like too much overhead.
>
> If you just want higher granularity timers or interrupts, how about
> using a second timer for this purpose?
>
> As for changing the clock frequency on the fly, I don't think eCos
> is set up for this, nor (IMO) is it a good idea.
>
> Maybe if you explain a little more the *why*, we can give you
> some ideas on the *how*.
In my system i want to run a thread at regular intervals since it is a
control thread. It can be every 1ms but also every 50ms. Since i have to
run the thread faster then i can setup an alarm in the default
configuration where 10ms is the tick rate then i thought that perhaps i
could let the system generate ticks more often. This is why i altered
the tick generator.
In your probosed solution then i should setup a HW timer to generate an
interrupt every time i want to run the thread and then let the interrupt
DSR post a semaphore or some other trigger mechanism. Did i understand
it right? Is this the best way to accomplish the thread trigger?
Regards, Daniel Lidsten
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss