Page 1 of 1

Power Consumption MOD5441X

Posted: Thu Mar 13, 2014 8:24 pm
by roland.ames
Because of high temperatures, I have been asked to reduce the power consumption of the MOD5441X.

I have seen http://forum.embeddedethernet.com/viewt ... f=3&t=1738

so I can disable unused clocks, is anyone aware of any other aproaches to reducing power consumption

BTW, I never got a response to http://forum.embeddedethernet.com/viewt ... 7675#p7675

Can you tell me which of these clocks must be left on as it is being used by the NetBurner library.

I assume: PIT0, DDR, PLL, MACNET_0, MACNET_1, ETHERNET_SWITCH_0, ETHERNET_SWITCH_1, are all used, are there any other clocks that I should not disable?

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 10:11 am
by mbrown
You'll need the following clocks plus any peripheral clocks to modules you use to run any Netburner applications on the MOD54415: Flexbus, uart0 (or 1 depending on if and where you're streaming serial information for your application), ddr, pll, macnet0, pit0, intc0-2. The other clocks you mentioned, macnet1, ethernetswitches0-1 I don't believe are included on the MCF54415. Other processors in the same family may have them, but I don't think this specific processor does. This should be everything you need. If something seems broken, ie. the ethernet connection, you should be able to re-program your module over serial still and you should additionally re-enable the edge-port module.

This will turn off everything in your module except the ethernet and the serial connection you would normally see over mttty (You can even turn off serial if you're really not using it, but it's a good way to recover your device if you can't recover over the network, so I wouldn't recommend it.). If you want anything else you use in your application, ADCs, DACs, I2C, SPI, etc., you'll have to of course re-enable them.

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 10:23 am
by mbrown
Actually,

If something breaks and you need to recover, the faster way is probably to set the alternate monitor jumper and use autoupdate over the alternate monitor. You should be able to test things out and regardless of whether or not something breaks, you should always be able to recover out of the alternate monitor.

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 11:49 am
by pbreed
PIT0 DDR, Flexbus and macnet0... not sure if the ethernet switch stuff is needed... (not used on 54415)

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 11:50 am
by pbreed
Can probably turn down the speed on the flex bus that might help as well...

One might also replace the idle kloop with a halt...

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 6:47 pm
by roland.ames
thanks for the feedback. within the next week or two I will be able to experiment and I will post back with any results

Re: Power Consumption MOD5441X

Posted: Wed Mar 26, 2014 8:09 pm
by roland.ames
pbreed wrote:Can probably turn down the speed on the flex bus that might help as well...
I am already setting the FB_HALF bit in MISCCR2.

pbreed wrote:One might also replace the idle kloop with a halt...
I have my own non-blocking task at priority 62. But I am considering changing this so that it triggers on a regular interval instead of just looping around as fast as possible. This would leave some time where the processor is idle and could be in a low-power mode.

from ucos.c

Code: Select all

/*
************************************************************
*                       IDLE TASK
************************************************************
*/
static void OSTaskIdle( void *data )
{
   data = data;
   while ( 1 )
   {
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      asm ( " NOP" );
      //      OS_IDLE_LOOP()
   }
}
If I did just replace the "NOP"s with "HALT", is the system going to 'wake up' whenever any task needs to do something? or do I need to do something extra to make sure?

Re: Power Consumption MOD5441X

Posted: Mon Mar 31, 2014 9:39 am
by mbrown
Really, what you need to do is ensure that if you're going to be running a unit in one of the lower power states, you're not shutting down any of the modules that you would normally need to run your tasks. All of the lower power states shut down the core, but most leave the peripherals running and calls from say the ethernet module or an interrupt pin will wake up the processor again to process whatever needs to happen. If you're going to be doing this, avoid any of the modes that shut down the modules we mentioned above. I believe the appropriate things you'll need to insert are

sim2.scm.wcr |= 0x90;
asm ( " STOP #0x2000" );

The first line enables the first low power mode and the second stops the processor with any interrupt re-enabling it. Using a HALT will stop the processor completely and I don't believe the core gets woken up again by interrupts or the like. If anyone knows differently from having done so here, feel free to correct me.

Building with NNDK tools 2.6.5 running a basic webserver and replacing the idle nops with those two lines only, you'd be saving about 50mA while idle it appears. I have a bench supply hooked up to my unit and normally it pulls .42A at 3.3V versus in Wait or Doze mode, it pulls .36 or .35A at 3.3V. Stop mode kills the DDR controller and you can't wake up from it properly. Unless you're using the USB section, Wait and Doze generally disable the same things, so it makes sense that the power output is about the same. You can still probably save more power disabling the sections of the processor you're not using.