ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
33922 Топик полностью
ig_z (22.06.2005 14:59, просмотров: 1) ответил Сергей Борщ на Кто может объяснить на пальцах, как в RTOS сделать мониторинг распределения времени по задачам?
Ответ: Года три назад прикручивал юкос вью на мсп. Насколько помню по идеологии системы - OSView_TimeGetCycles()вызвается в шедулере и фиксирует в INT32U время начала работы задачи и окончания. А далее статистика за определенное время и вывод во вьювер.
/*
*********************************************************************************************************
*                                              Tick Hook
*
* This routine is called by uC/OS-II's OSTimeTickHook().
*********************************************************************************************************
*/

static INT16U prev_cnt;   

void  OSView_TickHook (void){
    OSView_CyclesCtr += ((INT32U)CPU_CLK_FREQ / (INT32U)OS_TICKS_PER_SEC);
    prev_cnt = TAR;
}

/*
*********************************************************************************************************
*                                           Get time [cycles]
*
* This routine is required for task-info via uC/OS-View.
* It returns the system time in clock cycles.
*********************************************************************************************************
*/

INT32U  OSView_TimeGetCycles (void) 
{
    INT16U  t_cnt;
    
//    OS_ENTER_CRITICAL();

    t_cnt = TAR;

//    OS_EXIT_CRITICAL();

    return (OSView_CyclesCtr + (INT32U)(t_cnt - prev_cnt));
}