public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Bart Veer <bartv@ecoscentric.com>
To: oyvind.harboe@zylin.com
Cc: ecos-discuss@sources.redhat.com
Subject: Re: [ECOS] hal_delay_us() patch to at91_misc + multithreading
Date: Mon, 13 Jun 2005 18:54:00 -0000	[thread overview]
Message-ID: <20050613185448.1D92265C057@smtp.ecoscentric.com> (raw)
In-Reply-To: <1118685436.31409.9.camel@localhost.localdomain> (message from =?ISO-8859-1?Q?=D8yvind?= Harboe on Mon, 13 Jun 2005 19:57:16 +0200)

>>>>> "Oyvind" == =?ISO-8859-1?Q?=D8yvind?= Harboe <ISO-8859-1> writes:

    >> I would like to see the macro definition upgraded to make it
    >> compulsory rather than optional, and require the macro to be
    >> thread-safe.

    Oyvind> Makes sense. I2C seems to be based upon these assumptions. 

    >> I am happy to do a synthetic target implementation, but that
    >> still leaves other architectures where the macro would need to
    >> be added or fixed.

    Oyvind> How about calibrating a CPU counter loop implementaiton
    Oyvind> upon startup using the default hardware timer in the HAL?

    Oyvind> - a couple of ms to the startup time is a small price to pay for
    Oyvind>   a default implementation of a HAL_DELAY_US()
    Oyvind> - The HAL_DELAY_US() definition should state that the the accuracy
    Oyvind>   is not very good, but that it is guaranteed to wait at least
    Oyvind>   n us.

Doesn't work for the synthetic target. The only easy way for the
synthetic target to read a clock is a gettimeofday() system call, i.e.
real time rather than process elapsed time. This would be fine if
there was nothing else running, but the synthetic target may get
preempted at any time including during this calibration loop. Hence
there is no guarantee the gettimeofday() values bear any resemblance
to the loop count. You could try doing the measurements several times
and picking the most sensible result, but at that level of complexity
you might as well read /proc/cpuinfo.

For embedded targets, often a couple of ms extra boot time is not
significant. But not always. There are systems which have a hard
requirement that some application code gets to run within a couple of
ms or less of power-up. Instead wherever possible the HAL_DELAY_US()
loop count should be determined during the porting process, not at
run-time.

    Oyvind> Is there a fundamental reason why HAL_DELAY_US() needs to
    Oyvind> be very accurate(i.e. say <20-30%)

It should not be less than the specified delay, give or take a couple
of percent. Device drivers can have fairly strict minimum intervals
between operations. Once interrupts are enabled HAL_DELAY_US() can
take arbitrary amounts of time longer than the specified delay, but it
is still a good idea to make it reasonably accurate. The usual
implementation is a polling loop during which no other work can get
done, making that loop use more cpu cycles than are absolutely
necessary is wasteful.

Bart

-- 
Bart Veer                       eCos Configuration Architect
http://www.ecoscentric.com/     The eCos and RedBoot experts


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

  reply	other threads:[~2005-06-13 18:54 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-08 11:24 Øyvind Harboe
2005-06-11 13:49 ` Bart Veer
2005-06-13 17:57   ` Øyvind Harboe
2005-06-13 18:54     ` Bart Veer [this message]
2005-06-15  6:22       ` Øyvind Harboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050613185448.1D92265C057@smtp.ecoscentric.com \
    --to=bartv@ecoscentric.com \
    --cc=ecos-discuss@sources.redhat.com \
    --cc=oyvind.harboe@zylin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).