[U-Boot] [RFC] Review of U-Boot timer API

Graeme Russ graeme.russ at gmail.com
Mon May 23 03:42:41 CEST 2011


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
 - 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)
 - 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)

Regards,

Graeme


More information about the U-Boot mailing list