[U-Boot] [RFC][Timer API] Revised Specification - Implementation details
Wolfgang Denk
wd at denx.de
Thu May 26 21:16:42 CEST 2011
Dear "J. William Campbell",
In message <4DDEA165.9010403 at comcast.net> you wrote:
>
> >> I think it is the task of get_ticks to return the hardware tick counter
> >> as an increasing counter, period. The counter may wrap at some final
> >> count that is not all ones. That is ok. Sync_timebase deals with the
> > NO! We want to be able to compute time differences using simple
> > unsigned arithmentics, even after a rollover of the counter. For this
> > it is mandatory that the counter always gets only incremented until it
> > wraps around at te end of it's number range, and never gets reset
>
> I agree that that is what must happen, but it should happen inside
> sync_timebase. Sync_timebase does what is needed to convert the
> less-than-fully capable counters into a fully capable one. You could
I think you also want this behaviour for get_ticks().
> To date, it has been shown conclusively that this process cannot be
> relied upon, or we wouldn't be having this discussion. If we put that
> functionality inside sync_timebase, it is in one place and debuggable
> once. All sync_timebase requires to do this is ticks per second and
> maximum tick value. I do request that counters that decrement be negated
> in the get_ticks routine, but beyond that, it should be a simple read of
> the tick register(s).
I think using ticks per second is not a good idea. It may exceed
ULONG_MAX, and having to use 64 bit for all calculations is probably
overkill. The existing ticks2usec/usec2ticks work fine so far.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As of 1992, they're called European Economic Community fries.
More information about the U-Boot
mailing list