Example #1
0
/* TASK 3 */
static void vHookTask3( void *pvParameters )
{
    portTickType xLastExecutionTime = xTaskGetTickCount();
    unsigned int i;
    for( ;; )
    {
        /* Enforce task frequency */
        vTaskDelayUntil( &xLastExecutionTime, TASK3_DELAY );
        uputs("Task3 ");
        uputs("knob: ");
        uputi(task3_knob);
        uputs(" inst: ");
        uputi(getMiscVal());
        uputs("\n");
        for( i=0; i<task3_knob; i++){__asm__("nop");}

    }
}
Example #2
0
static void readPowTemp ( void *pvParameters ){
    portTickType xLastExecutionTime = xTaskGetTickCount();
    vemu_sensors s;

    for( ;; )
    {
        // Enforce task frequency
		vTaskDelayUntil( &xLastExecutionTime, READPOWTEMP_DELAY );
        // read sensors
        vemu_read_sensors(&s);
        PowerModel.temps[PowerModel.num] = s.t;
        PowerModel.ps[PowerModel.num] = s.sp;
        PowerModel.pa[PowerModel.num] = s.ap;
        // if points are collected, fit the models
        if( ++PowerModel.num == POWER_MODEL_POINTS ){
            // fit sleep power model
            fitPsModel();
            // fit active power model
            fitPaModel();
            // print results
            uputs("\n\n<<<       slope / offset :       >>>\n");
            uputi((int)(1000*PowerModel.psslope));
            uputs("\n");
            uputi((int)(1000*PowerModel.psoffset));
            uputs("\n");
            uputi((int)(1000*PowerModel.paslope));
            uputs("\n");
            uputi((int)(1000*PowerModel.paoffset));
            uputs("\n");
            // find optimal DC
            PowerModel.optimalDC = findOptimalDC( PowerModel.lifetime_hours,
                    PowerModel.energy_joules );
            uputs("optimal DC x 1000\n");
            uputi((int)(1000*PowerModel.optimalDC));
            uputs("\n");


            // reset power model
            PowerModel.num = 0;
            // suspend our own operation until someone wakes us up
            vTaskSuspend( NULL );
        }
    }
}
Example #3
0
/* TASK 2 */
static void vHookTask2( void *pvParameters )
{
	portTickType xLastExecutionTime = xTaskGetTickCount();
    unsigned int i;
    char led_status = 0;
	vemu_regs d,p,c;
	vemu_regs *dp,*pp,*cp,*tp;	
    vemu_sensors s;
	dp = &d;
	pp = &p;
	cp = &c;
	vemu_read_registers(cp);
	for( ;; )
	{
		/* Enforce task frequency */
		vTaskDelayUntil( &xLastExecutionTime, TASK3_DELAY );
    	tp = cp;
		cp = pp;
		pp = tp;
        vemu_read_registers(cp);
        vemu_read_sensors(&s);
		vemu_delta(dp, cp, pp);
        /*
        uputs("Task2 ");
        uputs("knob: ");
        uputi(task2_knob);
        uputs(" inst: ");
        uputi(getMiscVal());
        uputs("\n");
        */
        led_status = !led_status;
        GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, led_status);

        uputs("\n--TASK3--\n");
         uputs("\nA t: ");
        uputi(dp->at);
        uputs("\nA e: ");
        uputi(dp->ae);   
        uputs("\nS t: ");
        uputi(dp->st);
        uputs("\nS e: ");
        uputi(dp->se); 
        uputs("\nT  : ");
        uputi(s.t); 
        uputs("\nPa : ");
        uputi(s.ap); 
        uputs("\nPs : ");
        uputi(s.sp);                 
        uputs("\ncounter : ");
        uputi(getMiscVal());
	}
}
Example #4
0
/* TASK 2 */
static void vHookTask2( void *pvParameters )
{
	portTickType xLastExecutionTime = xTaskGetTickCount();
    unsigned int i;
    char led_status = 0;

	for( ;; )
	{
		/* Enforce task frequency */
		vTaskDelayUntil( &xLastExecutionTime, TASK2_DELAY );
        uputs("Task2 ");
        uputs("knob: ");
        uputi(task2_knob);
        uputs(" inst: ");
        uputi(getMiscVal());
        uputs("\n");
        for( i=0; i<task2_knob; i++){__asm__("nop");}
        led_status = !led_status;
        GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, led_status);

	}
}
Example #5
0
/* TASK 2 */
static void vHookTask2( void *pvParameters )
{
	portTickType xLastExecutionTime = xTaskGetTickCount();
    unsigned int i;
    char led_status = 0;
    unsigned long long old_time = vGetTimerValue();
	vemu_regs d,p,c;
	vemu_regs *dp,*pp,*cp,*tp;	
	vemu_sensors s;
	dp = &d;
	pp = &p;
	cp = &c;
	vemu_read_registers(cp);
	for( ;; )
	{

		
		/* Enforce task frequency */
		vTaskDelayUntil( &xLastExecutionTime, TASK2_DELAY );
		
		uputs("Task2 ");

        tp = pp;
        pp = cp;
        cp = tp;
        vemu_read_registers(cp);
        vemu_delta(dp, cp, pp);
        

        led_status = !led_status;
        GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, led_status);
 
		
        uputs("\nA t: ");
        uputi(dp->at);
        uputs("\nA e: ");
        uputi(dp->ae);   
        uputs("\nS t: ");
        uputi(dp->st);
        uputs("\nS e: ");
        uputi(dp->se); 
        uputs("\nT  : ");
        uputi(s.t); 
        uputs("\nPa : ");
        uputi(s.ap); 
        uputs("\nPs : ");
        uputi(s.sp);                 
		

               
	}
}
Example #6
0
/* TASK 1 */
static void vHookTask1( void *pvParameters )
{
    int taskid = *(int *)pvParameters;
	portTickType xLastExecutionTime = xTaskGetTickCount();
    
    vemu_regs curr, prev, delta;
    //memset(&curr, 0, sizeof(vemu_regs));
    //memset(&prev, 0, sizeof(vemu_regs));
    //memset(&delta, 0, sizeof(vemu_regs));

    vemu_regs *cp, *pp, *tp, *dp;
    cp = &curr;
    pp = &prev;
    dp = &delta;
    
	for( ;; )
	{
		/* Enforce task frequency */
		vTaskDelayUntil( &xLastExecutionTime, TASK1_DELAY );

        /* Update varEMU stats */
        tp = pp;
        pp = cp;
        cp = tp;
        vemu_read_state(cp);
        vemu_delta(dp, cp, pp);

        uputs("vVemuTask ");
		uputi(taskid);
		uputs("     ");
		
		unsigned long long number = cp->total_cycles;
		
		
		uputs("C: "); 
		uputi(number);
		uputs("   ");
		uputs("D: "); 
		uputi(dp->total_cycles);
		uputs("   ");
		uputs("S: "); 
		uputi(cp->slp_time);
		uputs("   ");
		uputs("D: "); 
		uputi(dp->slp_time);
		uputs("   ");
		uputs("AE: "); 
		uputi(cp->total_act_energy);
		uputs("   ");
		uputs("D: "); 
		uputi(dp->total_act_energy);
		uputs("   ");
		uputs("SE: "); 
		uputi(cp->slp_energy);
		uputs("   ");
		uputs("D: "); 
		uputi(dp->slp_energy);

		uputs("\n");

	}
}