Project: Reduce Current Consumption :)


Squidge

Certified Guru
Joined
Nov 16, 2003
Messages
8,493
Location
UK
Website
Visit site
Main power @ 3.6V. System idle (no screen updates, but LCD, backlight + telnet active)
Firmware 2.0.

32Mhz - ~240mA
64Mhz - ~260mA
96Mhz - ~270mA
128Mhz - ~290mA
160Mhz - ~300mA
192Mhz - ~320mA
224Mhz - ~330mA
256Mhz - ~350mA
285Mhz - ~360mA

Anything higher crashes my gp2x :(

"Standard" speeds:

200Mhz - ~320mA
240Mhz - ~340mA

When application constantly updates frame buffer, current consumption is increased by approximately 40mA

Next project: How low can I get the current consumption? I'm thinking of a "standby" feature, so you can pause emu's and the like, and the system goes into a low-power mode. Maybe do that by putting the processor into some kind of sleep mode with perhaps some kind of wake on interupt, disable the net2272, backlight, lcd, and anything else we can. Ground all unused gpio pins to prevent leakage, etc...

Linux may not like it too much, mind, but it doesn't really have a choice :D
 
Would it be possible to have an auto-system that changes the clockrate based on program demand? So if the demand is low, clockrate goes down, demand goes up, so does the processor...or would this be impossible? Just a thought ;)

What about something like this;

You set up a script file, and it goes like this:

/mnt/sd/program.gpe 150
/mnt/sd/emulator.gpe 175
/mnt/sd/pong.gpe 100

And so on, so forth. It'd be nice to have a system that could save you battery life like that, of course you'd need to discover which clockrates work best, but then those can be shared with the community, and you could have a public list of the best speeds to run programs at - saving battery life for all :)

Single scripts are alright, but I wouldn't want one for every single program.
 
Squidge posted on Jul 8 2006 at 10:57 AM said:
Main power @ 3.6V. System idle (no screen updates, but LCD, backlight + telnet active)
Firmware 2.0.

32Mhz - ~240mA
64Mhz - ~260mA
96Mhz - ~270mA
128Mhz - ~290mA
160Mhz - ~300mA
192Mhz - ~320mA
224Mhz - ~330mA
256Mhz - ~350mA
285Mhz - ~360mA

