IT8172G on-board timers
Hello all,
I'm working with IT8172-based MIPS board and want to use one of (or may be both) on-board timers. For my purposes, it's required to generate irq from timer rarely, for example, each 1 sec, or each 5 sec or so. (The usage of Linux timer interface (init_timer() etc...) is forbidden, and I don't want to touch system timer to avoid the potential damage for basic timekeeping, scheduling, etc.). I have two problems:
- timer backward counter is 16-bit wide and reaches zero too fast, even starting from 0xffff;
- timer input clock may be one of CPU clock, CPU clock /4, CPU clock/8 or CPU clock /16, which looks very fast too
So, the minimum interrupt frequency from both timers is 96 ints/HZ (with TCR0.PST0 is 0 and TCVR0 is 0xffff) and the maximum is around 150000 ints/HZ. Even the minimum is too large for me...
It seems this question is much more about h/w than about Linux, but I hope someone has an experience with this arch :-) Is it possible to program on-board timer to generate interrupts with less frequency ?
Thanks,
Dmitry
Quoted 8 lines · Dmitry Antipov
Hello all,
I'm working with IT8172-based MIPS board and want to use one of (or may
be both) on-board timers.
For my purposes, it's required to generate irq from timer rarely, for example, each 1 sec, or each 5 sec
or so. (The usage of Linux timer interface (init_timer()etc...) is forbidden
Using linux timer seems perfect for the need. Why not? For an example of using timer you can take a look of my real time test suite
http://linux.junsun.net/preemp-test/
Quoted 4 lines
, and I don't want to touch
system timer to avoid the potential damage for basic timekeeping, scheduling, etc.). I have two problems:
- timer backward counter is 16-bit wide and reaches zero too fast, even
Quoted 9 lines
starting from
0xffff;
- timer input clock may be one of CPU clock, CPU clock /4, CPU clock/8 or CPU clock /16, which looks
very fast too
So, the minimum interrupt frequency from both timers is 96 ints/HZ (with TCR0.PST0 is 0 and
TCVR0 is0xffff) and the maximum is around 150000 ints/HZ. Even the minimum is too large for me...
You can write a driver that "accumlates" the interrupts until a desired duration is reached before it actually does anything useful.
Jun