[Tinyos-host-mote-wg] Re: [Tinyos-2.0wg] Meeting 8/31
Joe Polastre
joe.polastre at gmail.com
Wed Aug 31 04:03:28 PDT 2005
Rob and I are in Germany (with very bad phone and Internet access); I
believe Martin's email said he was in Asia. Since that's half of the
power management group, seems like you should postpone to next week.
-Joe
On 8/30/05, Philip Levis <pal at eecs.berkeley.edu> wrote:
> Wednesday, August 31, 2005 11:00 AM US Pacific Time Where: 8-356-2663,
> 916-356-2663, Bridge: 1, Passcode: 3967115
>
> 1-888-875-9370 (US non-intel employees)
> 0-800-1000-104 (Germany)
>
> Agenda:
>
> 1) Pre2 release cheer (hopefully)
> 2) Try to write a paper for NSDI?
> 3) Status: serial stack, CC2420/micaZ, etc.
> 4) Power management discussion
>
> Is there anything else people would like to discuss?
>
> This is the message I sent out to the power management subgroup (did
> I miss someone? some part of me thinks Vlado might have been in the
> subgroup? I forget):
>
> *****************
>
> From: pal at eecs.berkeley.edu
> Subject: 2.x power management
> Date: August 28, 2005 5:13:59 PM PDT
> To: rob at moteiv.com, mturon at xbow.com, lama.nachman at intel.com,
> culler at eecs.berkeley.edu
>
> The current proposal on the table involves a hybrid solution, where
> the platform computes its best guess at a low power state based on
> hardware configuration, but components can override this with a
> 'latency' specification. I think that there's no reason we can't
> unify these two, where the latency specification is merely an input
> to the platform (another piece of state it considers).
>
> This means that, the power state of the MCU is implicit, based on the
> power state of all of the peripherals and the specified maximum
> wakeup latency. So, you'd see something like this:
>
> RadioControl.off();
> TempControl.off();
> StorageControl.off();
> LatencyControl.maxWakeup(1000); // I'm guessing us is the parameter,
> so 1 ms here
>
> Then the platform does something like it does today:
>
> inline void TOSH_sleep() {
> // The LPM we can go down to depends on the clocks used. We never go
> // below LPM3, so ACLK is always enabled, also TimerB clock source
> // is assumed to be ACLK.
> // We check MSP430's TimerA, USART0/1, ADC12 peripheral modules if
> they
> // use MCLK or SMCLK and switch to the lowest LPM that keeps
> // the required clock(s) running.
> extern uint8_t TOSH_sched_full;
> extern volatile uint8_t TOSH_sched_free;
> __nesc_atomic_t fInterruptFlags;
> uint16_t LPMode_bits = 0;
>
> fInterruptFlags = __nesc_atomic_start();
>
> if ((LPMode_disabled) || (TOSH_sched_full != TOSH_sched_free)) {
> __nesc_atomic_end(fInterruptFlags);
> return;
> } else {
> LPMode_bits = LPM3_bits;
> // TimerA, USART0, USART1 check
> if ( (((TACCTL0 & CCIE) || (TACCTL1 & CCIE) || (TACCTL2 & CCIE))
> && ((TACTL & TASSEL_3) == TASSEL_2))
> || ((ME1 & (UTXE0 | URXE0)) && (U0TCTL & SSEL1))
> || ((ME2 & (UTXE1 | URXE1)) && (U1TCTL & SSEL1))
> #ifdef __msp430_have_usart0_with_i2c
> // registers end in "nr" to prevent nesC race condition detection
> || ((U0CTLnr & I2CEN) && (I2CTCTLnr & SSEL1) &&
> (I2CDCTLnr & I2CBUSY) && (U0CTLnr & SYNC) && (U0CTLnr & I2C))
> #endif
> )
> LPMode_bits = LPM1_bits;
> #ifdef __msp430_have_adc12
> // ADC12 check
> if (ADC12CTL1 & ADC12BUSY){
> if (!(ADC12CTL0 & MSC) && ((TACTL & TASSEL_3) == TASSEL_2))
> LPMode_bits = LPM1_bits; // TimerA for ADC12
> else
> switch (ADC12CTL1 & ADC12SSEL_3){
> case ADC12SSEL_2: LPMode_bits = 0; break;
> case ADC12SSEL_3: LPMode_bits = LPM1_bits; break;
> }
> }
> #endif
> LPMode_bits |= SR_GIE;
> __asm__ __volatile__( "bis %0, r2" : : "m" ((uint16_t)
> LPMode_bits) );
> }
> }
>
> with some additional conditions to make sure it doesn't go beyond the
> latency.
>
> This is the HIL layer: there can certainly be HAL abstractions that
> provide more fine grained control, but they are understandably
> hardware-specific. With these mechanisms, one can create higher-level
> policies. E.g., a service distribution could have a component
> SensorPower, which with a single call to StdControl turns on/off ALL
> of the sensors in the system.
>
> What are people's opinions on this approach?
> ******
>
> Phil
>
> -------
>
> "We shall not cease from exploration
> And the end of all our exploring
> Will be to arrive where we started
> And know the place for the first time."
>
> - T. S. Eliot, 'Little Gidding'
>
>
>
>
> Phil
>
> -------
>
> "We shall not cease from exploration
> And the end of all our exploring
> Will be to arrive where we started
> And know the place for the first time."
>
> - T. S. Eliot, 'Little Gidding'
>
> _______________________________________________
> Tinyos-2.0wg mailing list
> Tinyos-2.0wg at Mail.Millennium.Berkeley.EDU
> https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-2.0wg
>
_______________________________________________
Tinyos-2.0wg mailing list
Tinyos-2.0wg at Mail.Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-2.0wg
More information about the Tinyos-host-mote-wg
mailing list