All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC] Review of U-Boot timer API
Date: Mon, 23 May 2011 08:29:27 +0200	[thread overview]
Message-ID: <4DD9FEC7.2080909@aribaud.net> (raw)
In-Reply-To: <BANLkTinUuHN_YGpaS9o_eev04JhLFG_pEA@mail.gmail.com>

Hi all,

Sorry, could not follow the discussion although I find it very 
interesting, so I will handle the task of coming in late and asking the 
silly questions.

Le 23/05/2011 07:25, Graeme Russ a ?crit :

> On Mon, May 23, 2011 at 3:02 PM, J. William Campbell
> <jwilliamcampbell@comcast.net>  wrote:
>> On 5/22/2011 6:42 PM, Graeme Russ wrote:
>>>
>>> OK, so in summary, we can (in theory) have:
>>>   - A timer API in /lib/ with a single u32 get_timer(u32 base) function
>>>   - A HAL with two functions
>>>     - u32 get_raw_ticks()
>>>     - u32 get_raw_tick_rate() which returns the tick rate in kHz (which
>>>       max's out at just after 4GHz)
>>>   - A helper function in /lib/ u32 get_raw_ms() which uses get_raw_ticks()
>>>     and get_tick_rate() to correctly maintain the ms counter used by
>>>     get_timer() - This function can be weak (so next point)
>>>   - If the hardware supports a native 32-bit ms counter, get_raw_ms()
>>>     can be overridden to simply return the hardware counter. In this case,
>>>     get_raw_ticks() would return 1

Are you sure you did not mean 'get_raw_ticks_rate' here? Besides, I'd 
like the name to specify the units used: 'get_raw_ticks_rate_in_khz' (or 
conversively 'get_raw_ticks_per_ms', depending on which is simpler to 
implement and use).

>>>   - Calling of get_raw_ticks() regularly in the main loop (how ofter will
>>>     depend on the raw tick rate, but I image it will never be necessary
>>>     to call more often than once every few minutes)

That's to keep track of get_raw_ticks() rollovers, right? And then the 
get_timer function (which, again, I would prefer to have '... in ms' 
expressed in its name) would call get_raw_ticks() in confidence that at 
most one rollover may have occurred since the last time the helper 
function was called, so a simple difference of the current vs last tick 
value will always be correct.

>>>   - If the hardware implements a native 32-bit 1ms counter, no call in
>>>     the main loop is required
>>>   - An optional HAL function u32 get_raw_us() which can be used for
>>>     performance profiling (must wrap correctly)
>>
>> Hi All,
>>       Graeme, I think you have stated exactly what is the "best" approach to
>> this problem.  I will provide a version of "get_raw_ms" that is  initialized
>> using get_raw_tick_rate that will work for all "reasonable" values of
>> raw_tick_rate. This will be the "generic" solution. Both the initialization
>> function and the get_raw_ms function can be overridden if there is reason to
>> do so, like "exact" clock rates. I will do the same with get_raw_us. This
>> will be posted sometime on Monday for people to review, and to make sure I
>> didn't get too far off base. Thank you to both Graeme and Reinhard for
>> looking at/working on this.. Hopefully, this solution will put this timing
>> issue to rest for all future ports as well as the presently existing ones.

In Greame's description, I did not see a get_raw_ms, only a get_raw_us. 
Was this last one a typo or is that a third HAL function?

> Great - I am in the middle of cleaning up the current usages of the timer
> API, reducing it all down to get_timer() - I will then 'libify'
> get_timer() and setup the hooks into the HAL get_raw_ticks() and
> get_raw_tick_rate() API
>
> I think there will need to be a lot of cleanup, especially in arch/arm to
> get this to all fit
>
> Regards,
>
> Graeme

Amicalement,
-- 
Albert.

  reply	other threads:[~2011-05-23  6:29 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-21 12:38 [U-Boot] [RFC] Review of U-Boot timer API Graeme Russ
     [not found] ` <4DD7DB64.70605@comcast.net>
2011-05-22  0:06   ` Graeme Russ
2011-05-22  0:43     ` J. William Campbell
2011-05-22  4:26 ` Reinhard Meyer
2011-05-22  6:23   ` Graeme Russ
2011-05-22  7:21     ` J. William Campbell
2011-05-22  7:44       ` Graeme Russ
2011-05-22  8:15       ` Reinhard Meyer
2011-05-23  0:02         ` Graeme Russ
2011-05-23  0:20           ` J. William Campbell
2011-05-23  0:14         ` J. William Campbell
2011-05-23  1:00           ` Graeme Russ
     [not found]             ` <4DD9B608.7080307@comcast.net>
2011-05-23  1:42               ` Graeme Russ
2011-05-23  5:02                 ` J. William Campbell
2011-05-23  5:25                   ` Graeme Russ
2011-05-23  6:29                     ` Albert ARIBAUD [this message]
2011-05-23 10:53                       ` Graeme Russ
2011-05-23 16:22                       ` J. William Campbell
2011-05-23 12:09                 ` Wolfgang Denk
2011-05-23 12:29                   ` Graeme Russ
2011-05-23 13:19                     ` Wolfgang Denk
2011-05-23 17:30                       ` J. William Campbell
2011-05-23 18:24                         ` Albert ARIBAUD
2011-05-23 19:18                         ` Wolfgang Denk
2011-05-23 18:27                       ` J. William Campbell
2011-05-23 19:33                         ` Wolfgang Denk
2011-05-23 20:26                           ` J. William Campbell
2011-05-23 21:51                             ` Wolfgang Denk
2011-05-23 20:48                       ` Graeme Russ
2011-05-23  3:26           ` Reinhard Meyer
2011-05-23  5:20             ` J. William Campbell
2011-05-22  6:57   ` J. William Campbell
2011-05-23 12:13     ` Wolfgang Denk
2011-05-24  3:42 ` Mike Frysinger
2011-05-24  4:07 ` Graeme Russ
2011-05-24  4:24   ` Mike Frysinger
2011-05-24  4:35     ` Graeme Russ
2011-05-24  5:31       ` Reinhard Meyer
2011-05-24  5:43         ` Graeme Russ
2011-05-24  6:11           ` Albert ARIBAUD
2011-05-24  7:10             ` Graeme Russ
2011-05-24 14:15               ` Wolfgang Denk
2011-05-24 14:12             ` Wolfgang Denk
2011-05-24 15:23               ` J. William Campbell
2011-05-24 19:09                 ` Wolfgang Denk
2011-05-24 13:29           ` Scott McNutt
2011-05-24 14:19             ` Wolfgang Denk
2011-05-24 16:51               ` Graeme Russ
2011-05-24 18:59                 ` J. William Campbell
2011-05-24 19:31                   ` Wolfgang Denk
2011-05-24 19:19                 ` Wolfgang Denk
2011-05-24 22:32                   ` J. William Campbell
2011-05-25  5:17                     ` Wolfgang Denk
2011-05-25 16:50                       ` J. William Campbell
2011-05-25 19:56                         ` Wolfgang Denk
2011-05-25  0:17                   ` Graeme Russ
2011-05-25  2:53                     ` J. William Campbell
2011-05-25  3:21                       ` Graeme Russ
2011-05-25  5:28                       ` Wolfgang Denk
2011-05-25  6:06                         ` Graeme Russ
2011-05-25  8:08                           ` Wolfgang Denk
2011-05-25  8:38                             ` Graeme Russ
2011-05-25 11:37                               ` Wolfgang Denk
2011-05-25 11:52                                 ` Graeme Russ
2011-05-25 12:26                                   ` Wolfgang Denk
2011-05-25 12:42                                     ` Graeme Russ
2011-05-25 12:59                                       ` Wolfgang Denk
2011-05-25 13:14                                         ` Graeme Russ
2011-05-25 13:38                                           ` Wolfgang Denk
2011-05-25 21:11                                             ` Graeme Russ
2011-05-25 21:16                                               ` Wolfgang Denk
2011-05-25 23:13                                                 ` Graeme Russ
2011-05-26  0:15                                                   ` J. William Campbell
2011-05-26  0:33                                                     ` Graeme Russ
2011-05-26  4:19                                                   ` Reinhard Meyer
2011-05-26  4:40                                                     ` Graeme Russ
2011-05-26  5:03                                                       ` J. William Campbell
2011-05-26  5:16                                                         ` Wolfgang Denk
2011-05-26  5:25                                                           ` Graeme Russ
2011-05-26  5:55                                                             ` Albert ARIBAUD
2011-05-26  6:18                                                               ` Graeme Russ
2011-05-26  6:36                                                               ` Reinhard Meyer
2011-05-26  8:48                                                             ` Wolfgang Denk
2011-05-26  9:02                                                               ` Graeme Russ
2011-05-26  4:54                                                     ` J. William Campbell
2011-05-25  5:25                     ` Wolfgang Denk
2011-05-25  6:02                       ` Graeme Russ
2011-05-25  8:06                         ` Wolfgang Denk
2011-05-25  8:26                           ` Graeme Russ
2011-05-25 11:32                             ` Wolfgang Denk
2011-05-25 11:53                               ` Graeme Russ
2011-05-25 12:27                                 ` Wolfgang Denk
2011-05-25 12:36                 ` Scott McNutt
2011-05-25 12:43                   ` Graeme Russ
2011-05-25 13:08                     ` Scott McNutt
2011-05-25 13:16                       ` Graeme Russ
2011-05-25 13:46                         ` Scott McNutt
2011-05-25 14:21                           ` Graeme Russ
2011-05-25 19:46                             ` Wolfgang Denk
2011-05-25 20:40                               ` J. William Campbell
2011-05-25 20:48                                 ` Wolfgang Denk

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=4DD9FEC7.2080909@aribaud.net \
    --to=albert.u.boot@aribaud.net \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.