[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] usleep
another approach here could be the hardware (don't forget the whole
thing is configurable platform) a dedicated peripheral will give
accurate timing and will leave CPU time for other "high level" things.
my 2 penny
John Williams wrote:
> Hi Jay, Yasshi,
> Yasushi SHOJI wrote:
>> At Mon, 25 Oct 2004 13:53:44 -0600,
>> Jay Norrish wrote:
>>> I am trying to use the usleep() function to
>>> put my application to sleep while my peripherals
>>> do data acquisition but, I have not been able to get
>>> the function to have a resolution of less than 10ms
>>> which is the tick rate.
> A quick surf in the sources explains why - the usleep() lib call
> translates to a nanosleep() syscall, which is implemented in the
> kernel with a schedule_timeout(). At first glance, the only way
> you'll get a wakeup before 10ms is if you are under heavy interrupt
> load from a ping flood or similar.
> It seems this is an established limitation of usleep. I see some
> mailing list threads proposing ways to improve it etc, but none of
> these have been implemented in microblaze.
>>> I know I could change the tick rate
>>> with the #define HZ in the mb_vannilla.h file but I am worried that
>>> it will
>>> break other programs.
>> I wouldn't recommend to change HZ for 2.4, if you don't know the
>> kernel internal. it might or might not work.
> Oh but it's definitely worth a try! ;-) Please let us know what
>>> Is there another function or way to do this ?
>> use bigger fifo and/or interrupt. even with those, timing is not
>> guaranteed. Linux is not a realtime os after all.
> Perhaps you might consider a sort of busy-wait loop with calls to
> gettimeofday() - it offers near microsecond resolution. It's not very
> friendly to other processes in the system, but if your wait is much
> shorter than the tick interval (which it must be, otherwise usleep()
> would suffice), then it mightn't matter too much.
> microblaze-uclinux mailing list
> Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
> Mailing List Archive :
microblaze-uclinux mailing list
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/