This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: RE : Understanding CYGNUM_HAL_RTC_PERIOD NUMERATOR DENOMINATOR


David Fernandez wrote:
On Thu, 2006-06-22 at 13:56 +0100, David Fernandez wrote:
On Wed, 2006-06-21 at 09:19 +0200, FALL wrote:
Good Day, I have successfully compiled and ran ecos on an oki platform.
I am however not understanding how to setup the NUMERATOR DENOMINATOR
RTC_PERIOD per my platform specs. I have read the documentation but I am
still not clear on what values I should use.  Specifically, my processor
is runningat 33Mhz, when the hal_clock_initialize is called, what is the
relationship between that and the above mentioned values.

Moussa
hi Moussa try this config:
cdl_component CYGNUM_HAL_CPUCLOCK {
display "cpu clock"
display "cpu clock (Mhz.)"
        flavor        data
        calculated 33000000
	no_define
	define -file system.h CYGNUM_HAL_CPUCLOCK
        description   "Frequency of cpu clock in Hz."
    }
....
# Real-time clock/counter specifics
    cdl_component CYGNUM_HAL_RTC_CONSTANTS {
        display       "Real-time clock constants"
        flavor        none

cdl_option CYGNUM_HAL_RTC_NUMERATOR {
display "Real-time clock numerator"
display "Real-time clock numerator (nanoseconds per second)"
flavor data
default_value 1000000000
}
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
display "Real-time clock denominator"
display "Real-time clock denominator (wraps per second)"
flavor data
default_value 100
}
cdl_option CYGNUM_HAL_RTC_PERIOD {
display "Real-time clock period"
display "Real-time clock period (ticks per wrap)"
flavor data
default_value (CYGNUM_HAL_CPUCLOCK/CYGNUM_HAL_RTC_DENOMINATOR) -1
}
}
The way I see that in my intel platform is as modified above.

The DENOMINATOR allows you to calculate ticks and specifies the OS timer
"tick" (usually 10 milliseconds)

The NUMERATOR allows you to convert periods into frequencies and
viceversa (periods in nanoseconds to/from frequencies in Mhz.)

The only reason you want to change DENOMINATOR is to get a different
time granularity in the OS.

The only reason you want to change the NUMERATOR is if you need to use
different units of periods or frequencies becuase may be that the
calculi you need to do exceeds the numerical capacity of your scalar
types.

David.

WARNING: The NUMERATOR value is used when programing some hardware timer... but hardware could impose limitations on this value that should be noted in the cdl legal_values..., lets say for example, that if your CPU/Timer frequency is very high, and your hardware timer counter register is small (16 bit for example), you can't get good values for small PERIODs, because won't fit in 0-65535 range.


This isn't strictly correct.

CYGNUM_HAL_RTC_NUMERATOR describes the granularity of the timer values. The default specifies nano-seconds.

CYGNUM_HAL_RTC_DENOMINATOR is how many times the system clock interrupts per second. This is simply
information to the kernel to know how to interpret time when it gets an RTC interrupt.


CYGNUM_HAL_RTC_PERIOD is the value which is programmed into your hardware "clock". It needs to be adjusted
so that the clock will generate interrupts at CYGNUM_HAL_RTC_DENOMINATOR/second.


Typically, one only needs to adjust CYGNUM_HAL_RTC_PERIOD based on the hardware. If you want the system 'tick'
to be faster than the default 10ms, then adjust CYGNUM_HAL_RTC_DENOMINATOR (and make sure that the value of
CYGNUM_HAL_RTC_PERIOD tracks)





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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]