FreeClock

FREE, Open Source Over/Underclocker/Noise Reduction Utility for PXA-270/Zire72

Original Version (1.0):
Download freeclock10.zip
Download freeclock.prc

Experimental Version (1.0d):
Download freeclock10d.zip
Download freeclock10d.prc

Overview

(4/21/05) New version (1.0d). I changed the ARM code buffer to use stack space rather than a call to MemPtrNew(). Give it a try, it seems to be more stable for me, though I'm still more or less grasping at straws. Please keep sending me your reports on how its working! (email me).

(4/14/05) More -- I think I've improved the stability situation. Still experimental. Please try version 1.0b. It seems to be unstable currently when the "Maintain Settings" checkbox is selected. For now I'd recommend using just the "Reduce Noise" checkbox. (4/14/05) Even more -- 1.0c is here

(4/13/05) Update! Lightning finally struck and the program stopped working for me! Suddenly, it always gave me a fatal exception just like so many people have emailed me about. Anyway, I think I have figured the problem out. I think that the call to the ARM code only works if the call to the ARM code is strongly aligned. But with the Palm OS memory manager, there is no guarantee that it will be. Thus, depending on where the memory manager sticks the program, it will either work for you or cause a fatal exception.

My solution is to copy the arm code into a temporary buffer that I know is aligned before calling it. It seems to be working for me! I haven't had a chance to thoroughly test stability though, and it looks like it is a bit unstable right now, so I am calling this new version (1.0a) experimental. If the program is working for you as is, stick with 1.0. But if you normally get the fatal exception error, please try the new version! By the way, constantly hearing the "scream" emitted by my Z72's screen for several days almost drove me insane. If this new version helps you escape that fate, then please help spread the word to people who tried it before but gave up after getting the fatal exception!

As always, anyone who can help understand these problems or report your experiences with the program please email me.

FreeClock is a new, free, open source Palm OS overclocking application for the Xscale PXA-270. It is specifically tested only on the Zire 72.

While not yet as full featured as the commercial alternatives, FreeClock is free, has no nagging, expiration dates, or registration codes, and comes with full source code.

Of particular interest to Zire 72 owners is the capability to reduce/eliminate the annoying screen whine/buzz with which they may be familiar.

While the present version is only written for the Zire 72, it will likely work on other PXA-270 Palms and most of the code should be applicable to other XScale processors. I encourage everyone to hack around and send me patches so that the software can continue improving and we can establish free overclocking for all Palm PDA users!

As far as I know, this program hasn't damaged anybody's PDA, but it is to be used at your own risk!

Bugs

* The initial version suffers from a "Fatal Exception" bug that affects some users that is hopefully fixed in the new version (1.0a)
* The program doesn't work very well with the Zire 72 Camera application. Best to disable FreeClock before running Camera

Technical

The buzzing noise we are all familiar with seems to be directly related to the Pixel Clock on the XScale LCD controller (NOT directly related to the system bus or CPU speeds!) The Zire 72 sets the Pixel Clock to 6.5MHz.

The solution employed by FreeClock is to directly modify the Pixel Clock frequency to raise the frequency above the threshold of hearing. A Pixel Clock of 13MHz is high enough to achieve satisfactory results. This is done each time the clock is modified and each time the Zire resets the display.

Unanswered Questions

* Why does the Zire sometimes slow down slightly when I manually set the clock speed to the default 312MHz? My Speedy score goes down from ~350 to ~315. After turning the Zire off, then on, the speed is back to full speed (but the noise is still gone)

Resources

Intel® PXA27x Processor Family Developer's Manual - Definitive guide to the task at hand. Note that on the Zire 72, at least, the Internal Registers at physical adresses in the range 0x40000000 - 0x4FFFFFFF have been mapped to 0x90000000 - 0x9FFFFFFF.