debug_stack - Cálculo CPU_LOAD

24 views
Skip to first unread message

Lucas Corrêa

unread,
Mar 19, 2014, 3:13:29 PM3/19/14
to br...@googlegroups.com
Olá,
Estou trabalhando em um port do BRTOS para o AT90CAN128, baseado no port para o Atmega328p. O BRTOS já está "rodando" no at90can128 e utilizei algumas funções do debug_stack.c para monitorar as tarefas e etc, porém não entendi o cálculo que é feito para determinar a percentagem de ocupação da CPU (linhas 221 e 222) na função Transmite_CPU_Load:

percent = LastOSDuty;
percent = (percent*100)/TIMER_MODULE;

Especificamente, não entendi o valor atribuído a constante TIMER_MODULE definida em HAL.h

#define TIMER_MODULE 249

Caso alguém possa esclarecer isso, fico grato.

Att, Lucas.

Gustavo Denardin

unread,
Mar 19, 2014, 6:51:05 PM3/19/14
to br...@googlegroups.com
Olá Lucas, tudo bem? Que legal que você está utilizando o BRTOS.

Essa implementação de CPU load é meio antiga, já não usamos mais essa abordagem.

Na verdade o 249 é:
compare = ((configCPU_CLOCK_HZ / configTICK_RATE_HZ) / configTIMER_PRE_SCALER_VALUE) - 1; 

ou seja

((16000000 / 1000) / 64) - 1 = 249
Esse valor indica quantas contagens o timer irá realizar até gerar a interrupção de 1ms do tick do sistema.

Já o LastOSDuty é uma média de 1024 amostras do contador do tick do sistema. Assim, se em média o contador do sistema contou 25 antes de entrar em idle, a ocupação da CPU será 10%. O problema dessa implementação é que se houverem mais interrupções no sistema, esse valor não irá considerar o tempo de processamento relativo a essas interrupções e das tarefas que foram acordadas por ela.

Qualquer dúvida estou a disposição.

Abraço,

Gustavo Weber Denardin
 Universidade Tecnológica Federal do Paraná (UTFPR)
 Campus Pato Branco - Departamento de Eng. Elétrica (DAELE)
 Via do Conhecimento, Km 1 -     Pato Branco - PR -   CEP: 85503-390
 Fone / Fax: (46) 3220-2570
 Home Page: http://pessoal.utfpr.edu.br/gustavo/


--
Você recebeu essa mensagem porque está inscrito no grupo quot;BRTOS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para brtos+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para br...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/brtos.
Para mais opções, acesse https://groups.google.com/d/optout.

Lucas Correa

unread,
Mar 20, 2014, 10:37:33 AM3/20/14
to br...@googlegroups.com
Olá Gustavo, entendi a limitação dessa implementação do CPU load, obrigado pela resposta, a dúvida foi esclarecida.

Sds,
Lucas.
Reply all
Reply to author
Forward
0 new messages