Anything higher crashes my gp2x :(

"Standard" speeds:

200Mhz - ~320mA
240Mhz - ~340mA

When application constantly updates frame buffer, current consumption is increased by approximately 40mA

Next project: How low can I get the current consumption? I'm thinking of a "standby" feature, so you can pause emu's and the like, and the system goes into a low-power mode. Maybe do that by putting the processor into some kind of sleep mode with perhaps some kind of wake on interupt, disable the net2272, backlight, lcd, and anything else we can. Ground all unused gpio pins to prevent leakage, etc...

Linux may not like it too much, mind, but it doesn't really have a choice :D
Interesting stuff! The standby mode could be quite useful.

Also interesting: A normal game which is updating the frame buffer running at 200 mhz would then consume about 360 mA. More with sound I guess (there must be some reason that we don't get 7 hours of gameplay out of our 2500 mAh batteries). At 100mhz, that's 310 mA, or a savings of about 14%. So those games that can be underclocked that way without suffering will get a small increase in battery life, which is useful, but it's not a very large boost.
 
Last edited by a moderator:
Vynx posted on Jul 8 2006 at 05:27 PM said:
You set up a script file, and it goes like this:

/mnt/sd/program.gpe 150
/mnt/sd/emulator.gpe 175
/mnt/sd/pong.gpe 100


program writers can set a speed themselves, so the authors of a pong can set it to 75mhz by default,
if it's enough to run on their gp2x, it's enough on anybody's ;)

scripts are only good to get over the lack of optimisation ;)
 
Last edited by a moderator:
that's curious
I try to measure the current by using CPU / LCD tweaker to set clock rate and let it idle on the main menu

My amperimeter says something between 240 and 280 mA on 33mhz and pretty much stays the same in 240mhz (I could go further on 280mhz, but I think that's enough to invalidate the testing)

other curious behaivor, the found top consumption is when gp2x halts (on any speed)!
on loading, it demands 400/500mA, but if by any reason boot process fails then current goes up to 1A and stays there until you shut it down

now, trying on DrMD running Alien Soldier paused to maintain same load, no sound:
40mhz - ~250mA
70mhz - ~290mA
100mhz - ~330mA
130mhz - ~370mA
160mhz - ~410mA
190mhz - ~450mA
220mhz - ~500mA
250mhz - ~560mA
280mhz - ~650mA
290mhz - ~950mA (oops, halted!)

Squidge posted on Jul 8 2006 at 04:57 PM said:
Main power @ 3.6V. System idle (no screen updates, but LCD, backlight + telnet active)
Firmware 2.0.

32Mhz - ~240mA
64Mhz - ~260mA
96Mhz - ~270mA
128Mhz - ~290mA
160Mhz - ~300mA
192Mhz - ~320mA
224Mhz - ~330mA
256Mhz - ~350mA
285Mhz - ~360mA

Anything higher crashes my gp2x :(

"Standard" speeds:

200Mhz - ~320mA
240Mhz - ~340mA

When application constantly updates frame buffer, current consumption is increased by approximately 40mA

Next project: How low can I get the current consumption? I'm thinking of a "standby" feature, so you can pause emu's and the like, and the system goes into a low-power mode. Maybe do that by putting the processor into some kind of sleep mode with perhaps some kind of wake on interupt, disable the net2272, backlight, lcd, and anything else we can. Ground all unused gpio pins to prevent leakage, etc...

Linux may not like it too much, mind, but it doesn't really have a choice :D
 
Last edited by a moderator:
If you have fw2.0, then as soon as you return to the main menu, clock speed is reset to default value, so you should always see the same current consumption.

As for you 1amp reading, I think that maybe is a feature of your meter - perhaps if the current consumption is too great for it to measure, it defaults to showing 1A instead? What kind of resistor are you using to measure the current btw?
 
Squidge posted on Jul 8 2006 at 08:56 PM said:
If you have fw2.0, then as soon as you return to the main menu, clock speed is reset to default value, so you should always see the same current consumption.

As for you 1amp reading, I think that maybe is a feature of your meter - perhaps if the current consumption is too great for it to measure, it defaults to showing 1A instead? What kind of resistor are you using to measure the current btw?
Yeah, I thought something like that would be going..

My multimeter can handle up to 10A (10s max in end-of-scale), but it's not a end-of-scale case anyway

I forgot to mention, I'm using a home made 3.3V PSU (+5Vdc source -> 0.47ohm res -> 2 3.3V/5W zener diodes)
 
Last edited by a moderator:
Lint posted on Jul 8 2006 at 03:05 PM said:
Squidge posted on Jul 8 2006 at 08:56 PM said:
If you have fw2.0, then as soon as you return to the main menu, clock speed is reset to default value, so you should always see the same current consumption.

As for you 1amp reading, I think that maybe is a feature of your meter - perhaps if the current consumption is too great for it to measure, it defaults to showing 1A instead? What kind of resistor are you using to measure the current btw?
Yeah, I thought something like that would be going..

My multimeter can handle up to 10A (10s max in end-of-scale), but it's not a end-of-scale case anyway

I forgot to mention, I'm using a home made 3.3V PSU (+5Vdc source -> 0.47ohm res -> 2 3.3V/5W zener diodes)
Aaaaaaaaaaah!!!! Stop right now and just use the internal voltage regulator by applying the voltage to the battery terminals. Use the Diodes if you must, but wouldn't it be smarter to have the GP2X's power regulator do the work it was designed for?

@Squidge
I notice you read it at 3.6v, what is your draw at battery voltage? 1.4 * 2 = 2.4 volts (Unless you have done a 3-Cell mod that I don't know of :)).

Also, did you test up to 5.28 volts into the battery terminal regulator? I want to use 4 NiMH so that the GP2X and the USB devices can both be powered off of the same battery pack, for simplicity's sake.

All I need to do is find a place for two more cells :).
 
Last edited by a moderator:
nubie posted on Jul 8 2006 at 11:42 PM said:
Aaaaaaaaaaah!!!! Stop right now and just use the internal voltage regulator by applying the voltage to the battery terminals. Use the Diodes if you must, but wouldn't it be smarter to have the GP2X's power regulator do the work it was designed for?

@Squidge
I notice you read it at 3.6v, what is your draw at battery voltage? 1.4 * 2 = 2.4 volts (Unless you have done a 3-Cell mod that I don't know of :)).

Also, did you test up to 5.28 volts into the battery terminal regulator? I want to use 4 NiMH so that the GP2X and the USB devices can both be powered off of the same battery pack, for simplicity's sake.

All I need to do is find a place for two more cells :).
Yeap, it would be much easier to develop using at leat a 3.6V/3.9V zener diode, wich would require less current and -- under applicable load -- would have still the same 3.3V as the nominal voltage rating

BUT, I have my gp2x for less than one week so far, and I'm not going to put it on risk of burning its power regulator, so the first rule on my USB-powered gp2x is that it would never go beyond 3.3Vdc :ph34r:

Would be nice if people post which voltage rating they already used without burning up the voltage regulator, as last time I checked about, nobody said exactly what's the (possible) maximum safe voltage
and also gp2x is not a linear regulator AFAIK, but not sure, which waste much less energy than mine
 
Last edited by a moderator:
nubie posted on Jul 9 2006 at 12:42 AM said:
I notice you read it at 3.6v, what is your draw at battery voltage? 1.4 * 2 = 2.4 volts (Unless you have done a 3-Cell mod that I don't know of :)).

Also, did you test up to 5.28 volts into the battery terminal regulator? I want to use 4 NiMH so that the GP2X and the USB devices can both be powered off of the same battery pack, for simplicity's sake.

The tests I did above were connected to the DC IN jack, and the 3.6V was provided by a mains adaptor (0-30V, 10amp psu).

I tested upto 4V on the battery compartment back in December last year -> http://www.gp32x.de/board/index.php?showtopic=23995

I have noticed however that as soon as you go over 3.9V, the LCD display starts to dim quite noticably by the amount you go over by. It seems quite dark at 4.8V (compared to 3.9V), so I wouldn't like to put 5.28V through iit.
 
Last edited by a moderator:
Squidge- Aren't other components tied to the same PLL as the ARM920T? Most noticably, LCD hardware. It's my understanding these could be separated via software and reallocated to different PLLs, so 920T clock could be more freely adjusted without a large impact on battery life (the ARM9 should use only fractions of ONE watt even at >300 MHz.) By this logic perhaps it is also possible to lower the clockrate to, or disable entirely, power-hungry components like the video processor or scaler units (also TV out hardware in whatever capacity it may be active when not actually attached to a TV) when not in use, all of which appear to use enormously more power than the ARM9s.
 
Well, I've managed to get the current down from 420mA (playing Super Mario World under SquidgeSNES at 200Mhz @ 3.6V mains psu) to 130mA. That's a 290mA saving. 180mA of that was saved from the ARM9, 40mA was saved by disabling the backlight, 40mA from disabling the netchip, and approximately 30mA saved by disabling various mmsp2 additional functionality. I've not managed to recover from this tho'. However, I can recover if I just make a saving of 280mA instead of 290mA. (The last 10mA disabled most of the mmsp2 clocks, which also includes one that provides clocks to the arm9 itself).

Disabling the CX25874 doesn't seem to make any different to the current consumption, although current consumption is increased by a large amount when TV mode is enabled, so I can only assume this chip is snoozing most of the time.

I've no idea where the other 130mA is going, and I've no plans to start lifting tracks or ripping components of the board to find out :p
 
Squidge posted on Jul 9 2006 at 02:58 PM said:
Well, I've managed to get the current down from 420mA (playing Super Mario World under SquidgeSNES at 200Mhz @ 3.6V mains psu) to 130mA. That's a 290mA saving. 180mA of that was saved from the ARM9, 40mA was saved by disabling the backlight, 40mA from disabling the netchip, and approximately 30mA saved by disabling various mmsp2 additional functionality. I've not managed to recover from this tho'. However, I can recover if I just make a saving of 280mA instead of 290mA. (The last 10mA disabled most of the mmsp2 clocks, which also includes one that provides clocks to the arm9 itself).

Disabling the CX25874 doesn't seem to make any different to the current consumption, although current consumption is increased by a large amount when TV mode is enabled, so I can only assume this chip is snoozing most of the time.

I've no idea where the other 130mA is going, and I've no plans to start lifting tracks or ripping components of the board to find out :p
That's great news! Congrats! How does the game look without backlight?
 
Last edited by a moderator:
Squidge posted on Jul 9 2006 at 01:58 PM said:
Well, I've managed to get the current down from 420mA (playing Super Mario World under SquidgeSNES at 200Mhz @ 3.6V mains psu) to 130mA. That's a 290mA saving. 180mA of that was saved from the ARM9, 40mA was saved by disabling the backlight, 40mA from disabling the netchip, and approximately 30mA saved by disabling various mmsp2 additional functionality. I've not managed to recover from this tho'. However, I can recover if I just make a saving of 280mA instead of 290mA. (The last 10mA disabled most of the mmsp2 clocks, which also includes one that provides clocks to the arm9 itself).

Disabling the CX25874 doesn't seem to make any different to the current consumption, although current consumption is increased by a large amount when TV mode is enabled, so I can only assume this chip is snoozing most of the time.

I've no idea where the other 130mA is going, and I've no plans to start lifting tracks or ripping components of the board to find out :p


What good is playing Super Mario World with the backlight off? :huh:
 
Last edited by a moderator:
couldnt the netchip be turned off all the time?
Would you mind to provide code to do so so it could be made into a small app/maybe added to the lcd tweaker?
 
Keep it up Squidge. B) Maybe there are still other things that can be turned of. ;) Are you planning on releasing this code as an app? :huh:
 
Back
Top