Automedida de consumo en dispositivos portables Julián Oreggioni, Leonardo Steinfeld XIX Iberchip...
-
Upload
juan-luis-lopez-pineiro -
Category
Documents
-
view
215 -
download
0
Transcript of Automedida de consumo en dispositivos portables Julián Oreggioni, Leonardo Steinfeld XIX Iberchip...
Automedida de consumo en dispositivos portables
Julián Oreggioni, Leonardo Steinfeld
XIX Iberchip Workshop, Cusco, Perú, 01/mar/2013
Agenda
•Problema a resolver
•Solución propuesta
•Conclusiones
•Preguntas
Problema a resolver
•Medir el consumo de energía en tiempo real.
•No utilizar instrumentos externos.
¿Para qué?
•Optimización de código fuera de un laboratorio.
•Toma de decisiones en tiempo de ejecución.
Posibles soluciones
•Medida de corriente e integrar.
•Caracterizar el consumo de tareas (SW).
•Medida de la (des)carga de capacitores.
Agenda
•Problema a resolver
•Solución propuesta
•Conclusiones
•Preguntas
(Des)Carga de capacitores
∆Q = C * ∆V
Método de medida
Mejora en el método
∆Q = C * ∆V
Claves del diseño
•Poco invasivo.
•Fácil incorporación.
•Bajo consumo.
SEM
Self Energy Meter
Configuraciones
#ifdef
sem_core.h
void sem_init(void); void sem_reset_global_meter(void);float sem_get_global_meter(void);void sem_start_partial_metering(void);void sem_get_partial_metering(void (*callback_fn)(float));
Tip: registro callback
void adc_start(void (*callback_fn)(float)){ adc_registered_callback_fn = callback_fn; // register callback // start conversion ......}
void adc_isr(){ // rutina de atencion a la interrucion del ADC Nadc=ADC10MEM; Vin = Vcc*Nadc/ADC_FSR; adc_registered_callback_fn(Vin); // Execute registered }
void sem_start_partial_metering(){ q_partial = 0; adc_start(_update_vc_initial_new_partial);}
Tip: Hardware
¡Vin == Vcc!
NADC=1023xVin/Vcc
¡I por R!
NADC=1023xf(Vcc)/Vref
:)
NADC=1023xVref/Vcc
sem_logger.h
#define MAX_LOG_ITEMS 30 typedef struct log_item_t { float q; char id; int time_stamp; } log_item_t;void sem_log_init(void);void sem_log_partial_q(log_item_t item);int sem_log_isempty(void);log_item_t sem_log_get_item(void);
Validación
Validación
•dQ = Ci x dVi
•Ci = calibrada
•dVi = osciloscopio
•dQ = I x dt => dQ = V/R x dt
•Area osciloscopio
ValidaciónQ_esp (mC) Q_med (mC) Dif. Relativa
1,23 1,23 -0,2%
2,38 2,36 0,8%
3,61 3,59 0,5%
4,76 4,72 0,9%
5,99 5,95 0,7%
7,14 7,10 0,6%
8,37 8,34 0,4%
9,52 9,48 0,4%
10,75 10,70 0,5%
Q_esp = Ci x dViCi = calibradadVi = osciloscopio
Aplicación de tercero
Demo – eZ430-RF2500 Sensor Monitor de TI
Bitácora
•Consumo histórico y parcial.
•Bitácora de consumos (time stamp e ID).
•Gestión de la bitácora.
Bitácora: ejemplo
while (TRUE){if (eventoA)controlEventoA();if (eventoB)controlEventoB();{
sem_reset_log()while (TRUE){if (eventoA) sem_log(A_in)controlEventoA(); sem_log(A_out)
if (eventoB)sem_log(B_in)controlEventoB();sem_log(B_out){
Bitácora: ejemploid
time (ms)
Q_histórico (nC) ∆Q (nC)
A_in 1000 1200
A_out 1200 1400 200
B_in 1500 1700
B_out 1700 2700 2000
Control evento A: solo procesamiento (1 mA)Control evento B: usa HW entrada/salida (10 mA)
Agenda
•Problema a resolver
•Solución propuesta
•Conclusiones
•Preguntas
Conclusiones
•Integración: • conflicto por uso compartido de recursos
• falta de funcionalidades y periféricos.
•Consumo: • Periférico siempre on: Comparador
• Vref = 500uA y OA = 200uA
•Carga inicial de capacitores
Conclusiones
•Método de medida: • consumo esporádico (si se mejora tema comparador).
• simple.
•Demasiado sobre el final prueba de SELF metering.
Otro enfoque
DEMO
Trabajo a futuro
•Calibración.
•Estudio detallado de overhead consumo.
•Analizar el otro enfoque