This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#8668 - battery runtime: experimental gui boost
Attached to Project:
Rockbox
Opened by Andree Buschmann (Buschel) - Saturday, 01 March 2008, 14:45 GMT+2
Last edited by Andree Buschmann (Buschel) - Friday, 02 May 2008, 14:05 GMT+2
Opened by Andree Buschmann (Buschel) - Saturday, 01 March 2008, 14:45 GMT+2
Last edited by Andree Buschmann (Buschel) - Friday, 02 May 2008, 14:05 GMT+2
|
DetailsWe could take this kind of "quick-and-dirty" solution as a starting point for further work on GUI boost for iPod's.
The attached patch does the following: - returning BUTTON_SCROLL_BACK/BUTTON_SCROLL_FWD out of scrollwheel driver (which was missing before) - boost CPU on each received button and unboost after 1s, if the were no further button events This patch should work for all iPod's with a 4G scrollwheel for now. |
This task depends upon
Remark 1: mpc-playback without WPS needs ~26.5MHz. With this patch the runtime is about 14.5h (svn = 14h).
Remark 2: flac-playback without WPS needs ~15MHz. I hope to see runtime >16h with this patch -- measurement will follow.
Remark 3: This patch is just to get an impression of the gui boost and to go ahead for the maximum possible runtime, it does not take any care about plugin-behaviour. This patch is no svn-candidate.
Remark 4: Should also work for non-iPod PP-targets.
--------------------------------------------------
Battery bench results with gui boost (@15MHz) and disabled lineout (details attached):
MPC:
overall = 14:24h
90%-10% = 12:09h
FLAC:
overall = 12:46h
90%-10% = 11:10h
FLAC saves a lot of current via very low CPU-usage (~4mA vs. MPC), but needs a lot of additional current for the buffering from HDD (~7.5mA vs. MPC).
--------------------------------------------------
Attached a 3rd version of gui boost with 24MHz normal clock -- as this seems to be more effective than running @15MHz normal clock (gui_boost_v03.patch).
MPC:
overall = 14:42h
90%-10% = 12:31h
(for a 5.5G 30GB of course)
Let me know!
I hope this is helpful, let me know if you want any more tests run.
From discussions on irc the solution provided here is not wanted in svn. Until there has a proper solution been found, I will just keep using this implementation as I am not experiencing any issues with gaming (I just never used games :)
I have updated the patch against r20076. Patch v6 uses 100MHz maximum clock for PP5022/24 and keeps 80MHz for PP5020. As this runs stable on my 5.5G for >1 year now I do not expect any drawbacks. Main advantage is faster buffering which may save some power on the HDD-targets.
Also, it's a total pipe dream, but I totally wish there was some sort of advanced mode for rbutil that you could feed patches. I don't mind the process terribly, but it's a process nonetheless.
Thanks again!
Other discussed approaches try to boost the CPU each time an update of the display (drawing) is taking place. Doing so will need seemless clockswitching (no sync time for PLL) to be able to boost/unboost several times per second. Nevertheless I do personally not like this idea as I expect rockbox to waste power for unneeded boosting: e.g. WPS-updates run smooth @24MHz, but they will be boosted then. Therefor rockbox would need to use a very low normal clock (<24MHz) which allows the codecs to use such boosts for buffer filling -- otherwise the boost for e.g. WPS-updates come on top of the codec boosts. But very low clocks (I have done runtime measurements with 15MHz, see above) seem to be less efficient in terms of mA/MHz.
Either way, I'll probably make use of this patch for a while. I appreciate it.
I like the idea though of having the overclocking being used when drawing is occuring, that would most likely help with the overall smoothness of games and the OCing of the just the general screen!
There are some discussions going about alternative solutions for gui boost -- like boosting while drawing.
I hope the attached 80MHz-version is patchable (cannot test at work). Otherwise I'll update in a few hours.
The version using current_tick does not appear to fix the issue.