* RE: [ECOS] Change system tick during runtime
@ 2003-10-01 13:16 Daniel Lidsten
2003-10-01 13:31 ` Gary Thomas
2003-10-01 17:06 ` Nick Garnett
0 siblings, 2 replies; 6+ messages in thread
From: Daniel Lidsten @ 2003-10-01 13:16 UTC (permalink / raw)
To: Gary Thomas; +Cc: eCos Discussion
> > 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
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [ECOS] Change system tick during runtime
2003-10-01 13:16 [ECOS] Change system tick during runtime Daniel Lidsten
@ 2003-10-01 13:31 ` Gary Thomas
2003-10-01 17:06 ` Nick Garnett
1 sibling, 0 replies; 6+ messages in thread
From: Gary Thomas @ 2003-10-01 13:31 UTC (permalink / raw)
To: Daniel Lidsten; +Cc: eCos Discussion
On Wed, 2003-10-01 at 07:15, Daniel Lidsten wrote:
> > > 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?
>
Yes, this is the idea. It could be a periodic interrupt+thread, or if
your period varies, just have the control thread set it up and wait for
the appropriate time to elapse, then have the interrupt (DSR) wake up
the control thread. This would be much better than trying to have the
whole system clock running at the higher frequency.
--
Gary Thomas <gary@mlbassoc.com>
MLB Associates
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ECOS] Change system tick during runtime
2003-10-01 13:16 [ECOS] Change system tick during runtime Daniel Lidsten
2003-10-01 13:31 ` Gary Thomas
@ 2003-10-01 17:06 ` Nick Garnett
1 sibling, 0 replies; 6+ messages in thread
From: Nick Garnett @ 2003-10-01 17:06 UTC (permalink / raw)
To: Daniel Lidsten; +Cc: Gary Thomas, eCos Discussion
"Daniel Lidsten" <Daniel.Lidsten@combitechsystems.com> writes:
> 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.
To do this you would still only need to run the system clock at
1000Hz, not the 10000Hz you mentioned before. 1000Hz should be
doable on all but the slowest targets. You need to change the period
and denominator in the HAL to do this. On some targets the period is
calculated from the denominator, so you only need change the one
value. I added a new section to the HAL documentation a few weeks ago
describing how to do this.
To make the thread run at different rates at different times you
should then just change the trigger/interval times of the alarm, not
the frequency of the interrupts.
All time in eCos is based on the clock interrupt frequency, so
changing it would upset other alarms, network timeouts and the
system's notion of the passage of real time. It is not a good idea to
do this.
--
Nick Garnett eCos Kernel Architect
http://www.ecoscentric.com The eCos and RedBoot experts
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
^ permalink raw reply [flat|nested] 6+ messages in thread
* [ECOS] Change system tick during runtime
@ 2003-10-01 12:55 Daniel Lidsten
2003-10-01 12:59 ` Slawek
2003-10-01 13:03 ` Gary Thomas
0 siblings, 2 replies; 6+ messages in thread
From: Daniel Lidsten @ 2003-10-01 12:55 UTC (permalink / raw)
To: eCos Discussion
Hi,
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.
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ECOS] Change system tick during runtime
2003-10-01 12:55 Daniel Lidsten
@ 2003-10-01 12:59 ` Slawek
2003-10-01 13:03 ` Gary Thomas
1 sibling, 0 replies; 6+ messages in thread
From: Slawek @ 2003-10-01 12:59 UTC (permalink / raw)
To: ecos-discuss
Hi,
undef CYGNUM_HAL_RTC_DENOMINATOR
and define it as a variable (in any of the global .h files).
The compiler shoud do the rest.
--
Slawek Piotrowski
----- Original Message -----
From: "Daniel Lidsten" <Daniel.Lidsten@combitechsystems.com>
To: "eCos Discussion" <ecos-discuss@sources.redhat.com>
Sent: Wednesday, October 01, 2003 2:55 PM
Subject: [ECOS] Change system tick during runtime
Hi,
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.
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
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ECOS] Change system tick during runtime
2003-10-01 12:55 Daniel Lidsten
2003-10-01 12:59 ` Slawek
@ 2003-10-01 13:03 ` Gary Thomas
1 sibling, 0 replies; 6+ messages in thread
From: Gary Thomas @ 2003-10-01 13:03 UTC (permalink / raw)
To: Daniel Lidsten; +Cc: eCos Discussion
On Wed, 2003-10-01 at 06:55, Daniel Lidsten wrote:
> Hi,
>
> 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*.
--
Gary Thomas <gary@mlbassoc.com>
MLB Associates
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2003-10-01 17:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-01 13:16 [ECOS] Change system tick during runtime Daniel Lidsten
2003-10-01 13:31 ` Gary Thomas
2003-10-01 17:06 ` Nick Garnett
-- strict thread matches above, loose matches on Subject: below --
2003-10-01 12:55 Daniel Lidsten
2003-10-01 12:59 ` Slawek
2003-10-01 13:03 ` Gary Thomas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).