RISC OS Sleeping
Colin Ferris (399) 1818 posts |
Is there anyway of RISC OS to slow down – when nothing is going on – a sort of sleep mode? |
Jeffrey Lee (213) 6048 posts |
The Wimp makes use of both Portable_Speed and Portable_Idle to slow the CPU and/or put it to sleep when it thinks the system is idle (it counts the number of idle poll events each second to gauge how busy the system is). There are also a few other places which use Portable_Idle, e.g. OS_ReadC if the keyboard buffer is empty, and OS_Byte 19. Of course these SWIs will only work if the Portable module is available. Modern machines (ARMv6+) have it available by default, but older machines (Iyonix, RiscPC) don’t. I know that for the past few years RPCEmu has provided emulated versions of some of the Portable SWIs, and I know that VirtualRPC has a fairly extensive implementation of the Portable module, but I’m not sure how it works or whether RedSquirrel supports anything similar (there is a version of the Portable module for the ARM7500 which implements Portable_Idle, so it’s possible that an emulator could provide support for that in a generic way) |
Chris Hall (132) 3558 posts |
The model 1 Pi does not do speed switching but the other models, 0, 2 and 3 do. |
Colin Ferris (399) 1818 posts |
Is there anyway of displaying Windows/RO info on whether any CPU saving is going on? (other than seeing if the chestnuts are cooking) :-| |
Malcolm Hussain-Gambles (1596) 811 posts |
There is !CPUClock – which shows CPU Freq and Temperature. |
Chris Evans (457) 1614 posts |
Chris Johnson’s excellent !CPUClock will on supported systems report the processor chip temperature1 (SoC to be more accurate) and the ambient case2 temperature. |
Chris Hall (132) 3558 posts |
I agree CPUClock is excellent. Doing a complex calculation (working out and arranging all of the possible CountDown numbers games in order of difficulty so that they can be listed) which takes 24min at 1500MHz (CPU temp rises to 72.8C with no intervention by CPUClock; with intervention the time rises to 30min but CPU temperature does not rise beyond 65C) using a machine code solver and ARMSort, I can watch the CPU temperature on my Titanium rising from 60C to 65C in four minutes at 1500MHz and see the processor slowed down by CPUClock to 1350MHz at which speed the CPU temperature drops back a little and rises much more slowly until after another five minutes CPUClock drops it to 1176MHz. Temperature falls to 60.8 then slowly to 60C when the speed is cranked up to 1350MHz again. This cycle then repeats (increase top speed at 60C and reduce it at 65C). I have the complex calculation running in a taskwindow so that I can see CPUClock’s status window. If I run the task in singletasking, then (as I understand it) the latest version of CPUClock will still moderate the CPU speed (which it does without requiring the singletaking task to call Wimp_Poll). Excellent! |
George T. Greenfield (154) 749 posts |
I have recently discovered CPUClock and I wholeheartedly agree, it is most useful, especially as I recently amended my Pi2’s Config file to increase sdram and core speeds to 500 and overvoltage to 2, which conferred a perceptible improvement in responsiveness (ROmark’s Rectangle copy speed increased by roughly 50%!) but at a cost of a 5-7 degree increase in core temp. I’ve accordingly raised the point at which the Pi throttles down (1000 > 600MHz) to 70 deg. from 65 – as the chip reset limit is 85 deg. I feel this is still a reasonable safety margin. |