Home

Análise da aplicação de um sistema operacional de tempo real em

image

Contents

1. H i Figura 17 C pia de mensagens entre as tarefas e a fila de mensagens LI e YAO 2003 42 Uma exce o pode ocorrer quando a tarefa destinataria esta bloqueada esperando pela mensagem na lista de tarefas em espera da fila de mensagens Dependendo da implementa o do kernel a mensagem pode ser copiada apenas uma vez da rea de mem ria da tarefa remetente diretamente para a rea de mem ria da tarefa destinat ria n o precisando passar pela rea de mem ria da fila de mensagens Devido a copia de dados ser custosa em termos de desempenho e requisitos de mem ria interessante no tratamento de sistemas embarcados de tempo real sempre trabalhar com mensagens pequenas ou ent o utilizar ponteiros 5 6 3 3 Caixas de correio Uma fila de mensagens cujo tamanho de uma nica mensagem determina um novo objeto do kernel denominado de caixa de correio Caixas de correio possuem as mesmas caracter sticas e funcionalidades que as filas de mensagens sendo que o que as diferenciam s o suas m quinas de estados A m quina de estado de uma caixa de correio representada na Figura 18 Mailbox Created Message Delivered msgs 0 msgs 0 Message Arrived msgs 1 Figura 18 FSM de uma caixa de correio 43 5 7 Servi os do kernel Junto com os objetos a maioria dos kernels fornece servi os ou opera es que auxiliam os desenvolvedores a criar aplica es p
2. if OS_CRITICAL_METHOD 3 OS_CPU_SR cpu_sr endif pdata pdata f gt gt gt gt np Configurando os pinos de entrada e sa da I O s f gt gt gt gt gt gt ADCON1 0x07 Configura registrador A D gt Esta configura o determina que as entradas s o digitais PORTA 0x00 TRISA 0x00 PORTB OxF0 Os pinos RBO a RB3 sao as TRISB 0x0F entradas das teclas RB4 a RB7 sao seletores dos displays de 7 segmentos e devem ser saidas PORTC 0x00 TRISC 0x00 PORTD 0x00 133 TRISD 0x00 PORTE 0x00 TRISE 0x00 OS_ENTER_CRITICAL OpenTimer0 TIMER_INT_ON amp TO 16BIT amp TO_SOURCE_INT amp TO_PS_1_1 WriteTimer0 5000 tick do rel gio do sistema deve ter resolu o de 5ms refinamento OS_EXIT_CRITICAL f gt gt gt gt gt gt np Inicializando as vari veis globais do sistema Do E Bs ee LED 0 0 LED 1 0 LED 2 0 LED 3 0 NUMERO BCD 0 0 NUMERO BCD 1 0 NUMERO BCD 2 0 NUMERO BCD 3 0 NUMERO BCD 4 0 NUMERO 0 7 Dai BE SSO ERA Ee RE SUS RT E SE e ns Criando os eventos f gt gt gt gt gt gt Semcontador OSSemCreate 0 CORREIO OSMboxCreate NULL OSTaskC
3. Muda estado do processo if STT_Display_LEDs gt 3 STT_Display_LEDs 0 PRI III II EI III III na 2 INICIO DA CONFIGURA O DO RTOS HEHE IIR IEE I III II II tf gt gt gt gt IP 24 Constru o da pilha de dados das tarefas f gt gt gt gt gt OS STK StarttasksStk 100L OS STK TecladoStk 300L OS STK ContadorStk 300L f gt gt gt gt gt gt IP 2 2 Declara o dos eventos a serem utilizados tf gt gt gt gt gt gt OS EVENT Semcontador 1 sem foro OS EVENT CORREIO 1 caixa de correio f gt gt gt gt IP 2 3 TAREFAS J sasa EEEE EEEE III Fun o Teclado PERSIA I RAR Descri o L a tecla e verifica se houve altera o no seu estado Se houve altera o espera por um tempo para tratar do debounce Depois verifica se a tecla continua pressionada ou nao Caso sim reconhece que a tecla foi pressioada e envia o sinal correspondente para o processo Contador Estados Tarefa em execu o Tarefa pronta Tarefa bloqueada estados invis veis para o programador II 130 Entradas de dados NENHUMA H Saidas de dados
4. Neste caso a tarefa que sofreu a preemp o colocada na lista de tarefas pronta enquanto a tarefa de maior prioridade removida desta lista ao trocar do estado pronto para o estado em execu o Uma tarefa em execu o pode mudar para o estado bloqueado das seguintes maneiras e Fazendo uma chamada de sistema para pedir um recurso n o dispon vel e Fazendo uma chamada de sistema para esperar que um evento ocorra e Fazendo uma chamada de sistema para se atrasar por um determinado per odo 5 6 1 1 3 0 estado bloqueado Segundo LI e YAO 2003 o estado bloqueado extremamente importante em sistemas de tempo real porque permitem que tarefas de menor prioridade possam obter o controle da CPU Se as tarefas com as mais altas prioridades n o entrarem no estado bloqueado pode ocorrer o que se chama de starvation ou seja as tarefas de maior prioridade usam todo o tempo de execu o da CPU n o permitindo que as tarefas de menor prioridade sejam executadas 32 Uma tarefa s6 pode mudar para o estado bloqueado fazendo uma chamada de bloqueio ou seja requisitando que alguma condi o de bloqueio seja atendida Uma tarefa continua bloqueada at que a condi o de bloqueio atendida Alguns exemplos de quando estas condi es de bloqueio s o atendidas s o e Um sinalizador do sem foro que uma tarefa est esperando liberado e Uma mensagem que a tarefa est esperando chega
5. Diagrama SDL dos processos DISPLAY e REL GIO 163 ESPERA Tic_Hardware Tic Hardware decrementa contador 250 ms ESPERA CONTAGEM Atualiza Display escreve contagem Figura 8 Diagrama SDL do processo DISPLAY reinicia contador woneees concer Figura 7 Diagrama SDL do rel gio de 4 Hz Antes de passarmos aos fluxogramas do c digo que implementar nossas m quinas de estado necess rio apresentarmos uma pe a de software fundamental para o sistema o ESCALONADOR Esse software encarregado de gerenciar a distribui o do tempo do processador aos processos Geralmente o cora o dos sistemas operacionais Como n o temos um sistema operacional implementaremos nosso pr prio escalonador que ser do tipo mais simples poss vel o Escalonador C clico Esse tipo de escalonador se caracteriza por passar o controle do processador a uma lista de processos sempre na mesma ordem de chamada a um intervalo de tempo fixo No nosso caso o Escalonador ser uma fun o ativada pela interrup o do TIMERO A cada interrup o do TIMERO o Escalonador chamar todas as fun es que implementam as m quinas de estado do nosso sistema conforme pode ser visto na Figura 9 Fluxograma do Escalonador C clico 164 TIMER DO TECLADO 40 ms REL GIO 4 Hz E RETORNA Figura 9 Fluxograma do Escalonador C clico Passo 5 FLUXOGRAMAS DOS BLOCOS Fluxograma do processo Aciona Display
6. NENHUMA H Sinais de Entrada Semcontador lt Contador SEM FORO enviado DO CONTADOR H PARA AVISAR QUE ESTE RECEBEU A MENSAGEM Tempo Delay fim lt kernel OSTimeDly Sinal inv sivel para o programador MAIOR_PRIO_EXEC lt kernel escalonador Sinal invisivel para o programador Sinal_s1 Sinal_s2 Sinal_s3 Sinal_s4 lt pressionamento das teclas Sinais de Saida ENVIA SINAL CONTADOR Sinal_b1 Sinal b2 Sinal b3 Sinal b4 gt Contador H Tempo Delay inicio gt kernel OSTimeDly Sinal inv sivel para o programador REQ_Semcontador gt kernel OSSemPend Sinal invisivel para o programador enviado para requisitar o sem foro para o kernel Chamada por k Escalonador do Kernel Chama NINGUEM void Teclado void pdata INT8U ENVIA_SINAL_CONTADOR 0 vari vel que sinalizara para o Contador qual sera o seu estado Prt hitmen eee reese eee Sinal_s1 0 Vari veis que se transformar o no sinal Sinal_s2 0 enviado para a maquina de estados do contador Sinal_s3 0 Sinal_s4 0 FT aaa tece cd TECLAS 0x00 vari vel que guarda o estado atual do TECLADO OLD TECLAS 0x00 vari vel que guarda o estado anterior do TECLADO pdata pdata for TECLAS PORTB amp OxOF if TECLAS OLD_TECLAS OLD_TECLAS TECLAS OSTimeDly 8 requisito de tempo necess rio para tratamento do debounce das teclas 40ms TECLAS PORTB amp OxOF
7. NINGUEM H OBSERVA ES A convers o usa o m todo das divis es sucessivas l void atualiza display void unsigned char i y int x x NUMERO NUMERO_BCD 4 0 End of string LED 0 0 LED 1 0 LED 2 0 LED 3 0 1 8 if x 0 while x 0 NUMERO BCDfi x 10 y NUMERO BCDfi LED i y x x 10 i 1 else NUMERO_BCD 3 0 NUMERO_BCD 2 0 NUMERO_BCD 1 0 NUMERO_BCD 0 0 BREE RRR RRR RRR RRR ii ie Fun o escreve display LEDs num digito digito_bcd i Descri o Escreve valor em um digito do display de LEDs i Entradas de dados numero do digito em que escrevera 0 1 2 3 numero a ser escrito no display em BCD lt vari vel global LED i Saidas de dados NENHUMA i Sinais de Entrada NENHUM i Sinais de Saida NENHUM 1 Chamada por MagDisplayLEDs 145 Chama NINGU M OBSERVA ES Os d gitos s o selecionados pelos seus pinos correspondentes do PORTB RB4 d gito menos significativo RB5 RB6 RB7 digito mais significativo void escreve_display_LEDs char num_digito char digito_bcd PORTBbits RB4 0 PORTBbits RB5 0 PORTBbits RB6 0 PORTBbits RB7 0 switch num_digito case 0 PORTBbits RB4 1 break case 1 PORTBbits RB5 1 break case 2 PORTBbits RB6 1 break ca
8. Sem foros podem ser apagados a partir de qualquer tarefa especificando se suas IDs e fazendo se as chamadas para apag los Quando um sem foro apagado as tarefas que est o bloqueadas em sua lista de tarefas em espera s o desbloqueadas e mudam para o estado pronto ou em execu o se a tarefa desbloqueada tem a maior prioridade Qualquer tarefa que tentar adquirir o sem foro apagado retorna um erro devido inexist ncia do mesmo Deve se ter cuidado ao se apagar sem foros pois se um sem foro for apagado quando estiver em uso dados podem ser corrompidos ou ainda problemas mais s rios podem surgir caso o sem foro esteja protegendo um recurso compartilhado ou uma se o cr tica de c digo 5 7 2 2 Adquirindo e liberando sem foros 52 A Tabela 6 lista as opera es de adquirir e liberar sem foros Tabela 6 Opera es para adquirir e liberar um sem foro LI e YAO 2003 Descri o da opera o Acquire Adquire um sinalizador ou chave sem foro Opera o Release Libera um sinalizador ou chave sem foro Segundo LI e YAO 2003 uma tarefa faz uma requisi o para adquirir um sem foro de uma das seguintes maneiras e Esperar para sempre a tarefa permanece bloqueada at o sem foro estar dispon vel para ser adquirido pela mesma e Esperar por certo per odo a tarefa permanece bloqueada at adquirir o sem foro ou at expirar um intervalo de tempo pr determinado
9. diferente de resumir uma tarefa que foi suspensa Reiniciar uma tarefa significa execut la do in cio como se ela n o tivesse sido executada anteriormente Todo o estado interno os registradores da CPU e os recursos adquiridos que a tarefa mantinha quando foi suspensa perdido quando esta reiniciada Na opera o de resumo de uma tarefa o estado interno mantido para que a tarefa seja executada do mesmo ponto onde foi suspensa As opera es get priority e set priority s o importantes para resolver problemas de invers o de prioridades Uma invers o de prioridades ocorre quando uma tarefa de menor prioridade possui um recurso compartilhado requisitado por uma tarefa de alta prioridade No entanto a tarefa de menor prioridade sofreu preemp o de uma tarefa de m dia prioridade A Figura 19 ilustra este cen rio Um recurso compartilhado qualquer entidade que pode ser usada por mais de uma tarefa sendo que cada tarefa deve ganhar acesso exclusivo ao recurso compartilhado para evitar que os dados sejam corrompidos 48 v Priority Inversion w MON Li Task 1 H o a q iii 8 Task 2 M A iaa 6 420 Task 3 L LZ Yes k t Semagnhy 2 Task 3 Resumes reemots Ta 3 Task 1 Tries to get Semaphore Task 3 Releases the Semaphore 5 i I Task 2 Preempts Task 3 7 Figura 19 Invers o de prioridade LABROSSE 2002 Conforme a Figura 19 a tarefa 1 tem prioridade ma
10. e envia uma mensagem sinais b1 b2 b3 b4 para a tarefa CONTADOR atrav s do servi o OSMboxPost contendo o estado correspondente a tecla pressionada Se n o houver altera o das teclas envia uma mensagem para a tarefa CONTADOR contendo a informa o de que n o houve altera o das teclas Ap s o envio da mensagem a tarefa TECLADO aguarda a confirma o de que a tarefa CONTADOR recebeu a mensagem enviada ao requisitar o sem foro REQ Semcontador atrav s do servi o OSSemPend Quando recebe este sem foro Semcontador a tarefa reinicia uma nova verifica o das teclas A tarefa teclado possui a menor prioridade entre as duas tarefas do sistema O diagrama SDL apresentado na Figura 46 para o processo TECLADO agora com o uso do RTOS inclui os estados das tarefas para mostr lo como tal Repare que o processo TECLADO n o possui estados definidos pelo programador Todos os estados descritos s o referentes s tarefas e responsabilidade do kernel alter los de acordo com os servi os utilizados Todos os sinais trocados com o kernel e tamb m com outros processos est o representados neste diagrama 111 Process TECLADO Tarefa em A execu o Confirma altera o de estado Tempo Delay in cio 40ms Tempo Delay fim Tarefa pronta para Execu o Semcontador MAIOR_PRIO_EXEC Tarefa pronta para Tarefa em execu o execu o Sinal s1 Sinal 52 L MAIOR_PRIO_EXEC Sinal_s3 Sinal_s4 Figur
11. if TECLAS OLD_TECLAS Sinal_s1 TECLAS amp 0x01 Sinal_s2 TECLAS amp 0x02 Sinal_s3 TECLAS amp 0x04 Sinal_s4 TECLAS amp 0x08 if Sinal_s1 0 ENVIA SINAL CONTADOR 1 Sinal_b1 if Sinal s2 0 ENVIA_SINAL_CONTADOR 2 Sinal_b2 if Sinal s3 0 ENVIA SINAL CONTADOR 3 Sinal b3 if Sinal s4 0 ENVIA SINAL CONTADOR 4 Sinal b4 else ENVIA SINAL CONTADOR 0 Sinal de que n o houve altera o else ENVIA SINAL CONTADOR 0 necess rio enviar o sinal para o contador mesmo se n o houve mudan a para desbloquear a tarefa do contador OSMboxPost CORREIO amp ENVIA SINAL CONTADOR OSSemPend Semcontador 0 amp err aguarda resposta do contador do recebimento da mensagem enviada 131 JEEE e Ee e hee RRR k Aee NEBERE M RR EEE EE EEE EERE EERE RHEE RAIA TRAE ERA EE EER EIR E Fun o Contador PEO SR SSI IERIE IIA IE Descrigao Ou esta parado ou zera contagem ou faz contagem crescente ou contagem decrescente conforme os bot es acionados Tudo a 10Hz ou 100ms Estados PARADO CRESCENTE DECRESCENTE ZERO Tarefa em execu o Tarefa pronta Tarefa bloqueada estados invis veis para o programador Entradas de dados NENHUMA II Saidas de dados vari vel global NUMERO n mero de 16 bits que ser mostrado no display II Sinais de Entrada ENVIA_SINAL_CONTADOR Sinal_b1 Sinal_b2 Sinal_b3 Sinal_
12. inicializado com um n mero especificado de sinalizadores que ser o valor m ximo de seu contador Se este valor inicializado com 0 o sem foro criado no estado indispon vel Se o valor criado com um valor maior que 0 o sem foro criado no estado dispon vel O diagrama de estado dos sem foros contadores apresentado na Figura 14 37 Release count count 1 N Release count 1 naa Initial count O Initial count gt O Acquire count count 1 Figura 14 Diagrama de estados de um semaforo contador LI e YAO 2003 Tarefas podem continuamente adquirir sinalizadores de um sem foro contador at este n o possuir mais nenhum sinalizador Quando todos os sinalizadores acabarem o contador igualado a O e o sem foro contador muda do estado de dispon vel para o estado indispon vel Para o sem foro voltar ao estado dispon vel um sinalizador do mesmo deve ser liberado por alguma tarefa O sem foro contador um recurso global assim como o sem foro bin rio 5 6 3 Filas de mensagens Uma fila de mensagens segundo Ll e YAO 2003 um objeto do tipo buffer atrav s do qual tarefas ou ISRs enviam e recebem mensagens para comunica o e sincronia com dados A fila armazena temporariamente uma mensagem de um remetente at que o destinat rio esteja pronto para receb la O uso deste buffer tempor rio separa a tarefa remetente da tarefa destinat ria ou seja ele libera as
13. sem causar bloqueio da tarefa ou ISR remetente fazem com que a chamada de envio da mensagem retorne uma mensagem de erro para aquela tarefa ou ISR se a fila de mensagens estiver cheia Ao receber a mensagem de erro a tarefa ou ISR continua sua execu o 57 Em alguns casos entretanto o sistema deve ser desenvolvido para que as tarefas sejam bloqueadas por um intervalo de tempo determinado ou at receber a mensagem quando uma mensagem enviada para uma fila de mensagens cheia Dessa forma a tarefa bloqueada colocada na lista de tarefas em espera da fila de mensagens para tarefas remetentes na ordem FIFO ou baseada em sua prioridade conforme mostra a Figura 21 Task Waiting List First In First Out FIFO Order Sending Task Waiting List Message Queue Receiving Task Waiting List sccooddag sen er Blocking Task Task Waiting List Priority Based Order Sending Task Waiting List Message Queue Receiving Task Waiting List Blocking Task Figura 21 Lista de tarefas em espera da fila de mensagens na ordem FIFO e por prioridade LI e YAO 2003 Uma tarefa pode receber mensagens com pol ticas de bloqueio semelhantes ao envio de mensagens n o ser bloqueada ser bloqueada por um intervalo de tempo ou ser bloqueada at receber a mensagem Neste caso o bloqueio das tarefas destinat rias ocorre quando a fila de mensagens est vazia sendo que as 58 tarefas destinatarias aguardam as mensagens na lis
14. tarefas de ter que enviar e receber as mensagens simultaneamente Como os objetos do kernel citados anteriormente uma fila de mensagens tem tamb m uma s rie de componentes associados a ela que auxiliam ao kernel 38 gerenci la Quando uma fila de mensagens criada associado a ela um bloco de controle da fila QCB queue control block um nome uma ID nica buffers de mem ria um tamanho para fila um tamanho para as mensagens da fila e uma ou mais listas de tarefas em espera conforme ilustra a Figura 15 Queue Control Memory Block System Pool or x Private Buffers Receiving Task Sending Task Waiting List Waiting List c gt eee oe et Maximum tema gt Queue Length Queue Tail Head Element Figura 15 Ilustra o de uma fila de mensagens e seus componentes associados LI e YAO 2003 fun o do kernel associar uma nica ID para a fila de mensagens e criar seu bloco de controle QCB O kernel tamb m determina o quanto de mem ria necess rio para a fila de mensagens atrav s dos par metros especificados pelo desenvolvedor depois que este determina o tamanho da fila e o tamanho m ximo das mensagens Ap s ter essa informa o o kernel aloca a mem ria necess ria para a fila de mensagem em uma nica e grande rea de mem ria compartilhada entre todas as filas de mensagens ou ent o em reas de mem ria separadas e individuais para cada fila de mensagens Uma fila d
15. void void Contador void void Teclado void void Timer Teclado void void atualiza display void void Timer 100 void pragma code high vector 0x08 void interrupt at high vector void _asm GOTO high_isr _endasm pragma code return to the default code section PESRRRERRRRRERER RRR REE EERE ERE R EERE ER ERE aaa aR EAA RHA A AAA A TREE A RR RAR Ra EERE EERE REE EE EEE IN CIO DA FUN O PRINCIPAL dd dd dd dd dd dd dd da dad void main void NOTA dispositivos que t m conversor AD podem precisar configurar os pinos assinalados a IN e OUT como ES digital ADCON1 0x07 Primeiramente decida o n vel inicial dos pinos das portas de saida e depois defina a configura o dos pinos como entrada saida Isto evitar ruidos nos pinos de saida PORTA 0x00 TRISA 0x00 PORTB OxF0 TRISB Ox0F Os pinos RBO a RB3 s o as entradas das teclas RB4 a RB7 sao seletores dos displays de 7 segmentos PORTC 0x00 TRISC 0x00 PORTD 0x00 TRISD 0x00 PORTE 0x00 TRISE 0x00 Inicializa o TIMERO OpenTimer0 TIMER INT ON amp To 8BIT amp TO SOURCE INT amp To PS 1 128 137 138 WriteTimer0 256 38 Atribui valor inicial do TIMERO tal que o atrazo total seja 128 us 39 5 ms para um clock de 4 MHz INICIALIZA O DOS PROCESSOS CONTAGEM 0 COUNT 100 20 Sinal TIC 100
16. 0 STT Teclado ESPERA TECLA STT Timer Teclado TIMER TECL PARADO STT Display LEDs DIGITO 3 STT Contador CRESCENTE TECLAS 0x00 OLD TECLAS 0x00 Sinal Inic Timout 1 Sinal Timout Teclado 0 Sinal s1 1 Sinal s2 1 Sinal s3 1 Sinal s4 1 COUNT TIMOUT 0 NUMERO 0 NUMERO BCD 0 0 NUMERO BCD 1 0 NUMERO BCD 2 0 NUMERO BCD 3 0 NUMERO BCD 4 0 LED 0 0 LED 1 0 LED 2 0 LED 3 0 LED 4 0 i 0 x 0 y 0 Inicializa as interrup es INTCONbits GIE 1 Habilita o global de interrup es La o Principal infinito E RSRESSRERR KANKER KRAKEN KANKEN ESSE SEES ESSE SEES SSSR ESE R ESSE EERE RE ERE ESE RE RES EEE BERS ERES FIM DA FUN O PRINCIPAL dd dd dd dd dd dd dd dd dd di do A doa peer EERE REET TT TTT TIE ROTINA DE SERVIGO DA INTERRUPCAO DO TIMERO Esta rotina distribui o tempo do processador entre os processos Como todos os processos s o chamados a cada interrup o esta rotina chamada de Executor Ciclico pragma interrupt high isr void high isr void if INTCONbits TMROIF Se o TIMERO gerou um pedido de interrup o es Rotina de servi o da interrup o do TIMERO TIMERO interrompe a cada 5 ms WriteTimer0 256 38 128 us 39 5 ms O 4MHz Prescaler 128 INTCONbits TMROIF 0 Zera flag de interrup o do TIMERO BOSE IIR II IRI II IIR IA IRI IIA III IB EI III
17. 3 DIGITO 2 DIGITO 1 DIGITO O H Entradas de dados LEDI lt atualiza display Variavel NUMERO separada em cada d gito do display Saidas de dados NENHUMA Sinais de Entrada NENHUM Sinais de Saida NENHUM Chamada por int server gt interrup o void high_isr H Chama escreve_display_LEDs EEE ara void MagDisplayLEDs void switch STT_Display_LEDs case DIGITO_3 escreve display LEDs DIGITO 3 LED 0 break case DIGITO 2 escreve display LEDs DIGITO 2 LED 1 break case DIGITO 1 escreve display LEDs DIGITO 1 LED 2 break case DIGITO 0 escreve display LEDs DIGITO 0 LED 3 break STT_Display_LEDs STT_Display_LEDs 1 Muda estado do processo if STT_Display_LEDs gt 3 STT_Display_LEDs 0 peer REAR AREA REE RE EERE EE EERE EERE Fun o Contador Descri o Ou esta parado ou faz contagem crescente ou contagem decrescente ou zera contagem conforme os bot es acionados Tudo a 10 Hz ou 100ms Estados PARADO CRESCENTE DECRESCENTE ZERO Entradas de dados NENHUMA Saidas de dados NUMERO gt atualiza display numero de 16 bits que sera mostrado no display Sinais de Entrada Sinal_b4 Sinais de Saida Chamada por void Contador void 140 Sinal ESTADO CONTADOR lt Teclado Sinal_b1 Sin
18. 7560 REL DE 4 mes TIMER DO TECLADO 40 ms Figura 2 Diagrama de Parti o do contador crescente decrescente Notar o formato de rvore do diagrama em que os blocos do n vel de cima s o detalhados no n vel de baixo A temporiza o cont m dois PROCESSOS o timer do teclado e o rel gio de 4 Hz Passo 3 Elabora o do Diagrama de Intera o entre Blocos Dados os processos do sistema obtidos no passo anterior imagina se agora como esses processos interagir o entre si isto que sinais um mandar para o outro informando o da ocorr ncia de eventos que provocar o transi es de estados Importante dizer se que por conven o os sinais s o bin rios isto de apenas um bit e s o imediatamente consumidos ao serem reconhecidos pelos processos que os recebem Mas pode haver dados associados a um sinal O diagrama abaixo mostra as intera es entre os blocos do contador TIMER Des RELOGIO DF TECLADO a mz mio Tirrioet Tirrmout ENTRADAS e CONTAGEM Atualiza SAIDA TECLAS DISPLAY 7586 b1 b2 ba Figura 3 Diagrama de intera o entre blocos funcionais do contador crescente decrescente O teclado gera os sinais bl b2 e b3 que s o enviados para o bloco TECLAS Ao receber um sinal de teclado o processo TECLAS envia ao processo TIMER DO TECLADO um sinal ordenando o in cio da temporiza o de elimina o do repique do teclado Quando transcorreu o tempo de repique do teclado seu TIMER
19. 79 7 2 1 1 PORTB Segundo DATA 2006 o datasheet do PIC18F452 o PORTB uma porta de 8 vias digitais bidirecionais para a entrada sa da de dados sendo portanto de 8 bits Al m disso estes pinos s o compartilhados podendo ser utilizados como pinos para gera o de interrup es e para programa o dos dispositivos seriais caso sejam configurados para estes fins A Tabela 12 mostra a fun o de cada um dos bits do PORTB Tabela 12 Configura o dos pinos do PORTB do PIC18F452 DATA 2006 RBo INTO TTUST Input output pin or external interrupt inputo Internal software programmable weak pull up RBY INTA bitt TTUST D Input output pin or external interrupt kpa Internal software programmable weak pull up Bee e eee Input output pin or external interrupt input2 Internal software programmable weak pull up Reid Input output pin or Capture input Compare2 output PWM output when CCP2MxX configuration bit is enabled Internal software programmable weak pull up pin with interrupt on change software programmable weak pull up TTL ST input output pin with interrupt on change Internal software programmable weak pull up Low voltage ICSP enable pin RB6 PGC Input output pin with interrupt on change Internal software programmable weak pull up Serial programming clock RB7 PGD bit TTLUST Input output pin with interrupt on change Internal software programmable weak pull up Serial pr
20. A principal diferen a de se utilizar o sistema operacional de tempo real RTOS reside no fato de que o kernel tratar de toda a temporiza o do sistema sem que haja a necessidade do programador se preocupar em desenvolver processos para tratar destas temporiza es A nica preocupa o que o programador ter saber utilizar os servi os oferecidos pelo RTOS para que esta temporiza o seja alcan ada de acordo com sua necessidade Portanto no caso do contador crescente decrescente aqui descrito os processos de temporiza o TIMER TECLADO e TIMER 100 ser o desconsiderados O c digo do programa do contador com o uso do sistema operacional de tempo real se encontra no AP NDICE A Os processos CONTADOR e TECLADO foram tratados como tarefas ver se o 5 6 1 do sistema operacional de tempo real e o processo MaqgDisplayLEDs foi 105 tratado como uma rotina chamada a cada interrup o do TIMERO Cada processo ser tratado em detalhes nesta se o A Figura 48 ilustra a intera o do contador com o ambiente externo e com o kernel O kernel tratado como um sistema que coordena as atividades de outro sistema no caso o contador Uma an lise detalhada de como o kernel do uC OS II trata as tarefas representada na Figura 26 Os sinais recebidos pelo kernel determinam em quais estados estar o as atividades tarefas da aplica o Para o contador foram utilizados os seguintes servi os do sistema operacional e 1 sem foro
21. Diversos produtos utilizados na vida rotineira de uma pessoa s o sistemas embarcados A Figura 3 mostra alguns exemplos destes sistemas AS g Figura 3 Exemplos de sistemas embarcados LACERDA 2006 3 SISTEMAS DE TEMPO REAL Sistemas de tempo real podem ser definidos de acordo com LI e YAO 2003 como sistemas que respondem a eventos externos sincronos ou assincronos atendendo a restri es de tempo especificadas Responder a um evento externo inclui reconhecer quando o evento acontece executar o processamento necess rio para o resultado do evento e fornecer como sa da o resultado deste processamento Todas estas a es devem ser executadas dentro de um intervalo de tempo especificado A Figura 4 mostra de maneira simplificada um sistema de tempo real Timing Constraints Figura 4 Uma vis o simples de um sistema de tempo real LI e YAO 2003 Um sistema de tempo real deve produzir resultados computacionais corretos ou seja ter como caracter stica exatid o funcional ou l gica Al m disso estes resultados devem ser computados dentro de um tempo pr definido portanto o sistema deve ter exatid o temporal importante ressaltar que a exatid o completa de um sistema de tempo real depende tanto da exatid o funcional quanto da exatid o temporal do mesmo 3 1 Tipos de sistemas de tempo real Conforme LI e YAO 2003 em alguns sistemas de tempo real a exatidao funcional pode ser sacrif
22. Il localizados no caminho IMicriumiSOFTWAREluCOS INWork clicando com o bot o direito em cima de cada se o da seguinte forma 156 ej work mcw BAX E work mcp D Source Files B os_core c E os cru c c B os dbg c B ucos_ii c E VECTORS C Header Files E app_cfg h E INCLUDES H E os_cfg h E os cruH B ucos_ii h Object Files Library Files S E Linker Script uc 18f452i lkr Other Files P Symbols 24 Coloque o arquivo do aplicativo do usu rio no caminho Micrium GOFTWARE uCOS II Work e adicione o na se o Source Files Configure o arquivo os cfg h com as ferramentas necess rias para rodar o aplicativo Inclua os header files necess rios para o aplicativo em INCLUDES H Compile o projeto em Project gt Build all Pronto O kernel multitarefa de tempo real da Micrium uC OS Il na sua ltima vers o v2 86 est pronto para rodar os aplicativos do usu rio 157 ANEXO Aula 08 Desenvolvimento de Programas de Tempo Real Metodologia Universidade Estadual de Campinas UNICAMP Faculdade de Engenharia Mec nica FEM Curso de Engenharia de Controle e Automa o MECATR NICA Disciplina ES770 Laborat rio de Sistemas Digitais 20 Semestre de 2008 Aula 08 Desenvolvimento de Programas de Tempo Real Metodologia Autor Luiz Ot vio Saraiva Ferreira 06 10 2008 Arquivo Roteiro Aula08 0dt Introdu o Nesta aula ser apresentada e exer
23. Leds 165 STT DISPLAY LEDS ACENDE LED UNIDADE Obi Code pieced ier acima charms a fun o espere despiay Jade ACENDE LED CENTEMA Figura 10 Fluxograma Aciona Display Leds Fluxograma do processo Contagem STT_CONTADOR PROCEDIMENTO PROCEDIMENTO PROCEDIMENTO ESTADO ESTADO ESTADO PARADO CRESCENTE DECRESCENTE Obs Estes procedimentos hamam a fen o atualiza display Figura 11 Fluxograma Contagem 166 Fluxograma do processo Teclado STT_TECLADO ESPERA_TECLA ESPERA_TIMOUT PROCEDIMENTO AGUARDAR PROCEDIMENTO VALIDAR TECLA PRESSIONAR TECLA PRESSIONADA Figura 12 Fluxograma Teclado Fluxograma do processo Timer Teclado 167 ce STT Timer Teclado Parado Contando COUNT TIMOUT 1 mic Trout COUNT TIMOUT 8 STT Timer Teclado TIMER TECL CONTANDO STT Timer Teclado TIMER TECL PARADO Timoul Teciado 1 Figura om E Fluxograma Timer Teclado Fluxograma do processo Rel gio 4 Hz 168 DECREMENTA COUNT_250 SETA VARIAVEL TIC 250 Figura 14 Fluxograma Rel gio 4 Hz Exerc cio em sala Acrescente a fun o ZERAR CONTADOR acionada pelo bot o S4 do kit MODULO 2 Exerc cio extraclasse Passe o programa do controlador proporcional de velocidade do ventilador dado na aula passada para a forma de m quinas de estados Utilize as chaves S1 e S2 para incrementar e decrementar o v
24. Nathan Brown fez a adapta o ou portabilidade do uC OS II para o PIC18F em 30 de outubro de 2002 Em 20 de dezembro de 2002 lan ou uma nova vers o onde havia implementado algumas melhorias A vers o do uC OS II que foi portada naquela poca a 2 51 Este porte feito por Nathan Brown pode ser encontrado em BROWN 2005 que tamb m possui um link no site da Micrium fabricante do uC OS II 74 Muitas vers es do uC OS Il sa ram desde 2002 at hoje e sua portabilidade para o PIC18F nunca foi atualizado no site do fabricante Micrium nem no site de Nathan Brown Hoje o uC OS Il est na vers o 2 86 com muitas corre es e adi o de novos servi os e objetos Como prefer vel se trabalhar com a vers o do uC OS Il mais livre de bugs foi feita uma atualiza o do porte deste sistema operacional para se utilizar a vers o mais nova vers o 2 86 que est descrita no AP NDICE C deste trabalho A portabilidade feita por Nathan Brown n o ser descrita aqui sua explica o encontra se no seu site pessoal em BROWN 2005 Em LABROSSE 2002 t m se um cap tulo inteiro explicando sobre a portabilidade do uC OS Il com alguns pseudoc digos que auxiliam no desenvolvimento de um porte Este trabalho traz no seu Ap ndice C apenas as etapas necess rias para fazer o uC OS Il rodar em um PIC18F com as altera es necess rias para que a vers o utilizada seja a 2 86 7 MATERIAIS E METODOS A analise do uso de um sistema ope
25. Tabela 19 Tabela 19 N mero de estados e sinais do processo MaqDisplayLEDs utilizados nos dois programas Contador Kernel Programador Contador com RTOS sem RTOS ocros P ocros x Meee cro x om Corro x omoa Pocroo x ocroo x Kernel Programador Maqbisplay ps Me A E E Entradas de dados TULE BM E lt E E Saida de dados eee Sas de saida NENE HS NS E RR Totaldesnas o 1 o a Os processos TIMER TECLADO e TIMER 100 foram necess rios apenas para o desenvolvimento do programa sem o RTOS n o existindo para o programa do contador com RTOS A Tabela 20 e a Tabela 21 mostram respectivamente a 120 quantidade de estados e sinais dos processos TIMER_TECLADO e TIMER_100 para os dois programas Tabela 20 Numero de sinais e estados do processo TIMER_TECLADO utilizados nos dois programas Contador com RTOS Kernel Programador TT ter te parse A oo rime tecucontanool x Entradas de dados TS TIMER ECLA doce gt gt R Snass de entrada Satine time x SPE o J T Tomoe F Totadesnas Jol o Tol 2 Tabela 21 N mero de estados e sinais do processo TIMER_100 utilizados nos dois programas Contador sem Contador DEE RTOS Estados Pr pria rotina Total de estados R Kernel Programador Entradas de dados ENS meo 1 TIMER 100 Saida de dados RE Sinais de entrada M To to SEXET oo saco x Totaldes
26. ao uC OSII o endere o inicial de suas tarefas a prioridade a ser dada para a tarefa a ser criada 70 quanto de espa o de mem ria ter sua pilha e assim por diante Quando uma tarefa criada ela torna se pronta para a execu o e colocada no estado pronto ready state No uC OS Il as tarefas podem ser criadas antes do inicio do tratamento das multi tarefas ou dinamicamente por uma tarefa em execu o Se uma tarefa criada a partir de outra tarefa em execu o tiver prioridade maior do que a tarefa que a acabou de cri la aquela toma imediatamente o controle da CPU Uma tarefa pode colocar a si mesmo ou outra tarefa novamente no estado dormant atrav s do servi o OSTaskDel O tratamento multitarefa iniciado chamando se o servi o OSStart OSStart deve ser chamado apenas uma vez durante a inicializa o do RTOS e inicia a execu o da tarefa de maior prioridade que foi criada durante a inicializa o do c digo Esta tarefa de maior prioridade ent o colocada no estado em execu o running state Como visto nas se es anteriores apenas uma tarefa pode estar em execu o na CPU Uma tarefa que est pronta para a execu o mas n o possui a maior prioridade colocada no estado em espera waiting state que corresponde ao estado bloqueado apresentado na se o 5 6 1 aguardando sua execu o quando o kernel lhe der a oportunidade A tarefa em execu o pode atrasar ela mesma por certo p
27. baixa prioridade Um GPOS pode ainda diminuir a prioridade de uma tarefa para ajust la a pol tica de igualdade e fornecer tempo de CPU a outras tarefas do sistema Dessa forma uma tarefa de alta prioridade pode sofrer preemp o ou seja perder o controle da CPU durante sua execu o para uma tarefa de menor prioridade Na maioria dos GPOSs o kernel n o preemptivo Consequentemente uma tarefa de alta prioridade do desenvolvedor da aplica o nunca far a preemp o de uma chamada do kernel mas dever esperar pela execu o completa da chamada mesmo se esta for o processo de menor prioridade em todo o sistema GPOSs n o possuem limites para aumentar a lat ncia de sua troca de contexto quanto mais tarefas existir no sistema mais tempo levar para a CPU executar a mesma tarefa novamente Todas estas caracter sticas podem fazer com que tarefas de alta prioridade n o alcancem seus limites de tempo Segundo LEROUX e SCHAFFER 2006 num RTOS as tarefas s o executadas por ordem de prioridade Se uma tarefa de alta prioridade fica pronta para execu o ela ir num pequeno e limitado intervalo de tempo tomar o controle Uma chamada do kernel tamb m conhecida por chamada de sistema uma requisi o feita pelo aplicativo ao sistema operacional para que o kernel execute uma a o pertencente a um conjunto pr definido de tarefas que a aplica o n o possa executar por n o ter a permiss o adequada para e
28. com a interrup o reconhecida qual sinal de interrup o foi ativado e especificado pelo fabricante A rotina localizada neste endere o a rotina de interrup o ISR e possui prioridade maior do que qualquer tarefa do sistema Na inicializa o do PIT feita durante a inicializa o do sistema deve se instalar a rotina de interrup o ISR que ser invocada para tratar do tempo do RTOS quando ocorrer uma interrup o do temporizador Esta rotina deve executar dentre outras atividades as seguintes a es e Atualizar o rel gio do sistema o tempo decorrido deve ser medido em ticks e indicar quanto tempo o sistema est em execu o desde sua inicializa o 65 e Fazer a chamada da fun o do kernel que notificar a passagem do tempo para todas as tarefas do RTOS em cada tick esta fun o dever trabalhar em conjunto com os TCBs das tarefas mantendo os sempre atualizados sobre quanto tempo uma tarefa ainda permanecer bloqueada e Fazer a chamada da fun o do kernel que invocar o escalonador para a execu o da tarefa de maior prioridade que estiver no estado pronto depois da atualiza o dos TCBs o escalonador deve ser invocado para verificar se houveram altera es nos estados das tarefas no decorrer do tempo e caso seja necess rio executar a tarefa de maior prioridade que estiver pronta para a execu o e Reconhecer a interrup o reiniciar o temporizador e retornar da i
29. das constantes devem vir acompanhadas de L conforme exemplo abaixo define OS TICKS PER SEC 100L 3 OBS Este o arquivo de configura o do projeto do usu rio onde ser determinado por ele quais as ferramentas necess rias para rodar sua aplica o Este arquivo deve conter APENAS o necess rio j que ele feito justamente para se economizar mem ria dos microcontroladores visto que estes possuem pouca mem ria 16 Devido ao problema de mem ria que os microcontroladores possuem Nathan Brown sugere um artif cio para economizar mem ria de dados RAM Para isso grava se um peda o do c digo fonte na mem ria ROM do microcontrolador Esta altera o apresentada a seguir No arquivo os core c na parte PRIORITY RESOLUTION TABLE do c digo substituir a linha 153 INT8U const OSUnMapTbI 256 por Microchip PIC18xxx specific lookup in program memory because of limited RAM space rom INT8U const OSUnMapTbI 256 End Microchip PIC18xxx specific No arquivo ucos ii h na parte GLOBAL VARIABLES do c digo substituir a linha extern INT8U const OSUnMapTbIl 256 por Microchip PIC18xxx specific lookup in program memory because of limited RAM space extern rom INT8U const OSUnMapTbI 256 Priority gt Index lookup table End Microchip PIC18xxx specific 17 Abra o software MPLA IDE da Microchip e crie um novo projeto indo em Project gt New 154 18
30. de envio retorna uma mensagem de erro para a tarefa Em outros kernels a tarefa pode ser bloqueada e enviada para a lista de tarefas em espera das tarefas remetentes que uma fila de espera separada das tarefas destinat rias 41 5 6 3 2 0 conte do das filas de mensagens Conforme LI e YAO 2003 filas de mensagens podem ser usadas para enviar e receber uma variedade de dados como por exemplo o valor de temperatura de um sensor um texto a ser impresso no LCD um evento do teclado e etc Algumas destas mensagens podem ser muito longas e exceder o tamanho m ximo da mensagem que determinado na cria o da fila Uma maneira de resolver este problema de limita o do tamanho da mensagem enviar ponteiros para os dados ao inv s dos dados propriamente ditos Mesmo se uma mensagem longa couber na fila melhor mandar um ponteiro para aquela mensagem pois melhora o desempenho e a utiliza o de mem ria Ao ser enviada de uma tarefa para outra a mensagem normalmente copiada duas vezes A primeira c pia acontece quando a mensagem copiada da rea de mem ria da tarefa remetente para a rea de mem ria da fila de mensagem A segunda c pia ocorre quando a mensagem copiada da rea de mem ria da fila de mensagem para a rea de mem ria da tarefa destinat ria A Figura 17 ilustra esse cen rio Sending task s Message queue s Receiving task s memory area 1 memory area memory area l
31. de estado n o implica em uma mudan a de contexto Este ltimo s ocorrer quando a tarefa de maior prioridade do sistema est pronta para se executada 5 6 1 1 1 0 estado pronto Conforme LI e YAO 2003 quando uma tarefa criada e fica pronta para a execu o o kernel coloca esta tarefa no estado pronto Neste estado a tarefa compete ativamente com todas as outras tarefas pelo tempo de execu o do processador Conforme ilustra a Figura 11 uma tarefa no estado pronto n o pode mudar se diretamente para o estado bloqueado pois necessita ser executada para poder fazer uma chamada denominada de chamada de bloqueio que possa coloc la num estado bloqueado Tarefas prontas s podem portanto mudarem se para o estado em execu o Como muitas tarefas podem estar simultaneamente no estado pronto o escalonador usa a prioridade de cada tarefa para determinar qual tarefa ir mudar para o estado em execu o 5 6 1 1 2 0 estado em execu o 31 De acordo com LI e YAO 2003 quando uma tarefa muda para o estado em execu o o processador carrega seus registradores com o conte do daquela tarefa Dessa forma o processador pode executar as instru es da tarefa e manipular sua pilha associada Conforme ilustra a Figura 11 uma tarefa pode mudar do estado em execu o para o estado pronto quando sofre preemp o de uma tarefa de maior prioridade
32. de um autom vel Suponha que o software n o conseguiu medir a tempo a velocidade atual do autom vel para o algoritmo de controle utiliz la na manuten o da velocidade especificada pelo usu rio Mesmo com a informa o perdida o sistema n o ser afetado pois o valor da velocidade adquirida em amostras consecutivas n o discrepante suficientemente para danificar o sistema No entanto se o sistema perder v rias amostras consecutivas da velocidade do carro ele estar comprometido pois o piloto autom tico n o conseguir manter a velocidade especificada dentro de um erro aceit vel Portanto de acordo com LI e YAO 2003 sistemas de tempo real do tipo brando devem atender seus limites de tempo mas com um grau de flexibilidade maior do que os do tipo cr tico 3 2 Principais caracter sticas dos sistemas de tempo real Segundo GANSSLE et al 2008 as principais caracter sticas que os sistemas de tempo real devem apresentar s o e Alto n vel de escalonamento os requisitos de tempo do sistema devem ser satisfeitos mesmo com um alto uso dos recursos do mesmo Isto implica que o sistema deve ter a habilidade de todas suas tarefas atenderem aos seus limites de tempo especificados e Operabilidade em p ssima lat ncia o sistema deve operar seguramente mesmo nos piores tempos de resposta aos eventos e Estabilidade sob sobrecarga transiente quando o sistema est sobrecarregado por eventos e for imposs
33. dispara o timer H de debounce do teclado e fica aguardando o TIMEOUT H Quando chega o sinal de TIMEOUT verifica se a tecla continua pressionada ou nao Caso sim reconhece que a tecla foi pressionada e envia o sinal correspondente H para o processo Contador Volta ao estado inicial Estados ESPERA TECLA ESPERA TIMOUT II Entradas de dados NENHUMA Saidas de dados NENHUMA Sinais de Entrada Sinal_Timout_Teclado lt Timer_teclado Sinal_s1 Sinal_s2 Sinal_s3 Sinal_s4 lt sinais enviados pelo teclado Sinais de Saida Sinal ESTADO CONTADOR gt Contador Sinal b1 Sinal b2 Sinal b3 Sinal b4 Sinal_Inic_Timout gt Timer_teclado Chamada por int server interrupgao void high_isr Chama NINGUEM OBSERVA ES esta m quina de estados recebe sinais tanto do hardware teclas via PORTB quanto de outra maquina implementada por software Timer_teclado void Teclado void switch STT_Teclado case ESPERA TECLA TECLAS PORTB amp 0x0F if TECLAS OLD TECLAS OLD_TECLAS TECLAS Sinal_Inic_Timout 1 STT_Teclado ESPERA_TIMOUT break case ESPERA_TIMOUT if Sinal_Timout_Teclado 1 Sinal_Timout_Teclado 0 STT_Teclado ESPERA_TECLA TECLAS PORTB amp OxOF if TECLAS OLD_TECLAS Sinal_s1 TECLAS amp 0x01 Sinal_s2 TECLAS amp 0x02 Sinal_s3 TECLAS amp 0x04 Sin
34. envia o sinal TIMOUT para o processo TECLAS Quando o processo TECLAS recebe o TIMOUT checa o estado das teclas e se estas estiverem est veis gera os sinais correspondentes Para Inc Dec para o processo CONTAGEM O processo contagem faz um incremento ou decremento do contador a cada chegada do sinal de TIC do rel gio de 4 Hz quando ent o envia um sinal Atualiza para o processo DISPLAY 7SEG respons vel pela atualiza o valor de contagem exibido no display de 7 segmentos Passo 4 Diagramas SDL Cada processo ent o transformado numa m quina de estados usando se para isso o formato gr fico da SDL cujos s mbolos b sicos s o mostrados abaixo 160 ESTADO PROCEDIMENTO ENTRADA DE ORIGEN SINAL SAIDA DE DESTINO SINAL CONECTOR Figura 4 S mbolos b sicos da SDL gr fica usados para representa o das m quinas de estados correspondentes aos PROCESSOS do sistema em especifica o Ser o mostrados a seguir os diagramas SDL das diversas m quinas do nosso contador Diagrama SDL do processo CONTADOR 161 Figura 5 Diagramas SDL do processo CONTADOR Notar sua correspond ncia com a maquina de estados mostrada anteriormente no Passo 1 Diagrama SDL dos processos TECLADO e TIMER 162 ESPERA TECLA Leitura Jen Interrup Timed Timor Toc tado Parmado Figura 6 Diagramas SDL dos processos TECLADO e TIMER Notar as linhas tracejadas indicando o trajeto dos sinais
35. especificado no aplicativo e geralmente est entre 10 e 200 ms Quanto mais r pido for a taxa de tick mais alto ser o overhead imposto ao sistema A interrup o do tick permite ao kernel atrasar a execu o de suas tarefas por um n mero inteiro de ticks e indicar o t rmino do tempo de espera por um evento quando uma tarefa est esperando pela ocorr ncia do mesmo Isto poss vel porque a interrup o do tick conduzir a CPU para a execu o de sua rotina ISR onde estar codificada uma fun o que invocar os algoritmos do kernel para avaliar a necessidade de se realizar o escalonamento de suas tarefas Esta capacidade de gerar eventos peri dicos torna o PIT o cora o de muitos kernels de tempo real A resolu o do atraso de uma tarefa de um tick No entanto isto n o significa que a precis o ser de exatamente um tick Esta precis o est sujeita a varia o denominada de jitter do tempo de execu o da ISR e das tarefas de maior prioridade ao causarem preemp o de uma tarefa peri dica de menor prioridade As figuras Figura 22 Figura 23 e Figura 24 exemplificam essa imprecis o jitter para uma tarefa que se atrasa de um tick As reas sombreadas indicam o tempo de execu o de cada opera o importante notar que o tempo de execu o varia para cada tipo de opera o loops condi es dentre outras O tempo de processamento da ISR ap s o tick foi exagerado para mostrar que ele tamb m est suj
36. feita pela tarefa CONTADOR ao kernel para que este lhe entregue a mensagem enviada pela tarefa TECLADO Este sinal pertencente ao servi o OSMboxPend do uC OS II e Sinal st Sinal s2 Sinal s3 Sinal s4 sinais enviados ao processo TECLADO que indica o estado das teclas 108 7 6 1 Diagrama da intera o entre blocos do contador A Figura 44 ilustra com detalhes as intera es entre os blocos funcionais interiores ao contador crescente decrescente Perceba que n o h intera o direta entre as tarefas TECLADO e CONTADOR pois toda comunica o dos sinais e dados entre estas tarefas deve ser intermediada pelo kernel Perceba tamb m que os processos para a temporiza o TIMER DO TECLADO e REL GIO DE 10Hz n o existem pois o kernel trata desta temporiza o com um de seus servi os de gerenciamento do tempo que invocado pela tarefa requisitante No caso do uC OS II o servi o utilizado o OSTimeDly Block CONTADOR REQ Fe co pr Tempo Delay inig io i Sinal_b1 MAIOR_PRIO EXEC Sinal_b2 Sinal_b3 Tempo_Detay_tim Sehica ador Sinal_b4 ENTRADA CONTAGEM TECLAS CONTADOR SA DA DISPLAY 7 SEG Figura 44 Diagrama de intera o entre blocos funcionais do contador 109 O programador que utiliza um sistema operacional de tempo real n o manipula todos os sinais trocados entre as tarefas e o kernel pois alguns sinais sao intr nsecos aos servi os do mesmo Dessa forma o programador n
37. o ou acessar um recurso Um nico sem foro pode ser adquirido finitas vezes No entanto quando este limite de vezes alcan ado nenhuma tarefa pode adquirir o sem foro at que alguma outra tarefa libere o novamente Semaphore Control Block Semaphore Name or ID Task Waiting List no Determines how many semaphore tokens are available Figura 12 Representa o ilustrativa de um sem foro Lle YAO 2003 Binary or a Count 35 O kernel rastreia o n mero de vezes que o sem foro foi adquirido ou liberado atrav s de um contador de chaves ou sinalizadores que inicializado com um valor especificado na cria o de um sem foro Quando uma tarefa adquire o sem foro o contador decrementado e quando uma tarefa libera o sem foro o contador incrementado Se o contador alcan a o valor zero o sem foro n o possui nenhuma chave logo a tarefa requisitante n o poder adquirir o sem foro e poder ficar bloqueada se esta escolher esperar pela disponibilidade do sem foro Todas as tarefas bloqueadas por um sem foro indispon vel s o mantidas em uma lista de tarefas em espera que podem estar ordenadas tipo first in first out FIFO ou ent o as maiores prioridades primeiro Quando um sem foro fica dispon vel o kernel permite que a primeira tarefa da lista de tarefas em espera adquira o sem foro ou sua chave mudando o estado desta tarefa para o estado em execu o caso esta tarefa
38. pelo desenvolvedor Neste ponto a tarefa removida da lista de tarefas em espera do sem foro e colocada no estado pronto ou em execu o e N o esperar a tarefa requisita o sem foro mas como este n o est dispon vel a tarefa n o bloqueada Um sem foro deve ser liberado com cuidado pois pode resultar em perdas de acesso exclusivo a um recurso compartilhado ou um mau funcionamento nos dispositivos de O Isto pode ocorrer por exemplo com uma tarefa que obteve acesso exclusivo a um recurso compartilhado ao adquirir um sem foro associado Se outra tarefa acidentalmente liberar este sem foro uma terceira tarefa que esteja 53 esperando o mesmo pode obter acesso ao mesmo recurso corrompendo se desta forma os dados 5 7 2 3 Limpando a lista de tarefas em espera Alguns kernels suportam uma opera o que limpa a lista de tarefas em espera de um sem foro desbloqueando as tarefas que estejam na mesma Esta opera o til para transmiss o de sinais a um grupo de tarefas e denominada de opera o flush A Tabela 7 descreve a opera o flush Tabela 7 Opera o de limpeza da lista de tarefas em espera de um sem foro Ll e YAO 2003 Desbloqueia todas as tarefas que aguardam um sem foro 5 7 2 4 Obtendo a informa o de um sem foro Obter informa es de um sem foro importante para corre o de erros e monitoramento do programa A Tabela 8 identifica estas opera es
39. us 99 928 ms ou seja 0 072 de erro se mostrando portanto quase 10 vezes mais preciso do que o programa sem o RTOS VH ES770 Aula 1 ProgContadorSDL c case CRESCENTE if Sinal ESTADO CONTADOR 0 if Sinal ESTADO CONTADOR l Sinal bl Sinal ESTADO CONTADOR 0 STT Contador CRESCENTE if Sinal ESTADO CONTADOR 2 Sinal bZ Sinal ESTADO CONTADOR 0 STT Contador DECRESCENTE if Sinal ESTADO CONTADOR 3 Sinal b3 Sinal ESTADO CONTADOR STT Contador PARADO if Sinal ESTADO CONTADOR ffSinal b4 Sinal_ESTADO_CONTADOR STT_Contador ZERO if Sinal TIC 100 1 Sinal TIC 100 0 CONTAGEM CONTAGEM 1 if CONTAGEM gt 9999 CONTAGEM 0 NUMERO CONTAGEM atualiza display break case DECRESCENTE if Sinal ESTADO CONTADOR 0 Instruction Cycles Time m Secs Stopwatch Total Simulated 100773 207012 100 773000 207 012000 Processor Frequency MHz 4 000000 123 Figura 49 Ilustra o da simula o do contador crescente decrescente sem o uso do RTOS 124 TEN maqcont_dispint c for 77 REC_SINAL_CONTADOR INTSU OSMboxPend CORREIO 0 serr OSSemPost Semcontador switch STT_Contador case PARADO if REC SINAL CONTADOR 0 if REC SINAL CONTADOR 1 Sinal bl STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sin
40. vel atender a todos os limites de tempo de suas tarefas os limites mais cr ticos devem ser garantidos 9 Outra importante caracter stica de um sistema de tempo real a previsibilidade do mesmo Segundo STEWART 2001 o termo previsibilidade refere se aos sistemas que possuem um comportamento no tempo dentro de uma faixa aceit vel que atendem a um padr o Geralmente o pior limite de tempo de execu o de cada tarefa deve ser conhecido para se criar um sistema previs vel Um tipo especial de sistema previs vel um sistema determin stico Nestes tipos de sistemas n o somente o comportamento no tempo deve atender a um padr o como ele pode ser pr determinado ou seja uma condi o inicial pode ser dada ao sistema determinando seu estado futuro Um sistema de tempo real torna se determin stico quando uma fatia de tempo pr alocada para a execu o de cada tarefa 4 UMA BREVE DEFINICAO DE SISTEMA OPERACIONAL Conforme LI e YAO 2003 aplica es simples de software s o geralmente designadas para serem executadas sequencialmente uma instru o de cada vez numa cadeia pr determinada de instru es Entretanto este esquema inapropriado para aplica es de sistemas embarcados de tempo real que geralmente tratam de v rias entradas e sa das dentro de curtos intervalos de tempo Softwares para aplica es em sistemas embarcados de tempo real devem ser desenvolvidos para serem concorrentes Este desenvolv
41. 0 Configura o dos bits do TOCON DATA 2006 Quando o Timer0 ultrapassa sua contagem maxima seu flag bit de interrup o acionado TMROIF 1 no registrador que controla a interrup o deste perif rico INTCON Se o bit TMROIE do INTCON estiver habilitado TMROIE 1 e suas interrup es estiverem habilitadas atrav s do bit GIE GIE 1 uma interrup o gerada As fun es dos bits do INTCON s o apresentadas na Figura 31 83 R W 0 R W 0 ae R W 0 R W 0 L2 O GEGEN PEEGEL THROE TOE ReiE minor ira Rr bit 7 bito bit 7 GIE GIEH Global Interrupt Enable bit When IPEN 0 1 Enables all unmasked interrupts 0 Disables all interrupts When IPEN 1 1 Enables all high priority interrupts 0 Disables all interrupts bit 6 PEIE GIEL Peripheral Interrupt Enable bit When IPEN 0 1 Enables all unmasked peripheral interrupts 0 Disables all peripheral interrupts When IPEN 1 1 Enables all low priority peripheral interrupts 0 Disables all low priority peripheral interrupts bit 5 TMROIE TMRO Overflow Interrupt Enable bit 1 Enables the TMRO overflow interrupt 0 Disables the TMRO overflow interrupt bit 4 INTOIE INTO External Interrupt Enable bit 1 Enables the INTO external interrupt 0 Disables the INTO external interrupt bit 3 RBIE RB Port Change Interrupt Enable bit 1 Enables the RB port change interrupt 0 Disables the RB port change interrupt bit 2 TMROIF TMRO Overflow Interr
42. 0x6D 5h 5 0x7D 6h 6 0x07 7h 7 Ox7F 8h 8 0x6F H 9h 9 0x00 HW Ah A 0x00 Bh b 0x00 HCh C 0x00 Dh d 0x00 HEh E 0x00 Fh F LE RA ARS a RE A ER A A PORTBbits RB4 0 PORTBbits RB5 0 PORTBbits RB6 0 PORTBbits RB7 0 switch num_digito case 0 PORTBbits RB4 1 break case 1 PORTBbits RB5 1 break case 2 PORTBbits RB6 1 break case 3 PORTBbits RB7 1 break digito_bcd digito_bcd amp 0x0F Mascara 4 LSb PORTD TABELA 7SEG digito bcd Mostra d gito peer ie a EERE EERE Fun o atualiza display CONTAGEM pe eee eee ie ie ERAR ERRR KRKK KK N Descri o separa cada d gito numa string II II II II II II II II II II II II II void atualiza display void que sera usada pela rotina que aciona o display de LEDs Entradas de dados Saidas de dados Sinais de Entrada Sinais de Saida Chamada por Chama OBSERVA ES unsigned char vari vel global NUMERO vari vel global LED NENHUM NENHUM Contador NINGUEM A convers o usa o m todo das divis es sucessivas y int X x NUMERO NUMERO_BCD 4 0 End of string LED 0 0 LED 1 0 LED 2 0 LED 3 0 8 if x 0 while x 0 NUMERO_BCD i x 10 y NUMERO_BCDji LED i y x x 10 is 1 else NUMERO BCD 3 NUMERO BCD 2 NUMERO BCD 1 NUMERO BCD 0 0 o 0 o 135 AP NDICE B C
43. 54 Tabela 8 Opera es para adquirir informa es sobre os sem foros LI e YAO 2003 Opera o Descri o da opera o Mostra informa es gerais sobre sem foros Show info Mostra uma lista das IDs das tarefas que est o esperando por um sem foro Show blocked tasks 5 7 3 Servi os de gerenciamento de fila de mensagens As opera es t picas executadas sobre as filas de mensagens s o e Criar e apagar as filas de mensagens e Enviar e receber mensagens e Obter informa o sobre as filas de mensagem 5 7 3 1 Criando e apagando filas de mensagens Filas de mensagens podem ser criadas e apagadas utilizando se duas simples chamadas listadas na Tabela 9 Tabela 9 Opera es para criar e apagar uma fila de mensagens Lle YAO 2003 Descri o da opera o Create Cria uma fila de mensagem Delete Apaga uma fila de mensagem 55 Conforme LI e YAO 2003 quando criada uma fila de mensagens tratada como um objeto global e n o pertence a nenhuma tarefa em particular O desenvolvedor da aplica o deve decidir o tamanho da fila o tamanho m ximo das mensagens e a ordem de espera das tarefas que est o bloqueadas na fila de mensagens Apagar uma fila de mensagens automaticamente desbloqueia todas as tarefas que estavam na lista de tarefas em espera da fila de mensagens e as mensagens que estavam na lista s o perdidas 5 7 3 2 Enviando e recebendo mensage
44. 7 2 1 2 PORTD Conforme DATA 2006 a PORTD tamb m uma via bidirecional de 8 bits tendo seu pr prio registrador de dados PORTD de dire o dos dados TRISD e seu registrador armazenador LATD Operando como uma via bidirecional a PORTD similar PORTB Para esta aplica o o tratamento dado a PORTD foi o mesmo que o dado PORTB ou seja uma via bidirecional de 8 bits A Tabela 13 mostra a fun o de cada um dos bits da PORTD 81 Tabela 13 Fun o dos bits da PORTD do PIC18F452 DATA 2006 Ee RDO PSPO bito STATTL Input output port pin or parallel slave port bito RD1 PSP1 bit STATLM Input output port pin or parallel slave port bit1 RD2 PSP2 bit2 STATTL Input output port pin or parallel slave port bit2 PRDaPSPs bia STA inpuvoutput por pin or parallel slave portbi PRDaPsPa bia ST TTL InpuVoutput port pin or parallel slave por bia ROSPSPS bis ST TTLC inpuvoutput port pin or paralel slave portbi5 RDSPSPO bie ST TTL ipuiouputporpmorpareisaveporbio Legend ST Schmitt Trigger input TTL TTL input Note 1 Input buffers are Schmitt Triggers when in I O mode and TTL buffer when in Parallel Slave Port mode 7 2 1 3 TIMERO TIMERO de acordo com DATA 2006 um contador temporizador program vel que pode operar com 8 ou 16 bits incrementado por um sinal de clock derivado do clock do processador Fcikprocessdor 4 OU de um clock externo Esse sina
45. A Codigo do contador com o uso do RTOS ICONTADOR COM O USO DE RTOS Arquivo MAQCONT c Versao 1 0 Autor Gabriel Soares Martins Junho de 2008 Faculdade de Engenharia Mec nica Universidade Estadual de Campinas include includes h include lt timers h gt include lt delays h gt PIC configuration pragma config OSC XT pragma config BOR OFF pragma config WDT OFF pragma config LVP OFF it 1 DECLARA ES 1 1 Constantes Internas E RUI ORE Ao ES nl STO Wad ye E Pe PO RA SOS TODO ER ks th DO GD et a tN a hs E SU Se SE TS E Defini o dos estados do processo Contador define PARADO 0 define CRESCENTE 1 define DECRESCENTE 2 define ZERO 3 Defini o dos estados do processo Display de LEDs define DIGITO O 0 define DIGITO 1 1 define DIGITO 2 2 define DIGITO 3 3 i 1 2 Vari veis globais int NUMERO vari vel necess ria para armazenar a contagem do contador e envi la para a rotina atualiza display onde o n mero ser quebrado em 4 d gitos unsigned char NUMERO BCD 4 vetor que ser utilizado para guardar os 4 d gitos de NUMERO LED 4 vetor que ser utilizado para guardar os 4 d gitos de NUMERO err vari vel utilizada para armazenar c digo de erro dos servi os do microC OS II INT8U STT Display LEDs DIGITO_3 vari vel que guarda o estado do processo Display de LEDs Esta vari vel deve ser global para
46. D um nome para seu projeto em Project Name e em Project Directory escolha o caminho Micrium SOFTWARE uCOS I Work Confirme com OK 19 Em Project gt Select Language Tool Suite escolha como Active Toolsuite o item Microchip C18 Toolsuite Localize cada um dos arquivos execut veis que aparecem em Toolsuite Contents na pasta em que foi instalado o Microchip MPLAB C18 compiler Os arquivos estar o em um caminho parecido com MCC78 bin Caso n o tenha instalado o execut vel mpasmwin exe este pode ser desconsiderado Confirme com OK 20 Em Project gt Set Languages Tool Location v em Microchip C18 Toolsuite gt Default Search Paths amp Directories gt Include Search Path e coloque o diret rio IMCC 18lh caminho onde foi instalado o Microchip MPLAB C18 compiler Em Microchip C18 Toolsuite gt Default Search Paths amp Directories gt Library Search Path coloque o diret rio IMCC 18Vib Confirme com OK 21 Em Project gt Build Options gt Project v na aba MPLAB C18 Configure da seguinte forma Na categoria General Integer promotion disabled Default storage class Auto Na categoria Memory Model 155 Large Code Model Large Data Model Multibank Model Na categoria Optimization Disable Confirme com Aplicar 22 Ainda em Project gt Build Options gt Project va a aba Directories Clique em Suite defaults e confirme com OK 23 V a View gt Project Adicione os arquivos fontes do uC OS
47. Doutor Luis Ot vio Saraiva Ferreira link http www fem unicamp br lotavio para a aula N 08 da disciplina ES770 Laborat rio de Sistemas Digitais Esta disciplina foi oferecida no primeiro semestre de 2009 pelo curso de Engenharia de Controle e Automa o da Universidade Estadual de Campinas O experimento na ntegra se encontra em ANEXO 7 4 Crit rios utilizados para a compara o entre os softwares Os crit rios que ser o utilizados para se comparar os dois softwares ser o e Precis o da contagem no incremento e decremento da mesma medida atrav s da ferramenta Stopwatch do software MPLABO IDE 91 e Facilidade da codifica o do programa medida atrav s da o Quantidade de m quinas de estado criadas pelo programador o Quantidade de estados criados pelo programador o Quantidade de sinais criados pelo programador 7 5 Contador crescente decrescente sem RTOS O experimento localizado em ANEXO mostra o desenvolvimento do contador crescente decrescente com apenas tr s estados Contagem Crescente Contagem Decrescente e Parar Contagem No final do experimento proposto como exerc cio incluir o quarto estado Zerar Contagem Com estes quatro estados e com o incremento decremento da contagem a 10 Hz ao inv s de 4 Hz o contador desenvolvido no experimento em ANEXO se equivale ao proposto neste trabalho O c digo em linguagem C do programa do contador sem o uso do sistema operacional de tempo real se enc
48. I I I I III I II Aqui s o chamados os processos do sistema isto as m quinas de estado definidas no diagrama de parti o do sistema e detalhadas com os diagramas SDL MagDisplayLEDs Processo que aciona o display de LEDs Contador Processo que implementa o contador crescente decrescente Teclado Processo que faz a leitura e debounce do teclado 139 Timer Teclado Processo do timer do teclado Timer 100 Processo da base de tempo de 4 Hz do contador perecer REET ETRE TR TT TITTLE LAAT TELE EE EER BRR Ee ERE e erde ve le RRR RRR TE AE AE TE REET R AE EERE EERE dd VI PERE ERR RRR EERE RRR E EERE EERE RREE ERIE E EERE REESE EERE EER ER ERTS EE TI TR TR TTT TTT TTT PERERA RRR EERE EER R ERE R EEE AAT EEE TEER EERE REESE SESE E SERRE TEER EEE TTT TTR TT TT TTT II M QUINAS DE ESTADO S tt AREER TEER TESS EERE EERE EERE EEE EER TT TR TT TT TTT BR RRE EERE R RRR REAR E AERA RE ER ETAT TREE EEE REESE SEES EERE EEE EERE REE I EIR ETT TE EEEE NE E RRR RRR dd A A EERE A A od EERE EERE EERE EERE EERE EERE EE ETT TEETER BRR ERR EERE ii a EE EEE EEE Fun o MagDisplayLEDs Descri o Mostra valor no display de LEDs Seleciona o d gito que ser aceso e chama a fun o que escreve no d gito A cada tic da base de tempo de 100 ms comuta para o pr ximo digito do display Tem 4 estados um para cada digito II usado no display de LEDs Estados DIGITO
49. IMER TECL CONTANDO Tick do hardware Decrementa valor do contador Figura 40 Diagrama SDL do processo TIMER TECLADO Sinal Timout Teclado 7 5 5 2 Caracter sticas do processo TIMER TECLADO e Estados o TIMER TECL PARADO o TIMER TECL CONTANDO e Entradas de dados o NENHUMA e Sa das de dados o NENHUMA 100 101 e Sinais de Entrada o Sinal_Inic_Timout vem do processo TECLADO e Sinais de Sa da o Sinal Timout Teclado vai para o processo TECLADO 7 5 6 0 processo TIMER 100 7 5 6 1 Descri o do processo TIMER 100 O processo REL GIO DE 10 Hz TIMER 100 temporiza o intervalo de 100 milissegundos entre incrementos ou decrementos do contador Para isto ele decrementa um contador a cada tick do hardware at que a contagem chegue zero Quando o contador atinge o valor zero este reiniciado e a contagem recome a O processo TIMER 100 tem seu diagrama SDL representado na Figura 41 Espera Tick do hardware Tick do hardware Decrementa contador 100ms Inicializa contador Sinal TIC 100 Figura 41 Diagrama SDL do TIMER 100 7 5 6 2 Caracteristicas do processo TIMER 100 e Estados o nico e Entradas de dados o NENHUMA e Sa da de dados o NENHUMA e Sinais de Entrada o NENHUM e Sinais de Sa da 102 103 o Sinal TIC 100 vai para o processo CONTADOR 7 5 7 0 escalonador c clico e seu intervalo de interrup o Para que o programa tenh
50. IMER TECLADO e TIMER 100 puderam ser completamente substitu dos por apenas um servi o de gerenciamento do kernel no caso do uC OS Il pelo servi o OSTimeDly Mesmo em uma aplica o simples como o contador crescente decrescente aqui apresentado o RTOS trouxe melhorias significativas Em aplica es complexas que possuem um n mero elevado de tarefas estas melhorias s o muito mais evidentes e permitem que o programador agregue muito mais confiabilidade ao software desenvolvido com um sistema de tempo real na medida em que trata com mais precis o os seus requisitos de tempo Al m disso o RTOS diminui o tempo de desenvolvimento do software por facilitar a codifica o do mesmo ao reduzir o tamanho do c digo e ao dividir o software em m dulos quando da cria o das tarefas do sistema 10 REFERENCIAS BIBLIOGRAFICAS BITTON S Fundamentals of Microcontrollers Sponsored by ARM In techonline Courses amp Lectures 2008 Disponivel em lt http techonline com learning course 208800447 gt Acesso em 15 jun 2009 BROWN Nathan SputnickOnline com s 2005 Dispon vel em lt http Awww sputnickonline com projects programs micro uCOS for PIC18 index htm I gt Acesso em 10 jun 2009 DATA Sheet PIC18FXX2 Microchip s l Microchip Technology Inc 2006 GANSSLE Jack et al Embedded Hardware Oxford Elsevier Inc 2008 GANSSLE Jack et al Embedded Software Oxford Elsevier Inc 2008 GANSSLE J Real Time P
51. Sinal de in cio da temporiza o do teclado Sinal st sinais recebidos pelo PORTB pelo teclado Sinal s2 Sinal s3 Sinal s4 l STT_Teclado Estado do processo Teclado ARMAZENADORES DE ESTADO STT_Timer_Teclado Estado do processo Timer do Teclado STT_Display_LEDs Estado do processo Display de LEDs STT Contador Estado do processo Contador l TECLAS Variavel que armazenar o estado atual das teclas vari veis diversas OLD TECLAS Nariavel que armazenar estado anterior das teclas NUMERO BCD 4 Vetor que armazenar os digitos do display de 7 segmentos LED 4 Vetor que armazenar os digitos do display de 7 segmentos i X y int NUMERO Conteudo do contador CONTAGEM Conteudo do contador ERE ELE EER EERE ERE RR EE RE TABELA PARA OS DISPLAYS DE 7 SEGMENTOS RR RR RE const char TABELA_7SEG 16 Ox3F 0h 0 0x06 Ilih 1 0x5B 2h 2 0x4F H3h 3 0x66 HW 4h 4 0x6D 5h 5 0x7D 6h 6 0x07 7h 7 Ox7F 8h 8 Ox6F 9h 9 0x00 HW Ah A 0x00 Bh b 0x00 HCh C 0x00 HDh d 0x00 HEh E 0x00 HW Eh F Prot tipos das fun es usadas na rotina de interrup o void high isr void void escreve display LEDs char num digito char digito bcd void MaqDisplayLEDs
52. Tarefa pronta estado determinado pelo kernel o Tarefa bloqueada estado determinado pelo kernel e Entradas de dados o NENHUMA e Sa das de dados o NUMERO vai para o processo MaqDisplayLEDs n mero de 16 bits que ser mostrado no display e Sinais de Entrada o Sinal bt Sinal b2 Sinal b3 Sinal b4 vem da tarefa TECLADO Utiliza o servi o OSMboxPend o Tempo Delay fim vem do Kernel sinal determinado pelo kernel o MAIOR PRIO EXEC vem do kernel sinal determinado pelo kernel e Sinais de Sa da o Semcontador vai para a tarefa TECLADO Utiliza o servi o OSSemPost o Tempo_Delay_inicio vai para o kernel sinal determinado pelo kernel Pertencente ao servi o OSTimeDly o REQ Sinal bn vai para o kernel sinal determinado pelo kernel Pertencente ao servi o OSMboxPend 7 6 4 0 PROCESSO MagDisplayLEDs O processo MaqDisplayLEDs n o foi tratado como uma tarefa do sistema e sim como uma rotina chamada na interrup o do TIMERO Esta escolha deveu se ao 116 fato de que quando tratado como tarefa o processo demonstrou uma cintila o indesej vel no display de 7 segmentos determinada principalmente pela imprecis o da execu o de sua tarefa a cada clock do sistema jitter conforme a se o 5 8 2 visto que esta tarefa foi tratada como tarefa de menor prioridade Como esta rotina deveria ser executada a todo clock do rel gio preferiu se coloc la na interrup o o que diminuiu o o
53. YAO 2003 Descri o da opera o Obt m informa es de uma lista de mensagens Obt m a lista de tarefas que est o na lista de tarefas em espera de uma fila de mensagens Show queue info Show queue s task waiting list 5 8 A base de tempo de um RTOS Nas aplica es de sistemas embarcados as tarefas do sistema e do usu rio geralmente agendam suas atividades para serem executadas no decorrer do tempo O agendamento futuro destas atividades feito atrav s de temporizadores presentes no hardware dos sistemas embarcados e utilizando chamadas de temporiza o do kernel 5 8 1 0s Temporizadores De acordo com LI e YAO 2003 os temporizadores tamb m conhecidos como temporizadores de intervalo program vel PIT s o dispositivos utilizados para a contagem de eventos para a indica o de tempo decorrido para gera o de eventos peri dicos a taxas control veis e outras aplica es que resolvam sistemas com problemas de controle do tempo 60 Apesar da diferen a entre os diversos chips temporizadores existentes algumas caracter sticas s o comuns entre todos um sinal de clock de entrada com frequ ncia fixa registradores de controle program veis e um sinal de sa da A temporiza o de um evento determinada pela taxa de interrup o do temporizador que o n mero de interrup es geradas por segundo A taxa de interrup o do temporizador calculada como fun o da frequ ncia do clock d
54. a 46 Diagrama SDL do processo TECLADO com o uso de um RTOS 7 6 2 2 Caracter sticas da tarefa TECLADO e Estados o Tarefa em execu o estado determinado pelo kernel o Tarefa pronta estado determinado pelo kernel o Tarefa bloqueada estado determinado pelo kernel e Entradas de dados o NENHUMA e Saidas de dados 112 o NENHUMA e Sinais de Entrada o Semcontador vem do processo CONTADOR Utiliza o servi o OSSemPend o Tempo_Delay_fim vem do kernel sinal determinado pelo kernel o MAIOR_PRIO_EXEC vem do kernel sinal determinado pelo kernel o Sinal s1 Sinal s2 Sinal s3 Sinal s4 Leitura das teclas do teclado e Sinais de Sa da o Sinal bt Sinal b2 Sinal b3 Sinal b4 vai para o processo CONTADOR Utiliza o servi o OSMboxPost o Sinal de n o altera o das teclas Utiliza o servi o OSMboxPost o Tempo Delay inicio vai para o kernel sinal determinado pelo kernel Pertencente ao servi o OSTimeDly o REQ Semcontador vai para o kernel sinal determinado pelo kernel Pertencente ao servi o OSSemPend 7 6 3 A tarefa CONTADOR 7 6 3 1 Descrigao da tarefa CONTADOR A tarefa CONTADOR aguarda receber a mensagem da tarefa TECLADO sinais b1 b2 b3 ou b4 atrav s do servi o OSMboxPend para iniciar sua execu o Esta mensagem cont m o estado da contagem da tarefa CONTADOR Quando recebe esta mensagem a tarefa CONTADOR envia um sem foro a tarefa TECLADO atrav s do se
55. a Universidade Estadual de Campinas w aT Faculdade de Engenharia Mec nica UNICAMP Engenharia de Controle e Automa o ES952 TRABALHO DE GRADUA O II AN LISE DO USO DE UM SISTEMA OPERACIONAL DE TEMPO REAL EM UM SOFTWARE DESENVOLVIDO PARA UM CONTADOR CRESCENTE DECRESCENTE COM RESOLU O DE 100 ms Aluno Gabriel Soares Martins RA 023876 Orientador Prof Dr Luiz Ot vio Saraiva Ferreira JUNHO 2009 GABRIEL SOARES MARTINS ANALISE DO USO DE UM SISTEMA OPERACIONAL DE TEMPO REAL EM UM SOFTWARE DESENVOLVIDO PARA UM CONTADOR CRESCENTE DECRESCENTE COM RESOLU O DE 100 ms Trabalho de conclus o apresentado para a banca examinadora do curso de Engenharia de Controle e Automa o da Universidade Estadual de Campinas como exig ncia parcial para a obten o do t tulo de Engenheiro de Controle e Automa o sob orienta o do Prof Dr Luiz Otavio Saraiva Ferreira Campinas 2009 RESUMO Este trabalho de gradua o fez uma compara o entre dois softwares utilizados para uma mesma aplica o um contador crescente decrescente Em um dos softwares foi utilizado um sistema operacional de tempo real Atrav s desta compara o foi mostrado que o uso sistema operacional de tempo real aumentou em quase 10 vezes a precis o da contagem e reduziu o n mero de fun es e vari veis do c digo necess rias para esta aplica o Palavras chave sistemas operacionais de tempo real tarefas sem for
56. a comportamento de tempo real necess rio fazer uma rotina que gerencie a distribui o do tempo do processador aos processos Esta rotina como nos sistemas operacionais denominada de Escalonador Um escalonador que n o possui as ferramentas de um sistema operacional para ser implementado passa o controle da CPU aos processos de forma sequencial e ordenada num intervalo de tempo fixo Este tipo de escalonador denominado de escalonador c clico A Figura 42 ilustra o fluxograma do escalonador c clico implementado no contador crescente decrescente A cada interrup o do TIMERO todos os processos s o invocados para execu o na ordem da figura O valor do intervalo de interrup o ou seja o tempo entre duas interrup es consecutivas foi escolhido em fun o do Display de 7 segmentos devido a necessidade de se fazer a multiplexa o dos displays no tempo conforme informado na se o 7 3 Como cada display deve ter um per odo de acionamento de 20 ms a m quina de estado MaqDisplayLEDs deve alterar seu estado a cada 5 ms j que s o 4 displays Portanto o intervalo de interrup o do TIMERO a ser utilizado ser de 5 ms 104 NICIO w t ACIONA DISPLAY DE LEDS CONTAGEM Interrup o do TIMERO y TECLADO E t E TIMER DO TECLADO 40 ms y RELOGIO 10 Hz t RETORNA Figura 42 Fluxograma do Escalonador C clico 7 6 Contador crescente decrescente com RTOS
57. a etapa leva para ser executada dependente do RTOS utilizado e totaliza de 50 a 500 ciclos de instru o para se realizar uma troca de contexto O tempo que o escalonador leva para trocar de uma tarefa para outra o tempo de troca de contexto e proporcional ao n mero de ciclos de instru o para realiz la Tabela 1 Sequ ncia de passos de uma troca de contexto LAMIE 2009 Salvar o contexto ie os valores dos registradores FPeGPeo PC datarefa a ser suspensa na pilha Salvar o atual ponteiro da pilha no TCB da tarefa a ser suspensa Trocar para o ponteiro da pilha do sistema Retornar ao escalonador Encontrar a tarefa de maior prioridade que est pronta para ser executada Trocar para o ponteiro da pilha da nova tarefa 2 50 20 100 Retornar para a nova tarefa a partir da localiza o em que se encontrava o seu PC anterior 2 40 Este tempo segundo LI e YAO 2003 relativamente insignificante comparado maioria das opera es que uma tarefa executa Entretanto se uma aplica o possui uma frequente troca de contexto pode apresentar um overhead desnecess rio diminuindo muito seu desempenho A id ia desenvolver aplica es que n o envolvam muitas trocas de contexto 22 Segundo OSHANA 2007 o escalonador executado na mesma CPU que as tarefas do desenvolvedor da aplica o o que j traz uma penalidade para o sistema na utiliza o dos servi os do escalonador Existem
58. a vari vel TMRO de 1 dividido em dois registradores TMROL e TMRO O byte mais significativo deve ser carregado no registrador TMRO e o menos significativo no TMROL A constante 256 de 1 deve ser substitu da pelo valor 65536 para se operar o temporizador com 16 bits 7 2 2 Displays de 7 segmentos Segundo GUIA 2001 a placa possui quatro displays de 7 segmentos sendo que todos os 8 leds necess rios para formar um d gito 7 segmentos mais o ponto de cada um dos 4 displays est o conectados simultaneamente ao PORTD conforme ilustra a Figura 32 85 DISPLAY S DE 7 SEGMENTOS Figura 32 Esquema el trico do display de 7 segmentos da placa McLab2 GUIA 2001 As vias de sele o de cada um dos displays feita atrav s dos 4 bits mais significativos do PORTB e seguem a Tabela 14 Tabela 14 Pinagem do PORTB referente aos displays de 7 segmentos da placa McLab2 GUIA 2001 PIC Display E Para que os leds dos displays sejam acesos deve se escrever o valor 1 no bit do PORTD RDO a RD7 referente ao led que se quer acender e no bit do PORTB 86 RB4 A RB7 do display que se quer acionar Observe na Figura 32 que todos os segmentos dos displays estao ligados simultaneamente ao PORTD logo se todos os displays forem acionados ao mesmo tempo o mesmo d gito aparecer 7 2 3 Teclado Conforme GUIA 2001 existem 4 teclas na placa Quando elas est o em estado normal normalmente aberto o micro
59. aca de desenvolvimento McLab2 foi fabricada pela Mosaico Engenharia Os recursos que a placa oferece s o e LCD alfanum rico e Displays de leds de 7 segmentos e Teclas e leds e Buzzer e Memoria serial EEPROM 24C04 protocolo I C e Comunica o serial RS232 e Conversao A D e Sensor de temperatura e Aquecedor e Ventilador e Tac metro e Leitura de jumpers e Conector de expans o contendo 15 I 0 s e Bot o de reset manual e Grava o in circuit compat vel com McFlash Para o desenvolvimento do contador crescente decrescente de 4 d gitos com 100 ms de resolu o foram utilizados somente as teclas teclado e os displays de 7 TT segmentos O microcontrolador utilizado na placa como objeto central foi o PIC18F452 Apenas os componentes da placa bem como os do PIC18F452 que foram utilizados no desenvolvimento do contador ser o descritos nesta se o Informa es adicionais podem ser encontradas no manual de utiliza o da placa MClab2 e no datasheet do PIC18F452 A Figura 28 ilustra a placa McLab2 PIC18F452 P 4 Displays de 7 Segmentos J 4 teclas teclado Figura 28 Placa de desenvolvimento McLab2 7 2 1 PIC18F452 As principais caracteristica do microcontrolador PIC18F452 sao e 8 bits de barramento de dados e 32K de mem ria de programa tipo Flash e 1 5K bytes de mem ria de dados vol til RAM e 256 bytes de memoria de dados n o vol til EZPROM
60. al bZ STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal_b4 STT Contador ZERO break case CRESCENTE if REC SINAL CONTADOR 0 if REC SINAL CONTADOR 1 Sinal bl STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal bZ STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal_b4 STT Contador ZERO Stopwatch Total Simulated CONTAGEM CONTAGEM 1 Instruction Cycles 99928 617624 if CONTAGEM gt 9999 CONTAGEM 0 tee Santee en Time mSecs 99 928000 617 624000 atualiza display break Processor Frequency MHz 4 000000 case DECRESCENTE if REC SINAL CONTADOR 0 if REC SINAL CONTADOR 1 Sinal bl STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal bZ STT Contador DECRESCENTE Figura 50 Ilustra o da simula o do contador crescente decrescente como uso do RTOS 9 CONCLUSAO A analise comparativa entre os programas desenvolvidos para o contador crescente decrescente evidenciou que o uso do sistema operacional de tempo real aumentou a precis o da contagem em quase 10 vezes Al m disso o RTOS facilitou a codifica o do programa ao diminuir o n mero de fun es e vari veis necess rias para o software da aplica o Fun es inteiras como os processos T
61. al_b2 Sinal_b3 Sinal_TIC_100 lt Timer_100 NENHUM int server interrup ao void high_isr atualiza display o valor de NUMERO que uma vari vel global convertido em uma string de caracteres bcd pela rotina atualiza display switch STT Contador case PARADO if Sinal ESTADO CONTADOR 0 if Sinal ESTADO CONTADOR 1 Sinal bi Sinal ESTADO CONTADOR 0 Um sinal deve sempre ser consumido STT Contador CRESCENTE if Sinal ESTADO CONTADOR 2 Sinal_b2 Sinal ESTADO CONTADOR 0 STT Contador DECRESCENTE if Sinal ESTADO CONTADOR 3 Sinal b3 Sinal ESTADO CONTADOR 0 STT Contador PARADO if Sinal ESTADO CONTADOR 4 Sinal_b4 Sinal ESTADO CONTADOR 0 STT Contador ZERO if Sinal_TIC_100 1 break Sinal_TIC_100 0 case CRESCENTE if Sinal ESTADO CONTADOR 0 if Sinal ESTADO CONTADOR 1 Sinal bi Sinal ESTADO CONTADOR 0 STT Contador CRESCENTE if Sinal ESTADO CONTADOR 2 Sinal b2 Sinal ESTADO CONTADOR 0 STT Contador DECRESCENTE if Sinal ESTADO CONTADOR 3 Sinal_b3 Sinal ESTADO CONTADOR 0 STT Contador PARADO if Sinal ESTADO CONTADOR 4 Sinal_b4 Sinal ESTADO CONTADOR 0 STT Contador ZERO if Sinal_TIC_100 1 Sinal_TIC_100 0 CONTAGEM CONTAGEM 1 if CONTAGEM gt 9999 CONTAGEM 0 NUMERO CONTAGEM atual
62. al_s4 TECLAS amp 0x08 if Sinal st 0 Sinal ESTADO CONTADOR 1 Sinal_b1 if Sinal_s2 0 Sinal ESTADO CONTADOR 2 Sinal b2 if Sinal_s3 0 Sinal ESTADO CONTADOR 3 Sinal b3 if Sinal_s4 0 Sinal ESTADO CONTADOR 4 Sinal_b4 break pec EERE ARH R ERA IA AREA HAAR EERE EE EEE A Fun o Timer teclado Descri o 143 Esta maquina de estados realiza a temporiza o de 40 ms da elimina o de repique do teclado debounce Tem dois estados TIMER TECL PARADO e TIMER_TECL_CONTANDO No pri meiro estado aguarda o sinal para iniciar a temporiza o e no segundo estado decrementa o contador at que este chegue a zero quando emite o sinal de TIMOUT para o processo do Teclado e volta para o estado inicial Estados TIMER TECL PARADO e TIMER TECL CONTANDO Entradas de dados Saidas de dados Sinais de Entrada Sinais de Saida Chamada por Chama N OBSERVA ES void Timer_Teclado void NENHUMA NENHUMA Sinal Inic Timout lt Teclado Sinal Timout Teclado gt Teclado int server gt interrup o void high isr NINGUEM Os timers ou temporizadores executam a fun o de medir um intervalo de tempo relativo sua ativa o switch STT Timer Teclado case TIMER TECL PARADO if Sinal Inic Timout 1 Sinal_Inic_Timout 0 COUNT_TIMOUT 8 8 5ms 40 ms STT_Timer_Tecla
63. alor do ganho proporcional KP Mostre o valor de KP no display de sete segmentos Prazo de entrega duas semanas 1 Belina Ferenc SDL with applications from protocol specification Prentice Hall International UK Municha Hanser Verlag 1991 2 Manual da linguagem SDLRT extens o de tempo real da SDL Pode ser baixado gratuitamente do link http www sdirt org standard V2 2 pdf SDLRT pdf 13 09 2006 15h00min
64. antas industriais de tr fego a reo ou ferrovi rio de aquisi o de dados nas telecomunica es na eletr nica embarcada em carros e avi es na rob tica equipamentos m dicos em sistemas de multim dia etc Estas aplica es sujeitas a restri es temporais s o comumente identificadas como Sistemas de Tempo Real Os sistemas operacionais de tempo real RTOS surgem neste cen rio como uma importante ferramenta para trazer confiabilidade a estes sistemas bem como para facilitar o desenvolvimento de aplica es nas reas citadas Este trabalho tem como objetivo fazer uma an lise comparativa entre dois softwares com e sem o uso de um RTOS para evidenciar as melhorias que estes tipos de sistemas operacionais fornecem no desenvolvimento de uma aplica o 2 DEFINI O DE SISTEMAS EMBARCADOS Em LACERDA 2006 um sistema embarcado definido como uma combina o de componentes de hardware e software que usa interfaces de entrada e sa da espec ficas e dedicadas para realizar uma determinada atividade Um sistema embarcado considerado um sistema computacional de uso espec fico que interage continuamente com o ambiente a sua volta por meio de sensores e atuadores utilizando seus recursos computacionais projetados restritamente para executar a fun o para qual foi desenvolvido Ao contr rio de programas desenvolvidos para computadores de uso geral onde um nico programa pode realizar tarefas diferentes o softw
65. ar include lt os core c gt Substituir include lt os flag c gt include lt os mbox c gt include lt os mem c gt include lt os mutex c gt include lt os q c gt include lt os sem c gt include lt os task c gt include lt os time c gt include lt os tmr c gt Por include Micrium GSGOFTWARE uCOS II Source os_flag c include Micrium SOFTWARE uCOS II Source os_mbox c include include include include include include 151 Micrium SOFTWARE uCOS II Source os_mutex c Micrium SOFTWARE uCOS II Source os_q c Micrium SOFTWARE uCOS II Source os_sem c Micrium SOFTWARE uCOS II Source os_task c Micrium SOFTWARE uCOS II Source os_time c Micrium SOFTWARE uCOS II Source os_tmr c 11 Ainda no arquivo ucos_ii c deletar comentar diretiva define OS GLOBALS 12 No arquivo INCLUDES H caminho IMicriumiSOFTWAREWUCOS INWork adicionar diretiva include app cfg h 13 No arquivo OS CPU C C caminho IMicriumiSOFTWARElUCOS INWork substituir ao longo de todo o arquivo TRUE por OS TRUE 14 Ainda no arquivo OS CPU C C substituir AARGB3 AARGB2 AARGB1 AARGBO por __AARGB3 152 __AARGB2 __AARGBI1 __AARGBO ao longo de todo o arquivo 15 No arquivo os cfg h caminho AMicriumSOFTWAREWUCOS INWork configur lo com o m nimo de ferramentas do uCOS II habilitadas Os valores
66. ara sistemas embarcados de tempo real Estes servi os s o conforme LI e YAO 2003 um conjunto de chamadas APIs utilizadas para executar opera es sobre os objetos do kernel facilitar o gerenciamento do tempo o tratamento das interrup es dos dispositivos de entrada e sa da e o gerenciamento da mem ria Os servi os aqui descritos ser o os relacionados aos objetos citados na se o anterior Os nomes destes servi os s o diferentes entre um kernel e outro mas apesar da diferen a de nome eles possuem a mesma funcionalidade Aqui ser o descritos nomes gen ricos de acordo com a opera o 5 7 1 Servi os de gerenciamento das tarefas Os servi os de gerenciamento das tarefas incluem tanto as chamadas APIs quanto as a es que o kernel executa nos bastidores para auxiliar no gerenciamento das tarefas como por exemplo a cria o e manuten o dos TCBs e as pilhas das tarefas API de Application Programming Interface ou Interface de Programa o de Aplicativos um conjunto de rotinas e padr es estabelecidos por um software para a utiliza o das suas funcionalidades por outros programas isto programas que n o querem envolver se em detalhes da implementa o de um software mas apenas usar seus servi os De modo geral a API composta por uma s rie de fun es acess veis somente por programa o e que permitem utilizar caracter sticas de um software que s o menos evidentes ao programado
67. are embarcado geralmente n o pode ser usado em outro sistema embarcado sem que antes sejam feitas mudan as significativas Isso porque cada hardware projetado sob medida para uma dada aplica o ou seja o projeto do hardware e do software de um sistema embarcado feito em conjunto sendo portanto interdependentes As principais unidades funcionais de um hardware embarcado segundo BITTON 2008 s o os processadores cuja principal fun o processar instru es e dados Um processador funciona como o dispositivo central de controle de um hardware embarcado sendo respons vel por gerenciar dispositivos de mem ria barramentos e I Os entradas e sa das A complexidade de um processador geralmente determina se este classificado como um microprocessador MPU ou um microcontrolador MCU Um microcontrolador cont m as mesmas funcionalidades b sicas de um computador tudo incluso em um nico chip de sil cio Conforme ilustra a Figura 1 um microcontrolador dividido em 4 blocos principais processador CPU mem ria I O entradas sa das e perif ricos Peripherals Figura 1 Ilustra o em blocos de um microcontrolador BITTON 2008 O processador executa fun es matem ticas e l gicas nas quais est o os operandos e as opera es necess rias para a execu o do programa O processador tamb m l e armazena os dados A memoria dividida em ROM Read only memory que a mem ria onde o microc
68. as v rias inst ncias da fun o MaqDisplayLEDs manipularem uma vari vel comum a todas 2D IE ot PR AD NS JE US Ned PE Sd DS a A ie ee eh ee A a o es Se es oe 1 3 Prot tipos de fun es internas definidas na Se o 5 se Rotinas constru das para melhorar a modularidade do c digo void escreve display LEDs char num digito char digito bcd void atualiza display void teta TTT EE H Fun o MaqDisplayLEDs EAEE EEEE EEEE EEEE RARA RARA Descri o Mostra valor no display de LEDs Seleciona o d gito que sera aceso e chama a fun o que escreve no d gito 129 A cada tic da base de tempo de 100 ms comuta para o pr ximo digito do display Tem quatro estados i Estados DIGITO 3 DIGITO 2 DIGITO 1 DIGITO O gt um para cada d gito usado no display de LEDs i Entradas de dados NENHUMA A Saidas de dados NENHUMA i Sinais de Entrada NENHUM i Sinais de Saida NENHUM Chamada por 5 CPUlowInterruptHook Chama escreve_display_LEDs i OBSERVA ES Opera sobre as vari veis globais LED 0 LED 2 void MaqDisplayLEDs void switch STT_Display_LEDs case DIGITO_3 escreve display LEDs DIGITO_3 LED 0 break case DIGITO_2 escreve display LEDs DIGITO 2 LED 1 break case DIGITO 1 escreve display LEDs DIGITO 1 LED 2 break case DIGITO 0 escreve display LEDs DIGITO 0 LED 3 break STT_Display_LEDs STT_Display_LEDs 1
69. b4 lt Teclado Tempo Delay fim lt kernel OSTimeDly Sinal inv sivel para o programador H MAIOR_PRIO_EXEC lt kernel escalonador Sinal invisivel para o programador H Sinais de Saida Semcontador gt Teclado Tempo Delay inicio gt kernel OSTimeDly Sinal inv sivel para o programador REQ Sinal bn gt Kernel OSMboxPend Sinal inv sivel para o programador HM requisita ao kernel receber uma mensagem II Chamada por Escalonador do kernel Chama atualiza_display OBSERVA ES o valor de NUMERO que uma vari vel global convertido em uma string de caracteres bcd pela rotina atualiza_display void Contador void pdata int CONTAGEMS 0 vari vel que armazenar a contagem do contador INT8U REC SINAL CONTADOR vari vel que receber o sinal enviado pelo teclado STT Contador CRESCENTE vari vel que guarda os estados do Contador pdata pdata for REC_SINAL_CONTADOR INT8U OSMboxPend CORREIO 0 amp err OSSemPost Semcontador switch STT_Contador case PARADO if REC_SINAL_CONTADORI 0 if REC_SINAL_CONTADOR 1 Sinal_b1 STT_Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal_b2 STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal b4 STT Contador ZERO break case CRESCENTE if REC SINAL CONTADOR 0 i
70. caixa de correio e O tempo de atraso de uma tarefa expira Ao ser desbloqueada uma tarefa muda do estado bloqueado para o estado pronto se ela n o for a tarefa de maior prioridade A tarefa entra portanto na lista de tarefas prontas na coloca o apropriada a usa prioridade Quando uma tarefa desbloqueada e a de maior prioridade naquele momento ela muda diretamente para o estado em execu o sem passar pelo estado pronto tomando a CPU da tarefa que estiver em execu o e enviando esta para a fila de tarefas prontas 5 6 1 2 Estruturas t picas das tarefas Os c digos das tarefas podem ser estruturados de duas formas 5 6 1 2 1 Execu o at o fim A estrutura de c digo do tipo execu o at o fim mais utilizado para inicializa es Geralmente as tarefas executam uma s vez quando o sistema ligado inicializando o aplicativo e criando os servi os objetos e tarefas adicionais necess rios para a aplica o 33 As tarefas que iniciam os aplicativos geralmente t m maior prioridade que as tarefas criadas por elas para que seu trabalho de inicializa o n o sofra preemp o Ap s completar seu trabalho as tarefas de inicializa o s o suspensas ou apagam a Si mesmas para que as tarefas criadas por ela com menores prioridades possam ser executadas O pseudo c digo deste tipo de tarefa mostrado a seguir RR Initialize application Create endless l
71. citada a linguagem SDL Specification and Description Language de especifica o e descri o de sistemas de controle a programa armazenado Teoria A implementa o de sistemas de controle por software isto sistemas de controle a programa armazenado levaram ao desenvolvimento nos anos 80 de v rias metodologias espec ficas sendo a SDL 1 uma das mais bem sucedidas Baseia se no conceito de m quinas de estado que se comunicam por sinais e t m processamento concorrente E composta por uma variante gr fica que estudaremos e por uma variante textual H ferramentas comerciais que traduzem um diagrama SDL diretamente para um programa em C ou C A metodologia muito simples e ser apresentada atrav s de um exemplo completo que vai da especifica o do problema ao c digo do programa em linguagem C Os seguintes passos devem ser seguidos para a implementa o de um sistema de controle a programa armazenado 1 Reda o de um texto descritivo do problema 2 Elabora o do Diagrama de Parti o com a estrutura funcional do sistema 3 Diagrama de Intera o entre Blocos com a comunica o entre os blocos 4 Diagramas SDL que descrevem as m quinas de estados e suas intera es 5 Programa o e depura o Nosso exemplo ser um rel gio contador muito simples cuja especifica o dada a seguir Passo amp 1 Texto Descritivo do Problema Projetar e programar um contador crescente decrescente de 4 d git
72. cla pressionada para o processo CONTADOR atrav s dos sinais b1 b2 b3 ou b4 e retorna para o estado ESPERA TECLA Caso n o 93 haja pressionamento das teclas a maquina permanece no estado ESPERA_TECLA ou vai para este se estiver no estado ESPERA TIMOUT A Figura 37 apresenta o diagrama SDL do processo TECLAS TECLADO Neste diagrama est representada a din mica de funcionamento do teclado como m quina de estado Process TECLADO Gritir iis altera o das eclas Figura 37 Diagrama SDL do TECLADO 7 5 2 2 Caracter sticas do processo TECLADO 94 e Estados o ESPERA_TECLA o ESPERA_TIMOUT e Sinais de Entrada o Sinal_Timout_Teclado vem do processo Timer_TECLADO o Sinal_s1 Sinal_s2 Sinal_s3 Sinal_s4 Leitura das teclas do teclado e Sinais de Saida o Sinal bt Sinal b2 Sinal b3 Sinal b4 vai para o processo CONTADOR o Sinal Inic Timout vai para o processo Timer TECLADO e Entrada de dados o NENHUM e Sa da de dados o NENHUM 7 5 3 0 processo CONTADOR 7 5 3 1 Descri o do processo CONTADOR O processo CONTADOR pode se encontrar em cada um dos seguintes estados ou est no estado crescente onde incrementa a contagem ou est no estado decrescente onde decrementa a contagem ou est parado ou est zerado Quando recebe o sinal Sinal TIC 100 do processo TIMER 100 executa a a o 95 correspondente ao seu estado envia o NUMERO por interm dio da fun o auxiliar atualiza disp
73. controlador dever ler n vel l gico 1 nas portas do teclado Quando uma tecla pressionada o n vel l gico presente na porta do microcontrolador passa a O As teclas est o conectadas ao microcontrolador atrav s dos 4 bits menos significativos da PORTB conforme ilustra a Figura 33 TECLADO E LED S RB2 BOTI RB3 RB1 GND GND Figura 33 Esquema el trico das teclas da placa McLab2 GUIA 2001 87 A distribui o da pinagem do PORTB para cada tecla da placa segue a Tabela 15 Tabela 15 Pinagem do PORTB referente s teclas da placa McLab2 GUIA 2001 PIC Tecla 7 3 Texto descritivo da aplica o A aplica o utilizada para a an lise comparativa entre os programa com e sem o RTOS um contador crescente decrescente de 4 d gitos que possui os seguintes requisitos e Os 4 d gitos dever o ser exibidos no display de 7 segmentos e A contagem dever ter incremento ou decremento a 10 Hz ou 100 ms e O acionamento da contagem deve ser via Teclado e seguir as seguintes especifica es o Contagem crescente tecla S1 pressionada o Contagem decrescente tecla S2 pressionada o Parar contagem tecla S3 pressionada o Zerar contagem tecla S4 pressionada Para deixar mais claro o comportamento desejado um diagrama de estados mostrado na Figura 34 88 Figura 34 Diagrama de estados do contador crescente decrescente Nesta maquina de estados cada circulo numerado representa u
74. das suas tarefas de sistema e de suas prioridades reservadas para operar corretamente Ap s o kernel ter sido inicializado e ter criado todas as tarefas de sistema que ele necessita ele passa a executar um ponto de entrada pr definido como por exemplo uma fun o pr definida que serve para inicializar a aplica o Deste ponto de entrada o desenvolvedor pode inicializar e criar outras tarefas da aplica o bem como os objetos do kernel que sua aplica o necessita medida que o desenvolvedor cria novas tarefas ele deve determinar qual o nome da tarefa a prioridade e a rotina da mesma O kernel ent o determina uma ID nica cria um TCB associado e um espa o de mem ria para cada tarefa criada pelo desenvolvedor da aplica o 5 6 1 1 Estado das tarefas De acordo com LI e YAO 2003 uma tarefa criada pelo kernel sempre se encontra em um estado espec fico que ser determinante na escolha das tarefas a serem executadas Apesar de os kernels poderem definir estados diferentes para as tarefas geralmente tr s principais estados s o definidos na maioria dos kernels preemptivos priorit rios e Estado pronto estado em que uma tarefa est pronta para execu o mas n o est sendo executada porque uma tarefa de maior prioridade possui a CPU 29 e Estado bloqueado estado em que uma tarefa requisita um recurso que nao est dispon vel espera por algum evento ocorrer ou atrasou sua execu o por
75. do TIMER_TECL_CONTANDO break case TIMER_TECL_CONTANDO COUNT_TIMOUT COUNT_TIMOUT 1 if COUNT_TIMOUT 0 STT_Timer_Teclado TIMER_TECL_PARADO Sinal_Timout_Teclado 1 break JEEE EE ee eE e RRR RRR EERE REET EE EEE EERE EERE AREER RAINE RARER AREER EERE EERE Fun o Timer 100 II Descri o Temporiza o intervalo de 100 milisegundos entre incrementos ou decrementos do contador Estados NENHUM Entradas de dados Saida de dados Sinais de Entrada Sinais de Saida Chamada por Chama OBSERVA ES void Timer_100 void NENHUMA NENHUMA NENHUM Sinal_TIC_100 gt Contador int_server NINGU M nenhuma COUNT_100 COUNT_100 1 if COUNT_100 0 144 Sinal_TIC_100 1 COUNT_100 20 20 5 ms 100 ms SS pe S en a eee i le Ae RR RAE RA ERAS a A A Gants iI 7 FUN ES AUXILIARES cL ane i eee fae sa ese O paes ad SAID LD EE eee REU ea PU ee JIE dedo RA A RR AR RA Ad DAR dd dd dd A RARA AR RAS RARA RR RA DAR dd dad dedo Fun o atualiza display CONTAGEM Descri o Separa cada digito numa string que sera usada pela rotina que aciona o display de LEDs Entradas de dados NUMERO lt Contador Saidas de dados LEDI gt MagDisplayLEDs Sinais de Entrada NENHUM Sinais de Saida NENHUM Chamada por Contador Chama
76. e entrada e configurada em um dos registradores de controle do temporizador Neste registrador contador carregado o valor que determinar quando ser a pr xima interrup o do temporizador Este valor incrementado ou decrementado dependendo do funcionamento do registrador contador a cada ciclo de clock Quando este valor ultrapassa seu valor m ximo ou m nimo no caso de um registrador contador decrementador ocorre o que se chama de estouro overflow do registrador contador e um sinal de sa da ativado disparando uma interrup o ou em certas aplica es apenas avisando o processador de que houve um estouro na contagem do registrador contador Se a interrup o do temporizador for peri dica consegue se estabelecer uma medida para o tempo decorrido permitindo ao sistema trabalhar com certa exatid o temporal Para que a interrup o seja peri dica necess rio reiniciar o temporizador via software carregando novamente com o mesmo valor inicial o registrador contador do temporizador O chip temporizador deve ser inicializado via software durante a inicializa o do sistema Toda informa o referente sua configura o encontra se no manual do usu rio do fabricante 61 5 8 2 0 tick do rel gio do sistema Conforme LABROSSE 2002 cada interrup o gerada pelo temporizador denominada de clock tick ou simplesmente tick e representa uma unidade de tempo O tempo entre duas interrup es
77. e 33 I O s 78 e 4 timers 3 de 16 bits 1 de 8 bits e 2 Capture Compare PWM de 10 bits e 2 perif ricos de comunica o digitais 1 A E USART e 1 MSSP PSI I2C e PSP e ICD e 8 canais de convers o A D com 10 bits cada e 10 MIPS de velocidade do Processador e 40MHz de velocidade m xima A pinagem deste microcontrolador est representada na Figura 29 MCLR VPP 1 40 L RB7 PGD RAO ANO 1 2 39 1 RB6 PGC RAI AN1 3 38 gt RB5 PGM RA2 AN2 VREF e 4 e RB4 RAQWANS VREF e 5 1 RB3 CCP2 RA4TOCKI H 6 35 Q RB2 INT2 RAS AN4 SS LVDIN 7 3410 lt e RB1 INT1 REOADANS gt Q8 QUA agh RBONNTO REIWR ANG 9 TF SF 320 v REZCS ANT 7 o co 310 VSS VDD gt Q O O 301 RD7PSP7 vss __ 0 a a 29 RD6PsSP6 OSC1 CLKI gt H 28 1 RD5 PSP5 OSC2 CLKO RA6 7 27 O lt RD4 PSP4 RCO T1OSO T1CKI lt 26 lt e RC7 RX DT RC1 T1OSV CCP2 1 25 H lt RC6 TX CK RC2 CCP1 H RC5 SDO RC3ISCKISCL 1 lt RC4 SDISDA RDO PSPO 19 22 RD3 PSP3 RD1 PSP1 20 21 RD2 PSP2 Figura 29 Pinagem do PIC18F452 DATA 2006 Para o desenvolvimento do contador foram utilizados os seguintes perif ricos do PIC18F 452 e 8 I O s PORTB RBO a RB7 e PORTD RDO a RD7 e 1 Timer TIMERO
78. e mensagens propriamente dita consiste de um n mero de elementos os quais guardam individualmente uma mensagem nica Os elementos 39 que guardam a primeira e a ultima mensagem sao chamados de cabega e rabo respectivamente Alguns elementos da fila podem estar vazios sem nenhuma mensagem e o n mero total de elementos da fila vazios ou nao determina o comprimento total da mesma Conforme mostra a Figura 15 uma fila de mensagens pode ter duas filas de tarefas em espera a lista de espera das tarefas destinat rias que consiste das tarefas que esperam receber as mensagens da fila de mensagens quando ela est vazia e a lista de espera das tarefas remetentes que s o as tarefas que est o esperando um lugar para depositar uma mensagem na fila de mensagens quando ela est cheia 5 6 3 1 0s estados das filas de mensagens De acordo com LI e YAO 2003 as filas de mensagens seguem a l gica das m quinas de estados finitas FSMs conforme mostra a Figura 16 Quando uma fila de mensagens criada a m quina de estado se encontra no estado vazio Se uma tarefa espera receber uma mensagem da fila de mensagens enquanto ela est vazia a tarefa entra no estado bloqueado e se esta quiser permanecer neste estado ela armazenada na lista de tarefas em espera associada a aquela fila de mensagens A ordem das tarefas na lista de tarefas em espera de uma fila de mensagens do tipo FIFO ou de acordo com sua prioridade Se
79. e os servi os do uC OS II s sitio 69 6 3 A estrutura de arquivos do uC OS II nn rreeerreeas 72 6 4 A portabilidade do uC OS II para o PIC18F o oo cccccecsseceteeeeeeeteeees 73 7 MATERIAIS E METODOS 00 o ceccseescssescsssesssseeessseesssecssncersncessnccesneeesnecesueeesneessneees 75 7 1 Softwares UIIIZAdOS supsisapasa do dA testa de tose edie Sava thd tots 75 7 2 Placa de desenvolvimento McLab2 76 Tall PICOS insira a Pe ena Si ee Oe et as 77 7 2 2 Displays de SSOIMEMIOS sa cssscscscerssaitestyqusasarsgatvonsa ni cacetvasateney was tensauiten en Wasevarinatonst 84 T2 Sr OCIA PAPEL RRADRD SE SU RDATES NOR PSRURE LES RAND VE SURO ROO RESP RD sansa RDNS O R see ROD 86 7 3 Texto descritivo da aplica o n ccseeeteeeseeeeseeeeseessseeseeesseeeseeenas 87 7 4 Crit rios utilizados para a compara o entre os softwares 90 7 5 Contador crescente decrescente sem RTOS 91 7 5 1 Diagrama de intera o entre blocos do contador ee eeecccescesteeeseeeeeeeseeeees 91 Taro processo TECLADO ess senai Aa ana a LC SACADAS Pa 92 1 5 3 O processo CONTADOR cer a ed etal Ree oe a ia 94 7 5 4 O processo MaqDisplayL EDS saias caudal ida Cid das 97 7 9 5 O processo TIMER TECLADO pas da ala E A E 99 7 5 60 processo TIMER POD scr assa ea etans deen erGa mean T a 101 7 5 7 O escalonador c clico e seu int
80. ecu o de todas as tarefas de maior prioridade e das ISRs ultrapassam um tick do sistema Neste terceiro caso a tarefa tenta se atrasar por um tick mas s consegue ser executada dois tick mais tarde ultrapassando seu limite de tempo Ultrapassar o limite de tempo pode ser aceit vel em algumas aplica es mas na maioria dos casos n o lt 20 ms gt Tick Interrupt 1 Tick ISR g EN A i N All hig Call to delay 1 tick 20 mS Call to delay 1 tick 20 mS Delayed Task i i E e Rm 2 gt 40 mS ala Figura 24 Atrasando uma tarefa por um tick Terceiro caso LABROSSE 2002 Algumas solu es podem amenizar a ocorr ncia destes problemas dentre elas est o e Aumentar a taxa de clock do microprocessador 64 e Aumentar o tempo entre duas interrup es do tick e Rearranjar as prioridades das tarefas e Evitar usar floating points e Utilizar um compilador que possua uma melhor otimiza o do c digo e Escrever os c digos cr ticos em tempos em assembly e Migrar para um processador mais r pido da mesma fam lia Mas apesar das melhorias que possam ser alcan adas esta varia o na resolu o do atraso das tarefas sempre ocorrer 5 8 3 As rotinas de interrup o para RTOSs Conforme dito na se o 5 3 quando ocorre uma interrup o a CPU passa a executar uma rotina que est codificada num endere o espec fico da mem ria de programa Este endere o est intimamente relacionado
81. eito varia o no seu tempo de execu o 62 No primeiro caso a Figura 22 mostra uma situa o onde tarefas de maior prioridade e ISRs s o executadas antes de uma tarefa cujo atraso de um tick Neste caso a tarefa tenta se atrasar de 20 ms mas por causa da sua prioridade executada em intervalos vari veis 4 20 ms Tick Interrupt l Tick ISR N N i p Z All higher priority task ae Call to delay 1 tick 20 mS Call to delay 1 tick 20 ms ff Call to delay 1 tick 20 mS Delayed Task tI i i es le gt 19 mS gt 27 m5 t2 17 mS Figura 22 Atrasando uma tarefa por um tick Primeiro caso LABROSSE 2002 O segundo caso Figura 23 mostra uma situa o onde o tempo de execu o de todas as tarefas de maior prioridade e ISRs s o um pouco menores do que um tick do rel gio do sistema A tarefa que se atrasou por um tick executada quase que imediatamente Por este motivo se houver a necessidade de se atrasar uma tarefa por um n mero m nimo de ticks deve se sempre adicionar um tick extra Em outras palavras se houver a necessidade de se atrasar uma tarefa por no m nimo 5 ticks deve ser especificado 6 ticks de atraso 63 20 ms gt Tick Interrupt Tick ISR N N N N N t t2 6 mS 19 mS Figura 23 Atrasando uma tarefa por um tick Segundo caso LABROSSE 2002 A Figura 24 mostra uma situa o em que o tempo de ex
82. el O kernel o componente que cont m as principais funcionalidades do SO que incluem e Gerenciamento de processos como o SO gerencia e visualiza outro software no sistema e Gerenciamento de mem ria o espa o de mem ria do sistema compartilhado por todos os diferentes processos necessitando de um gerenciamento do acesso e da aloca o do espa o de mem ria e Gerenciamento dos sistemas de entrada sa da como os dispositivos de entrada e sa da s o compartilhados por diferentes processos necess rio um gerenciamento destes dispositivos para que os processos os utilizem de maneira correta O gerenciamento de processos o subsistema central de um SO Todos os outros subsistemas s o dependentes deste A forma como o kernel gerencia seus processos ou tarefas para que eles utilizem a CPU denominada escalonamento ou agendamento de tarefas ou processos O escalonador ou agendador o processo que trata do escalonamento e est intimamente relacionado com os seguintes fatores e Utiliza o da CPU deve se buscar a m xima utiliza o da CPU e N mero de processos executados por unidade de tempo e Quantidade de tempo de espera de uma tarefa pronta pra execu o e Tempo de resposta de um evento e Quantidade de tempo que cada tarefa ter para usar a CPU 12 4 1 Grupos de sistemas operacionais GPOSs e RTOSs Em LI e YAO 2003 sao apresentados dois grupos de sistemas operacionais GPOSs Ge
83. em ria para a mesma e grava o c digo a ser executado pela tarefa na mem ria Segundo Ll e YAO 2003 uma tarefa possui um conjunto de par metros e estruturas de dados que s o associados a ela na sua cria o e Um Nome e Um ID nico 3 rea da mem ria do computador reservada para armazenar dados temporariamente 27 e Uma prioridade se for utilizado um escalonamento preemptivo priorir tio e Um bloco de controle da tarefa TCB que contem as informa es necess rias para o escalonamento da tarefa e Uma pilha e Uma rotina de execu o S o estes componentes que fazem com que as tarefas sejam reconhecidas como objetos tarefas e diferenciadas das fun es com que se trabalha em aplica es que n o utilizem sistemas operacionais A Figura 10 ilustra uma tarefa e seus componentes Task Control Block Task Stack Highest Priority Level Task 130 Priority Lowest Priority Level Figura 10 Representa o ilustrativa de uma tarefa LI e YAO 2003 Durante sua inicializa o o kernel cria um grupo de tarefas denominadas de tarefas de sistema e aloca prioridades apropriadas para cada Estas prioridades s o reservadas pelo RTOS para que ele as aplique a estes tipos espec ficos de tarefas 28 As prioridades das tarefas da aplica o n o devem ter o mesmo nivel de prioridade das tarefas do sistema podendo afetar o desempenho e o comportamento do mesmo caso isto aconte a O kernel precisa
84. er odo tempo chamando os servi os OSTimeDly ou OSTimeDlyHMSM Esta tarefa seria colocada no estado em espera waiting state at que o tempo especificado expirasse Estes servi os for am uma troca de contexto imediata para a pr xima tarefa de maior prioridade que esteja pronta para a execu o A tarefa atrasada 71 torna se pronta para execu o no momento em que o tempo especificado para o atraso expira atrav s da chamada do kernel OSTimeTick OSTimeTick uma fun o interna do kernel n o sendo chamada pelo desenvolvedor da aplica o Uma tarefa em execu o pode tamb m ser colocada em espera at que um evento ocorra chamando os servi os OSSemPend OSMboxPend OSQPend OSFlagPend ou OSMutexPend Cada tipo de evento sem foro caixa de correio fila de mensagens dentre outros est relacionado com um servi o espec fico Se o evento ainda n o ocorreu a tarefa que invocou algum destes servi os colocada no estado em espera at a ocorr ncia do evento Quando uma tarefa passa a esperar um evento a pr xima tarefa pronta de mais alta prioridade toma imediatamente o controle da CPU Uma tarefa que espera um evento torna se pronta para a execu o novamente quando o evento ocorre ou quando o seu tempo de espera expira A ocorr ncia de um evento pode ser sinalizada por uma tarefa ou uma ISR chamando algum dos seguintes servi os OSQPost OSSemPost OSMboxPost OSMboxPostOpt OSMu
85. ervalo de interrup o ctis 103 7 6 Contador crescente decrescente com RTOS i ii 104 7 6 1 Diagrama da intera o entre blocos do contador 108 1 6 2 Atareta TECLADO oaths aspas tea Esaf so tas ads Uia Dadas o do 5 Da da Tae Sao 109 700d Atareta CONTADOR sa e AG A e a 112 7 6 4 O PROCESSO MaqDisplayLEDS sa asia ra b ia Beha 115 8 RESULTADOS si at sda aa ans ada Galo duda calda da 117 8 1 Quantifica o das m quinas de estado estados e sinais dos programas 117 8 2 Precis o da contagem do contador em cada um dos programas 122 DACONCLUS O ia ana c du Guias 125 10 REFER NCIAS BIBLIOGR FICAS ini 126 AP NDICE A C digo do contador com o uso do RTOS 128 AP NDICE B Codigo do contador sem o uso do RTOS 136 AP NDICE C Manual de portabilidade do Micrium uC OS Il v2 86 para o Microchip PIC 1B FAB 2 nnee nne aie E A O pg 146 ANEXO Aula 08 Desenvolvimento de Programas de Tempo Real Metodologia EE E ET DR k 157 1 INTRODU O A sociedade atual tem apresentado uma quantidade crescente de aplica es que apresentam comportamentos definidos segundo restri es temporais O momento exato em que uma atividade deve ser executada bem como o momento em que ela deve parar sua execu o se tornou muito importante para o desenvolvimento tecnol gico Aplica es com restri es temporais se encontram no controle de pl
86. etermina qual tarefa e quando sera executada e Objetos s o constru es especiais do kernel que facilitam a cria o de aplica es Dentre esses objetos est o inclu dos as tarefas os sem foros as caixas de correio as filas de mensagens e etc e Servi os s o as opera es que o kernel executa sobre os objetos os servi os de gerenciamento do tempo de gerenciamento de recursos e etc 17 o Timers Other Objects ISRs PP Objects dE Semaphores Events Queues Tasks P la D counting Scheduler Quim Maibores Semaphores 7 ea a Services ad Time Management Services e Interrupt Handling Services e Memory Management Services e Device Management Services Other Services Figura 6 Componentes do kernel de um RTOS LI e YAO 2003 5 1 0 Escalonador O escalonador de acordo com LI e YAO 2003 a principal ferramenta do kernel Ele o respons vel por fornecer os algoritmos que ir o determinar qual tarefa e quando ser executada 5 1 1 Entidades escalonaveis Conforme LI e YAO 2003 uma entidade escalonavel um objeto do kernel que compete pelo tempo de execu o tempo de utiliza o da CPU em um sistema baseado num algoritmo pr definido de escalonamento As tarefas sao as entidades escalonaveis encontradas na maioria dos kernels Uma tarefa uma fun o independente cuja execu o se baseia numa sequ ncia de instru es independente
87. f REC SINAL CONTADOR 1 Sinal_b1 STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal b2 STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal b4 STT Contador ZERO 132 CONTAGEM CONTAGEM 1 if CONTAGEM gt 9999 CONTAGEM 0 NUMERO CONTAGEM atualiza_display break case DECRESCENTE if REC SINAL CONTADOR 0 if REC SINAL CONTADOR 1 Sinal_b1 STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal b2 STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal b4 STT Contador ZERO CONTAGEM CONTAGEN 1 if CONTAGEM lt 0 CONTAGEM 9999 NUMERO CONTAGEM atualiza_display break case ZERO if REC SINAL CONTADOR 0 if REC SINAL CONTADOR 1 Sinal_b1 STT Contador CRESCENTE if REC SINAL CONTADOR 2 Sinal b2 STT Contador DECRESCENTE if REC SINAL CONTADOR 3 Sinal b3 STT Contador PARADO if REC SINAL CONTADOR 4 Sinal b4 STT Contador ZERO CONTAGEM 0 NUMERO CONTAGEM atualiza_display break OSTimeDly 20 _ requisito de tempo necess rio para unidade da contagem ser 100ms penetre EERE EEE Fun o Starttasks et TERRE EERE EERE EERE EET I IT IEEE Descri o Fun o que inicializa toda aplica o void Starttasks void pdata
88. fa 18 5 4 Troca de COMENTOU ds IS eg sintas dias drag 19 5 5 Algoritmos de escalonamento seen 22 5 5 1 Escalonamento preemptivo priOritari0 cc ccccccscccesccsseceseeeseeesseesseeesseesseeeess 22 5 5 2 Escalonamento ROUNG TODIN ciscansassssarisnissanncetdeasvndesanato sy toascosaiddncsUpsaudeveneantiterncass 24 5 6 Objetos do kernel wi cssicesinessxssmasnseersiacgemannasnmanaienemuenanmennetenmeenganats 25 DG DADO a E E E E E EE erent eee er 26 SD e SEmaloroS aerian e ER A E NEN E NO ERS 34 56 3 Filas de mensagens asus asi bs iiiaio reaR ERS ANEN EnA a EE AES 37 5 7 Servi os do KEPNO ae cise tea date cette cten tate ioderte heeatedelnemeea ate Ea gar nba gia de en 43 5 7 1 Servi os de gerenciamento das tarefas serenas 43 5 7 2 Servi os de gerenciamento dos sem foros eternas 50 5 7 3 Servi os de gerenciamento de fila de mensagens c 54 5 8 A base de tempo de um RTOS erra 59 5 60 de OS MMP On ZAG One S assi su des feios Tasso Sala oo ded Pe Db aaa Shou ada do ai ode Sits a Sa das 59 5 8 2 O tick do rel gio do sistema xs si cecucrs ac tanetecs policia NEAR ds ANTA DAMN NES a teed cet da da 61 5 8 3 As rotinas de interrup o para RTOSS e seerererereerereenea 64 6 OUCOS A sonia t ns di od E ag 67 6 1 Caracter sticas do NC 05 sas sesssse espia are Aires Gino ta ins 68 6 2 Estados das tarefas
89. fornecem um conjunto de chamadas APIs que permitem aos desenvolvedores controlar quando uma tarefa muda para um estado diferente Esta capacidade denominada de escalonamento manual e suas principais opera es s o listadas na Tabela 3 Tabela 3 Opera o para escalonamento manual das tarefas LI e YAO 2003 Suspende a execu o uma tarefa Executa a tarefa a partir do ponto onde ela foi suspensa Atrasa a execu o de uma tarefa Reinicia a execu o de uma tarefa Obt m a prioridade da tarefa requisitante NISN Configura dinamicamente a ia prioridade da tarefa requisitante Impede que a tarefa requisitante Preemption lock sofra preemp o de tarefas com maior prioridade Faz com que a tarefa requisitante Preemption unlock volte a sofrer preemp o de tarefas com maior prioridade De acordo com LI e YAO 2003 o escalonamento manual permite aos desenvolvedores suspender ou resumir a execu o de uma tarefa atrav s do aplicativo Permite tamb m atrasar uma tarefa para por exemplo esperar por uma condi o externa que n o est associada a uma interrup o Atrasar uma tarefa significa retirar a tarefa da CPU mantendo a bloqueada pela quantidade de tempo determinada e permitir que outra tarefa seja executada Depois que o tempo de 47 atraso expirar a tarefa que foi retirada da CPU retorna para a lista de tarefas prontas O desenvolvedor do aplicativo pode tamb m querer reiniciar uma tarefa o que
90. icada em fun o da busca pela exatid o temporal Esta possibilidade nos permite dividir os sistemas de tempo real em duas classes sistemas de tempo real do tipo critico hard e do tipo brando soft Sistemas de tempo real critico devem ser executados nos limites de tempos especificados com grau de flexibilidade proximo a zero De acordo GANSSLE 1998 estes limites de tempo podem ser intervalos periddicos um tempo em particular ou a chegada de um evento Estes sistemas falham por defini o se estes limites de tempo n o s o atendidos Segundo STEWART 2001 estas falhas incluem danos a equipamentos grandes perdas de investimento e at ferimentos ou mortes dos usu rios do sistema Um exemplo de sistema de tempo real cr tico um controlador de v o Se uma a o em resposta a um novo evento n o for executada dentro do tempo especificado pode haver uma desestabiliza o do v o e levar a um acidente Em contrapartida de acordo com GANSSLE 1998 sistemas de tempo real do tipo brando soft s o definidos como sistemas que n o s o do tipo cr tico mesmo ainda possuindo restri es de tempo para sua execu o Para estes tipos de sistema n o atender desde que esporadicamente seus limites de tempo n o compromete a integridade do sistema apesar de que o custo do sistema pode aumentar consideravelmente de acordo com seu delay Em STEWART 2001 tem se como exemplo de um sistema de tempo real brando o piloto autom tico
91. imento concorrente requer que os desenvolvedores decomponham a aplica o em unidades de programas pequenas escalon veis e sequenciais Dessa forma o sistema pode trabalhar num ambiente multitarefa e alcan ar o desempenho e tempo necess rio para atender aos requisitos do sistema de tempo real Quanto mais complexo for o sistema mais tarefas ele ter e mais complexas elas ser o Num sistema multitarefa v rias tarefas requisitar o tempo de CPU para sua execu o e como h apenas uma CPU alguma organiza o e coordena o ser o necess rias para que cada tarefa tenha o tempo de CPU suficiente para sua execu o no gerenciamento desta organiza o e coordena o de tarefas que se enquadram os sistemas operacionais Em GANSSLE et al 2008 sistemas operacionais SOs s o definidos como um conjunto de bibliotecas de software que atendem dois prop sitos prover um n vel de abstra o para o software que o torna menos dependente do hardware e 1 Atualmente existem processadores que possuem mais CPUs como o caso dos processadores multi cores que chegam a ter at quatro n cleos CPUs No entanto o n mero de tarefas requisitando uma CPU para sua execu o ainda muito superior do que o n mero de n cleos fazendo com que elas ainda concorram pelos n cleos existentes 11 gerenciar os varios recursos de hardware e software para assegurar uma total efici ncia e confiabilidade da aplica o Todo SO possui um kern
92. ior que a tarefa 2 que por sua vez tem prioridade maior que a tarefa 3 As tarefas 1 e 2 est o esperando por um evento e portanto a tarefa 3 est em execu o Figura 19 1 Em certo momento a tarefa 3 adquiri o sem foro que necessita para acessar um recurso compartilhado Figura 19 2 com a tarefa 1 continuando sua opera o sobre este recurso Figura 19 3 at sofrer preemp o da tarefa de maior prioridade Figura 19 4 A tarefa 1 ent o executada at o momento em que deseja acessar o recurso compartilhado por ela e pela tarefa 3 Figura 19 5 Como a tarefa 3 possui o recurso a tarefa 1 ter que esperar at que a tarefa 3 libere o sem foro medida que a tarefa 1 tenta adquirir o sem foro o kernel verifica que o sem foro j est com algu m no caso a tarefa 3 dando continuidade a execu o desta tarefa Figura 19 6 e suspendendo a tarefa 1 Ent o a tarefa 3 sofre preemp o da tarefa 2 por que o evento que esta estava esperando ocorreu Figura 19 7 A tarefa 2 opera sobre o evento Figura 19 8 e quando termina sua execu o libera a CPU para a tarefa 3 Figura 19 9 A 49 tarefa 3 executa seu trabalho ainda possuindo o recurso Figura 19 10 e entao libera o sem foro para a execu o da tarefa 1 Figura 19 11 Neste ponto o kernel sabe que a tarefa de maior prioridade requer o sem foro e portanto uma troca de contexto feita para resumir a tarefa 1 A tarefa 1 tem o sem foro e pode acessar o recu
93. iza_display break case DECRESCENTE if Sinal ESTADO CONTADOR OX if Sinal ESTADO CONTADOR 1 Sinal bi Sinal ESTADO CONTADOR 0 STT Contador CRESCENTE if Sinal ESTADO CONTADOR 2 Sinal_b2 Sinal ESTADO CONTADOR 0 STT Contador DECRESCENTE if Sinal ESTADO CONTADOR 3 Sinal_b3 Sinal ESTADO CONTADOR 0 STT Contador PARADO if Sinal ESTADO CONTADOR 4 Sinal_b4 Sinal ESTADO CONTADOR 0 STT Contador ZERO if Sinal_TIC_100 1 Sinal_TIC_100 0 CONTAGEM CONTAGEM 1 if CONTAGEM lt 0 CONTAGEM 9999 NUMERO CONTAGEM atualiza_display break case ZERO if Sinal ESTADO CONTADOR OX if Sinal ESTADO CONTADOR 1 Sinal b1 Sinal ESTADO CONTADOR 0 STT Contador CRESCENTE if Sinal ESTADO CONTADOR 2 Sinal_b2 Sinal ESTADO CONTADOR 0 STT Contador DECRESCENTE if Sinal ESTADO CONTADOR 3 Sinal_b3 Sinal ESTADO CONTADOR 0 STT Contador PARADO if Sinal ESTADO CONTADOR 4 Sinal_b4 Sinal ESTADO CONTADOR 0 STT Contador ZERO if Sinal_TIC_100 1 Sinal_TIC_100 0 CONTAGEM 0 NUMERO CONTAGEM atualiza_display break peer Fun o Teclado uma m quina de dois estados ESPERA TECLA 141 142 e ESPERA_TIMOUT No primeiro aguarda que seja detectado que uma tecla foi pressionada quando
94. l s tarefas informando que o tempo de suspens o requisitado por elas se esgotou Dessa forma o kernel passa o estado das tarefas do estado bloqueado para o estado pronto para execu o 107 e MAIOR PRIO EXEC sinal enviado pelo kernel s tarefas para que elas sejam executadas ou seja mudando seu estado de pronto para execu o para em execu o e Semcontador sinal trocado entre a tarefa CONTADOR o kernel e a tarefa TECLADO utilizado para a confirma o da tarefa CONTADOR sobre o recebimento da mensagem enviada pela tarefa TECLADO No caso do uC OS Il este sinal enviado pelo CONTADOR sentido CONTADOR kernel atrav s do servi o OSSemPost e recebido pelo TECLADO sentido kernel TECLADO atrav s do servi o OSSemPend e REQ Semcontador sinal enviado da tarefa TECLADO ao kernel para requisitar a confirma o do recebimento da mensagem enviada para a tarefa CONTADOR No caso do uC OS Ill este sinal pertence ao servi o OSSemPend e Sinal b1 Sinal b2 Sinal b3 Sinal b4 sinais contendo as mensagens sobre o estado do processo CONTADOR trocadas entre a tarefa CONTADOR e a tarefa TECLADO intermediadas pelo kernel analogia a um carteiro No uC OS Il estes sinais s o enviados pelo TECLADO sentido TECLADO kernel atrav s do servi o OSMboxPost e recebidos pelo CONTADOR sentido kernel CONTADOR atrav s do servi o OSMboxPend e REQ Sinal bn requisi o
95. l de clock passa por uma pr escala program vel de 8 bits antes de incrementar o valor do TIMERO O registrador que controla a configura o deste contador o TOCON TIMERO CONTROL REGISTER e as fun es de cada bit deste registrador apresentado na Figura 30 82 RW R W 1 RW 1 RNA RW RW 1 RW 1 RW 1 bit 7 bit 0 bit 7 TMROON TimerO On Off Control bit 1 Enables Timero 0 Stops Timero bit 6 TOsBIT Timer 8 bit 16 bit Control bit 1 Timer0 is configured as an 8 bit timer counter 0 Timer is configured as a 16 bit timer counter bit 5 TOCS Timer0 Clock Source Select bit 1 Transition on TOCKI pin 0 Internal instruction cycle clock CLKO bit 4 TOSE TimerO Source Edge Select bit 1 Increment on high to low transition on TOCKI pin 0 Increment on low to high transition on TOCKI pin bit 3 PSA TimerO Prescaler Assignment bit 1 Timer0 prescaler is NOT assigned Timer0 clock input bypasses prescaler 0 Timero prescaler is assigned Timer0 clock input comes from prescaler output bit2 0 TOPS2 TOPSO Timero Prescaler Select bits 111 1 256 prescale value 110 1 128 prescale value 101 1 64 prescale value 100 1 32 prescale value 011 1 16 prescale value 010 1 8 prescale value 001 1 4 prescale value 000 1 2 prescale value Legend R Readable bit W Writable bit U Unimplemented bit read as 0 n Value at POR 1 Bit is set 0 Bit is cleared x Bit is unknown Figura 3
96. lado Estes requisitos de tempo classificam o contador crescente decrescente como um sistema de tempo real 7 O problema do debounce ocorre ao se pressionar uma tecla No momento do pressionamento da tecla pulsos de ru do s o gerados na entrada do MCU relativa quela tecla fazendo com que este possa ler n veis l gicos alternantes O software presente no MCU pode interpretar que aquela tecla pressionada uma nica vez foi pressionada mais vezes podendo corromper o sistema 90 Existe mais um requisito de tempo que esta oculto no bloco do display de 7 segmentos a multiplexagao de cada display no tempo para que cada um mostre o seu digito correspondente corretamente Este requisito de tempo deve se ao hardware utilizado conforme descrito na se o 7 2 2 Para que cada display aparente estar constantemente aceso e mostre o d gito correto necess rio acion lo a cada 20 ms Caso este tempo seja maior haver cintila o do mesmo Caso seja menor os d gitos n o ficar o bem definidos no display Exceder os limites de tempo impostos pelo contador n o causam problemas graves aos usu rios do mesmo a n o ser diminuir a precis o da contagem ou n o mostr la corretamente Logo podemos classificar esta aplica o como um sistema de tempo real do tipo brando conforme defini o na se o 3 1 O desenvolvimento dos softwares a serem comparados para se avaliar o uso do RTOS foi baseado no experimento criado pelo Professor
97. lay ver AP NDICE B para o processo MagDisplayLEDs e volta ao in cio do processo Quando recebe os sinais b1 b2 b3 ou b4 altera o seu estado de contagem de acordo com o estado recebido O processo de contagem CONTADOR est representado com mais detalhes no diagrama SDL da Figura 38 CRESCENTE Sinal_TIC_100 Sinal_TIC_100 Figura 38 Diagrama SDL do processo CONTADOR 7 5 3 2 Caracteristicas do processo CONTADOR 96 97 e Estados o PARADO o CRESCENTE o DECRESCENTE o ZERO e Sinais de Entrada o Sinal_b1 Sinal_b2 Sinal_b3 Sinal_b4 vem do processo TECLADO o Sinal TIC 100 vem do processo TIMER 100 e Sinais de Sa da o NENHUM e Entrada de dados o NENHUM e Sa da de dados o NUMERO vai para o processo MaqDisplayLEDs N mero de 16 bits que ser mostrado no display 7 5 4 0 processo MaqDisplayLEDs 7 5 4 1 Descri o do processo MaqDisplayLEDs O processo MaqDisplayLEDs mostra o valor da contagem no display de LEDs Para isso ele seleciona o d gito que ser aceso alterando sequencialmente seu pr prio estado Tem 4 estados um para cada d gito usado no display de LEDs Recebe o d gito do NUMERO a ser escrito no display do processo CONTADOR 98 relacionado ao estado correspondente e chama a fun o auxiliar escreve display LEDs ver AP NDICE B que escreve neste d gito alterando o estado presente para o estado do d gito seguinte O processo Display 7Seg MaqDisplayLEDs
98. m estado A altera o de um estado para outro se da atrav s do pressionamento das teclas sinais b1 b2 b3 b4 sendo que cada tecla pertence a um estado diferente e Tecla S1 sinal b1 gt Estado 1 Contagem crescente e Tecla S2 sinal b2 gt Estado 2 Contagem decrescente e Tecla S3 sinal b3 gt Estado 3 Contagem parada e Tecla S4 sinal b4 gt Estado 4 Contagem zerada As flechas indicam a mudan a de um estado para outro quando uma tecla pressionada Por exemplo se a m quina estiver no estado 1 ela est contando crescentemente Quando a tecla S2 pressionada o estado da m quina deve ser 89 alterado para o estado 2 e a contagem deve ser alterada para decrescente Independente de qual estado a maquina estiver seu estado deve ser alterado quando uma tecla for pressionada a menos que a tecla pressionada seja a relacionada ao estado presente A Figura 35 ilustra o diagrama de parti o do contador separando os nos seguintes grupos de fun es Entradas Sa das Temporiza es e Aplica o Contador Crescente Decrescente EEE segmentos Timer do Teclado 40 ms Figura 35 Diagrama de parti o do contador crescente decrescente A exist ncia do bloco de fun es Temporiza o deve se aos requisitos de tempo impostos pela aplica o o incremento da contagem a cada 100 ms representado pelo processo Rel gio de 10 Hz e o debounce das teclas representado pelo processo Timer do Tec
99. ma prioridade maior A tarefa 2 sofre ent o preemp o da tarefa 3 por esta ter a mais alta prioridade no momento Quando a tarefa 3 completa sua execu o a tarefa 2 retorna sua execu o Quando esta ltima acaba sua execu o ent o a vez da tarefa 1 ser executada Alguns kernels de tempo real suportam at 256 n veis de prioridade sendo 0 o de mais alta prioridade e 255 o de mais baixa Alguns tratam a prioridade na ordem inversa com a prioridade 255 como a mais alta e a O como a mais baixa entretanto o principio o mesmo Apesar de algumas tarefas terem suas prioridades determinadas quando s o criadas a prioridade de uma tarefa pode ser trocada dinamicamente usando chamadas fornecidas pelo kernel Esta habilidade permite que uma aplica o 24 embarcada possua flexibilidade para se ajustar a eventos externos a medida que eles ocorrem criando um verdadeiro sistema com resposta em tempo real Mas esta uma ferramenta que deve ser usada com cuidado pois pode levar o sistema a problemas de invers o de prioridade deadlock e eventuais falhas 5 5 2 Escalonamento Round robin De acordo com Ll e YAO 2003 o escalonamento Round robin faz com que o tempo de execu o da CPU seja dividido igualmente entre as tarefas Um puro escalonamento round robin n o consegue satisfazer os requisitos de um sistema de tempo real porque nestes sistemas as tarefas possuem v rios graus de import ncia No entanto um escalonamen
100. mar a CPU que um evento ass ncrono ocorreu Quando uma interrup o reconhecida a CPU p ra seu fluxo normal de execu o carrega os endere os de retorno dos 19 conte dos de seus registradores na pilha e pula para um endere o espec fico determinado pelo fabricante de mem ria de programa relacionada ao sinal de interrup o recebido onde estar codificada a rotina de servi o da interrup o ISR ou rotina de interrup o Quando esta rotina processa o evento e completa sua execu o o programa retorna para a tarefa agendada pelo escalonador para ser executada 5 4 Troca de contexto Cada tarefa tem seu pr prio contexto que de acordo com Ll e YAO 2003 o estado em que est o os registradores da CPU quando uma determinada tarefa est em execu o Quando outra tarefa entra em execu o este estado salvo na pilha da tarefa que saiu de execu o e requisitado pela CPU toda vez que esta tarefa agendada novamente para ser executada Segundo LAMIE 2009 o contexto de uma tarefa inclui seu conjunto de registradores o contador de programa PC e informa es cr ticas relacionadas s tarefas Toda vez que uma tarefa criada o kernel cria e mant m associado a ela uma estrutura chamada de task control block TCB ou bloco de controle da tarefa Estes TCBs s o estruturas de dados do sistema os quais o kernel usa para guardar informa es espec ficas de cada tarefa Os TCBs cont m tudo que o ker
101. mente escalon veis importante deixar claro que mensagens e sem foros apesar de serem objetos n o s o considerados 18 entidades escalonaveis Estes itens s o considerados objetos usados para comunica o e sincroniza o entre tarefas Um conjunto de tarefas a ser executadas define um ambiente multitarefa 5 2 Tratamento das tarefas num ambiente multitarefa Num ambiente multitarefa o kernel trata as tarefas de forma que todas aparentam estar sendo executadas simultaneamente No entanto o kernel est realizando o agendamento das tarefas escolhendo qual ser a pr xima tarefa a ser executada e trocando a CPU entre as v rias tarefas existentes baseado no algoritmo de agendamento utilizado O escalonador ou agendador deve assegurar que a tarefa certa seja executada na hora certa ou seja no limite de tempo determinado medida que o n mero de tarefas a serem agendadas aumenta os requisitos de desempenho do CPU tamb m aumentam Isto ocorre devido h um aumento no n mero de trocas de contexto das diferentes tarefas a serem executadas 5 3 Interrup es e o tratamento de ISRs num ambiente multitarefa Rotinas de interrup es ISR diferentemente de tarefas n o seguem os algoritmos de escalonamento mas s o executadas a partir de interrup es ocorridas em hardware e geralmente s o priorit rias em rela o s tarefas Uma interrup o segundo LABROSSE 2002 um mecanismo de hardware usado para infor
102. nas o o o Toa A quantidade total de m quinas de estado estados e sinais que o programador precisou criar em cada um dos programas est representada na Tabela 22 A diferen a presente nesta tabela reside no fato de que o RTOS possui sinalizadores e servi os que substituem a necessidade de algumas m quinas de estado e consequentemente de seus estados e sinais No caso dos programas criados para o contador crescente decrescente os processos TIMER_TECLADO e TIMER_100 foram totalmente substitu dos pelo servi o do kernel OSTimeDly Figura 48 que foi chamado pelos processos TECLADO e CONTADOR respectivamente conforme codifica o encontrada no AP NDICE A 121 Tabela 22 Numero total de maquinas de estado estados e sinais criados pelo programador dos dois programas Contador com Contador sem RTOS RTOS M quinas de estado 3 Programador Estados 8 Sinais 7 Como se pode perceber mesmo numa aplica o simples como o contador crescente decrescente o RTOS diminuiu a quantidade de m quinas de estados estados e sinais que o programador precisou criar para a aplica o Essa diminui o facilita a codifica o do programa na medida em que diminui o n mero de processos fun es e vari veis necess rias para o desenvolvimento de uma aplica o void Timer Teclado void emitch STT Timer Teclado case TIMER TECL PARADO af Sinal Inic Timour Sinal Inic Timour COUNT TIMOUT Sw 40 us STT Tiner Teclad
103. ndo seu TCB e sua pilha Entretanto importante ter cuidado ao se apagar uma tarefa pois durante sua execu o ela pode adquirir mem ria ou acessar recursos utilizando outros objetos do kernel Se isto ocorrer e a tarefa for apagada incorretamente ela pode n o conseguir liberar estes recursos Imagine por exemplo que uma tarefa adquiriu um sinalizador chave de um sem foro ganhando acesso exclusivo a uma estrutura de dados compartilhada Enquanto a tarefa est operando sobre a estrutura de dados a tarefa apagada Se n o for tratado corretamente o apagamento abrupto da tarefa pode resultar em e Uma estrutura de dados corrompida devido a uma opera o incompleta de escrita e Um sem foro inacess vel para outras tarefas que necessitem adquiri lo e Uma estrutura de dado inacess vel devido a um sem foro inacess vel Apagar uma tarefa prematuramente pode resultar em vazamento de mem ria ou de recurso Um vazamento de mem ria ocorre quando uma quantidade de mem ria adquirida e n o liberada o que pode eventualmente deixar o sistema sem memoria para ser executado corretamente Um vazamento de recurso ocorre quando um recurso adquirido e nunca liberado resultando em um vazamento de mem ria pois recursos ocupam espa o na mem ria 5 7 1 2 Escalonando manualmente tarefas 46 Apesar das tarefas mudarem de estados automaticamente como resultado da execu o do programa e do escalonamento muitos kernels
104. nel precisa saber sobre uma tarefa em particular Quando uma tarefa est em execu o seu contexto altamente din mico mantido no TCB Quando uma tarefa n o est em execu o seu contexto est est tico dentro do TCB pronto para ser restaurado na pr xima vez que a tarefa entrar em execu o 20 Uma troca de contexto ocorre quando o escalonador troca uma tarefa por outra e consiste basicamente de salvar os registradores na pilha da tarefa a ser suspensa e restaurar os registradores da pilha da tarefa a ser executada A Figura 7 ilustra uma troca de contexto List of Tasks Task 2 Task 1 le Context Switch Time Time Figura 7 Troca de contexto entre tarefas LI e YAO 2003 Conforme mostrado na Figura 7 quando o escalonador do kernel determina que seja necess rio parar a tarefa em execu o task 1 e come ar a executar a task 2 o kernel primeiramente salva o contexto da task 1 no TCB desta tarefa Depois ele carrega o contexto da task 2 a partir do TCB desta tarefa tornando a a tarefa em execu o O contexto da task 1 ent o congelado enquanto a task 2 executada Se o escalonador precisar executar a task 1 novamente esta tarefa ir continuar sua execu o a partir da posi o em que sofreu a troca de contexto 21 Conforme LAMIE 2009 os passos de uma troca de contexto estao representados na Erro Fonte de refer ncia n o encontrada O numero de ciclos de instru o que cad
105. neral Purpose Operanting Systems ou sistemas operacionais de prop sito geral e RTOS Real Time Operating Systems ou sistemas operacionais de tempo real Estes dois grupos possuem as seguintes similaridades e diferen as e Similaridades entre RTOSs e GPOSS o Algum n vel de execu o multitarefa o Gerenciamento dos recursos de hardware e software o Fornecimento de servi os b sicos do OS para as aplica es do desenvolvedor o Abstra o do hardware atrav s do software e Funcionalidades chave dos RTOS que os diferem dos GPOSs o Maior confiabilidade em aplica es embarcadas o Habilidade de inser o ou remo o de m dulos para alcan ar as necessidades do sistema o Melhor desempenho o Requisitos de mem ria reduzidos o Pol ticas de escalonamento espec ficas para sistemas embarcados de tempo real o Melhor adapta o em diferentes plataformas o Possibilidade dos execut veis do OS inicializarem e rodarem o sistema a partir de suas mem rias RAM e ROM 13 Uma das principais diferen as entre um RTOS e um GPOS esta na sua forma de escalonar as tarefas De acordo com LEROUX e SCHAFFER 2006 um GPOS usa uma politica mais justa para fornecer tempo de CPU as tarefas e processos tentando fornecer a mesma fatia de tempo da CPU para os mesmos Tal politica aumenta o numero de processos executados por unidade de tempo mas nao assegura que tarefas mais criticas de alta prioridade sejam executadas preferencialmente as de
106. ns O uso mais comum de uma fila de mensagens enviar e receber mensagens As opera es relacionadas ao envio e ao recebimento de mensagens est o listadas na Tabela 10 Tabela 10 Opera es de envio e recebimento de mensagens em uma fila de mensagens LI e YAO 2003 Descri o da opera o Envia uma mensagem para a fila Send gem p de mensagens Recebe uma mensagem de uma fila de mensagens Receive Quando envia mensagens o kernel geralmente preenche a fila de mensagens da cabe a para o rabo na ordem FIFO como mostra Figura 20 Cada mensagem colocada no fim da fila 56 Sending Messages First In First Out FIFO Order Message Queue Receiving Task Waiting List EEB Sending Messages Last in First Out LIFO Order Message Queue Receiving Task Waiting List Figura 20 Envio de mensagens nas ordens FIFO e LIFO LI e YAO 2003 De acordo com LI e YAO 2003 alguns kernels permitem que mensagens urgentes v o direto para a cabe a da fila Se todas as mensagens que cheguem fila forem urgentes todas ir o para a cabe a da fila o que caracterizaria uma ordena o do tipo LIFO ast in first out Mensagens podem ser enviadas as filas de mensagem de tr s maneiras nao bloqueando as ISRs ou tarefas remetentes bloqueando as tarefas remetentes por um intervalo de tempo ou bloqueando as tarefas remetentes at que a mensagem seja recebida Mensagens que s o enviadas a uma fila
107. nterrup o A Figura 25 ilustra bem o processo de medi o do tempo de um RTOS O temporizador vai sendo incrementado a cada per odo de um sinal de clock Quando este incremento ultrapassa seu valor m ximo um sinal interrup o enviado para a CPU Ent o o processador passa a executar a rotina espec fica ISR para aquele sinal de interrup o Nesta rotina todas as tarefas ser o avisadas da passagem do tempo o escalonador ser invocado para avaliar o estado das tarefas e executar a tarefa pronta de mais alta prioridade e o temporizador ser reiniciado com o valor de tempo que se quer ter como resolu o do tick Dessa forma o sistema torna se peri dico sendo poss vel medi lo com certa precis o 66 Figura 25 A base de tempo de um RTOS Devido imprecis o dos ticks vistos pelas tarefas apresentada na se o 5 8 2 a ISR respons vel pela base de tempo do RTOS deve ser pequena e conduzir o m nimo de atividades poss veis para amenizar ao m ximo sua imprecis o 6 0 pC OS II Existem mais de 150 sistemas operacionais de tempo real no mercado atualmente Alguns sao gratis outros variam de Us 70 00 a Us 30 000 00 Al m disso os vendedores de RTOSs podem ainda cobrar royalties que variam de Us 5 00 at Us 70 00 por unidade de chip produzido comercialmente Apesar de ser pago o uC OS II foi escolhido para a realiza o deste trabalho pelos seguintes motivos e Baixo custo para uso comercial liv
108. o TIMER TECL CONTANDO break case TIMER TECL CONTANDO COUNT TIMOUT COUNT TIMOUT 1 if COUNT_TINOUT STT Timer Teclado TIMER_TECL_PARADO Sinal Timout Teclado 1 break OSTimeDly void Timer 100 void COUNT_100 COUNT 100 if COUNT 100 Sinai TIC 100 i COUNT_100 20 Figura 48 Processos TIMER TECLADO e TIMER 100 substitu dos pelo servi o OSTimeDly 122 8 2 Precisao da contagem do contador em cada um dos programas O requisito de tempo proposto neste trabalho define que o contador crescente decrescente deve ter uma precis o de 100 ms para cada incremento ou decremento da contagem Para medir a precisao de cada um dos programas discutidos simulou se o programa da aplica o no software MPLAB IDE atrav s da sua ferramenta de simula o MPLAB SIM Colocando um breakpoint na linha do c digo onde ocorre o incremento da contagem nos dois programas aqui discutidos ver c digo do processo CONTADOR nos AP NDICES A E B e utilizando a ferramenta Stopwatch do MPLAB IDE pode se medir em quanto tempo a vari vel NUMERO incrementada Os resultados obtidos para o programa sem o RTOS e para o programa com o RTOS s o apresentas na Figura 49 e na Figura 50 respectivamente Conforme a Figura 49 o programa sem o RTOS apresentou uma imprecis o de 773 us 100 773ms o que representa 0 77 de erro para cada incremento da contagem J o programa com o RTOS apresentou conforme ilustra a Figura 50 uma imprecis o de 0 072
109. o necessita trabalhar diretamente com estes sinais bastando apenas utilizar os servi os providos pelo kernel Um exemplo desta situa o s o os sinais Tempo Delay inicio e Tempo Delay fim Ao inv s de trabalhar diretamente com estes sinais o programador apenas invoca o servi o OSTimeDly e o kernel far todo o trabalho necess rio para tratar do atraso da execu o da tarefa que requisitou este servi o Os sinais que o programador deve manipular s o os denominados eventos ou objetos do kernel ver se o 5 6 que no caso desta aplica o s o o sem foro e a caixa de correio O diagrama de intera o entre blocos funcionais do contador na vis o do programador ilustrado na Figura 45 System CONTADOR CRESCENTE DECRESCENTE COMRTOS OSTimeDiy 40 s ENTRADA CONTAGEM TECLAS CONTADOR SAIDA DISPLAY 7 SEG Figura 45 Diagrama de intera o entre blocos funcionais do contador na vis o do programador 7 6 2 A tarefa TECLADO 110 7 6 2 1 Descrigao da tarefa TECLADO A tarefa TECLADO l o estado das teclas e verifica se houve altera o no seu estado Se houve altera o espera por 40 ms para tratar do debounce chamando um servi o de gerenciamento do tempo no caso o OSTimeDly Passado o tempo de espera requisitado esta tarefa verifica se a tecla continua pressionada ou n o Caso haja confirma o da altera o das teclas reconhece qual tecla foi pressionada sinais 1 s2 s3 ou s4
110. odigo do contador sem o uso do RTOS ICONTADOR SEM O USO DE RTOS Arquivo ProgContadorSDL c Versao 1 0 Autor Gabriel Soares Martins Junho de 2008 Faculdade de Engenharia Mec nica Universidade Estadual de Campinas include lt p18cxxx h gt Defini o das fun es intr nsecas do compilador include lt timers h gt pragma config WDT OFF pragma config OSC XT Defini o dos estados do processo Contador define PARADO 0 define CRESCENTE 1 define DECRESCENTE 2 define ZERO 3 Defini o dos estados do processo Timer do Teclado define TIMER TECL PARADO 0 tdefine TIMER TECL CONTANDO 1 Defini o dos estados do processo Teclado define ESPERA TECLA 0 define ESPERA TIMOUT 1 Defini o dos estados do processo Display de LEDs 136 define DIGITO O 0 define DIGITO 1 1 define DIGITO 2 2 define DIGITO 3 3 l anne unsigned char COUNT_100 Contador de 100ms CONTADORES COUNT TIMOUT Contador do timer do teclado gt 40ms l enn Sinal_TIC_100 Sinal para o contador de 100ms ISINALIZADORES Sinal ESTADO CONTADOR sinal que indicar o estado do contador Sinal b1 Sinal b2 Sinal_b3 Sinal_b4 Sinal Inic Timout Sinal de fim da temporiza o do teclado Sinal Timout Teclado
111. ogramming data Legend TTL TTL input ST Schmitt Trigger input Note 1 This buffer is a Schmitt Trigger input when configured as the external interrupt 2 This buffer is a Schmitt Trigger input when used in Serial Programming mode 3 A device configuration bit selects which I O pin the CCP2 pin is multiplexed on 4 This buffer is a Schmitt Trigger input when configured as the CCP2 input 5 Low Voltage ICSP Programming LVP is enabled by default which disables the RB5 I O function LVP must be disabled to enable RB5 as an I O pin and allow maximum compatibility to the other 28 pin and 40 pin mid range devices 80 Para o desenvolvimento do contador crescente decrescente o PORTB foi configurado para trabalhar como uma via bidirecional entrada saida de dados Dessa forma o PORTB deve ser configurado para ler um valor de entrada ou escrever um valor de sa da dependendo da configura o de sua dire o O PORTB controlado por tr s registradores e PORTB registrados dos dados da porta e TRISB registrador da dire o da porta e LATB registrador que armazena informa o do valor atual de cada bit da porta para que este n o seja afetada por nenhum dispositivo externo conectado a um pino Para se configurar um bit do PORTB como entrada digital deve se atribuir o valor 1 ao bit correspondente do TRISB Para que um bit do PORTB seja sa da digital deve se atribuir o valor O ao bit correspondente de TRISB
112. ontra no AP NDICE B 7 5 1 Diagrama de intera o entre blocos do contador A inclus o do quarto estado do contador adiciona ao diagrama de intera o entre blocos do experimento em ANEXO um sinal de entrada no teclado s4 e um sinal enviado para a contagem ZERA ou b4 que representa o estado do novo sinal de entrada do teclado A Figura 36 mostra o novo diagrama de intera o entre blocos do contador 92 TIMER DO RELOGIO DE TECLADO 10 Hr Inic_Timout ENTRADAS CONTAGEM Atualiza SAIDA TECLAS DISPLAY 7SEG si s2 s3 s4 Figura 36 Diagrama de intera o entre os blocos funcionais do contador com a inclus o do estado zerar contagem 7 5 2 0 processo TECLADO 7 5 2 1 Descri o do processo TECLADO O processo TECLADO uma m quina de dois estados ESPERA_TECLA e ESPERA_TIMOUT Quando est no estado ESPERA_TECLA o processo verifica se uma tecla pressionada aguardando receber um dos sinais s1 s2 s3 ou s4 Caso uma tecla seja pressionada envia o sinal Sinal_Inic_Timout para o processo TIMER TECLADO onde sera feito a temporiza o de 40 ms para tratar do debounce das teclas e altera seu estado para ESPERA TIMOUT Neste estado aguarda o sinal Sinal Timout Teclado do processo TIMER TECLADO Quando recebe o sinal Sinal Timout Teclado confirma se a tecla continua pressionada ou n o Caso a tecla esteja pressionada reconhece qual tecla foi pressionada e envia o sinal correspondente te
113. ontrolador armazena o c digo do programa e RAM Random access memory que a mem ria onde o MCU armazena os dados tempor rios e outros dados que se alteram durante a execu o do programa como vari veis e dados intermedi rios O terceiro bloco do MCU s o os seus pinos de entrada e sa da atrav s dos quais o microcontrolador envia ou recebe dados do seu ambiente externo O quarto bloco s o os perif ricos que o MCU possui em seu chip Estes perif ricos podem ser temporizadores contadores PWMs conversores anal gico digitais conversores digitais anal gicos dentre outros que ser o as ferramentas que permitir o ao desenvolvedor alcan ar os requisitos de sua aplica o Existem diversos tipos de perif ricos que diferenciam um MCU de outro 4 A diferen a de um microcontrolador e um microprocessador esta no fato de que em um microprocessador a mem ria principal e os perif ricos s o externos ao dispositivo Al m disso o microprocessador necessita de barramentos de dados e de endere amento para se comunicar com os recursos externos a seu processador A Figura 2 ilustra um microprocessador Peripherals Address Figura 2 Ilustra o em blocos de um microprocessador BITTON 2008 Pelo fato de um sistema embarcado realizar um conjunto de tarefas pr definidas geralmente com requisitos espec ficos o sistema pode ser otimizado por exemplo reduzindo seu tamanho recursos computacionais e custo do produto
114. oop tasks Create kernel objects Delete or suspend this task 5 6 1 2 2 Loop sem fim As tarefas do tipo loop sem fim fazem a maior parte do trabalho do aplicativo tratando das entradas e sa das Elas rodam v rias vezes enquanto o sistema est ligado Estas tarefas podem conter tamb m c digos de inicializa o No entanto ele s ser executado na primeira vez que a tarefa for executada pois a tarefa ficar executando o loop sem fim no corpo do loop que ser o feitas as chamadas de bloqueio para permitir que tarefas de menor prioridade sejam executadas O pseudo c digo para as tarefas de loop sem fim apresentado a seguir EndlessLoopTask Initialization code Loop Forever Body of loop Make one or more blocking calls 34 5 6 2 Semaforos Um sem foro ou um sinalizador de sem foro de acordo com LI e YAO 2003 um objeto do kernel que uma ou mais tarefas pode adquirir ou liberar para fins de sincroniza o exclus o m tua ou sinaliza o da ocorr ncia de um evento Quando criado o kernel associa ao sem foro um bloco de controle um nome uma ID nica um valor e uma lista de tarefas em espera conforme ilustra a Figura 12 Uma maneira mais simples de se entender o conceito de sem foro imagin lo como uma chave que permite a conclus o de uma opera o ou o acesso a um recurso Se uma tarefa puder adquirir esta chave ou sinalizador de sem foro ela poder concluir sua opera
115. os filas de mensagens escalonador sistemas de tempo real kernel PIC uC OSII sistemas embarcados ABSTRACT This work compared two different softwares for the same application an up down counter One of them used a real time operating system With the comparison it was shown that the real time operating system utilization increased almost 10 times the counting precision and reduced the number of code s functions and variables needed by the application Key words real time operating system tasks semaphores message queues scheduling real time systems kernel PIC uC OS Il embedded systems II Sumario TUINTRODU O MA 1 2 DEFINI O DE SISTEMAS EMBARCADOS 0 00 cccsccccccssessesesessssessesesteseesen 2 3 SISTEMAS DE TEMPO REAL assinadas sa dada Das dA Dad 6 3 1 Tipos de sistemas de tempo real eres 7 3 2 Principais caracter sticas dos sistemas de tempo real 8 4 UMA BREVE DEFINI O DE SISTEMA OPERACIONAL 10 4 1 Grupos de sistemas operacionais GPOSs e RTOSS 12 5 SISTEMAS OPERACIONAIS DE TEMPO REAL RTOS 15 5 1 ESCAIONADOF ois essinasiissiaasieo sia tes ES Oras da GENS 17 5 1 1 Entidades escalon veis casser puta Sadia 17 5 2 Tratamento das tarefas num ambiente multitarefa 18 5 3 Interrup es e o tratamento de ISRs num ambiente multitare
116. os a ser implementado no kit MODULO 2 Os dois d gitos dever o ser exibidos no display de 158 7 segmentos A contagem dever ter incremento ou decremento a 4 Hz Acionamento via Teclado e Contagem crescente chave S1 pressionada sinal b1 e Contagem decrescente chave S2 pressionada sinal b2 e Para contagem chave S3 pressionada sinal b3 Para deixar mais claro o comportamento desejado um diagrama de estados mostrado abaixo Estado O parado Estado 1 contagem crescente Estado 2 contagem decrescente sinal bl incrementa sinal b2 decrementa sinal b3 para Figura Diagrama de estudos do contador crescente decrescente As transi es de estudo s o disparadas pelo pressionar das chaves S1 2 e S3 do kit MODULO 2 Passo 2 Elabora o do Diagrama de Parti o As fun es do sistema s o identificadas e divididas em partes mais simples at que se chegue a um n vel de complexidade suficientemente pequeno para solu o de cada parte do problema Geralmente os sistemas podem ser divididos nos seguintes grupos de fun es Entradas Sa das Temporiza es e Aplica o que no nosso caso a contagem Os blocos funcionais resultantes do processo de an lise s o as caixas inferiores do diagrama de parti o Ser o doravante chamadas de PROCESSOS do sistema e cada processo ser uma m quina de estados 159 CONTADOR INC DEC TEMPONIZACAD ENTRADAS SAIDA CONTAGEM TECLADO DISPLAY
117. os obter os arquivos fontes nos endere os A htto www sputnickonline com projects programs micro uCOS for PICTB files MP LAB C18v101 zip 147 B htto www micrium com products rtos ucos ii_download html Com os arquivos fontes em m os siga os seguintes passos 1 Extraia os arquivos MPLAB C18v101 zip e Micrium uCOS II V286 ZIP obtidos dos endere os anteriores em pastas separadas de sua prefer ncia 2 Na pasta extra da do arquivo Micrium uCOS II V286 ZIP crie uma nova pasta com o nome WORK ou outro de sua prefer ncia no caminho Micrium SOFTWARE uCOS II 3 Da pasta extraida do arquivo MPLAB C18v101 zip copie os arquivos abaixo do caminho ISOFTWAREWCOS INPICI8IMPLAB CI8IWORK para o caminho Micrium GOFTWARE uCOS II WORK do passo 2 Estes ser o os arquivos modificados por Nathan Brown que ser o utilizados pelo nosso porte OS CPU H OS CPU C C VECTORS C INCLUDES H uc 18f452 Ikr uc 18f452i lkr 1 OBS A pasta extra da do arquivo MPLAB C18v101 zip deve ser apagada para se evitar confus o nos caminhos de diret rios A partir de agora s iremos modificar a 148 pasta extra da do arquivo Micrium uCOS II V286 ZIP 4 Renomeie os arquivos os cfg rh e os dbg rc do caminho Micrium GOFTWARE uCOS II Source para os_cfg h e os dbg c respectivamente Mova estes dois arquivos para O caminho MicriumiSOFTWAREUCOS INWork 2 OBS Modifique a propriedade de todos os arquivos fontes para
118. outra tarefa envia uma mensagem para a fila de mensagens a mensagem entregue diretamente para aquela tarefa bloqueada A tarefa bloqueada ent o removida da lista de tarefas em espera e seu estado trocado para o estado pronto ou em execu o 40 Neste caso a fila de mensagens continua vazia pois a mensagem foi enviada com sucesso Message Delivered msgs msgs 1 Message Delivered msgs msgs 1 Queue Created Message Delivered msgs 0 msgs 0 Message Arrived msgs Queue Length Message Arrived msgs 1 Message Arrived msgs msgs 1 Figura 16 FSM de uma fila de mensagens LI e YAO 2003 Continuando neste mesmo cen rio se outra mensagem enviada para a mesma fila de mensagens e n o h nenhuma tarefa na lista de tarefas em espera para receb la a fila de mensagens muda seu estado para n o vazio medida que mensagens chegam a fila esta vai se enchendo at que seu espa o livre esgotado Neste ponto o n mero de mensagens igual ao tamanho da fila e a fila de mensagens troca seu estado para cheio Enquanto a fila de mensagens est neste estado nenhuma tarefa que tentar enviar uma mensagem a fila tera sucesso pelo menos at outra tarefa requisitar uma mensagem da fila de mensagens liberando um elemento da mesma Em alguns kernels quando uma tarefa tenta enviar uma mensagem para uma fila de mensagens que est cheia a fun o
119. que eles n o estejam como somente leitura permitindo assim que possam ser alterados 5 Mova os arquivos ucos iih ucos iic os corec do caminho Micrium SOFTWARE uCOS II Source para o caminho MicriumiSOFTWAREUCOS INWork 6 No caminho IMicriumiSOFTWAREluCOS IhWork crie um arquivo Documento de texto de nome app cfg h Este arquivo servir para guardar informa es de configura o do seu projeto como por exemplo prioridade das tarefas tamanho das pilhas das tarefas e etc 7 Adicione no arquivo OS CPU H do caminho IMicriumiSOFTWAREWUCOS Work os seguintes prot tipos de fun o void OSStartHighRdy void void OSIntCtxSw void void OSCtxSw void 149 8 Substituir a diretiva include lt ucos Il h gt pela diretiva include INCLUDES H dos seguintes arquivos No caminho os flag c os mbox c os mem c os mutex c os q c os sem c os task c os time c os imr c No caminho os core c ucos_ii c os_dbg c Micrium SOFTWARE uCOS Source Micrium SOFTWARE uCOS I I Work 9 No arquivo ucos_ii h caminho Micrium GSOFTWARE uCOS I Work na parte INCLUDE HEADER FILES do c digo deletar comentar as diretivas include lt app_cfg h gt 150 include lt os_cfg h gt include lt os_cpu h gt 10 No caminho _ Micrium GOFTWARE uCOS Work no arquivo ucos ii c modificar o caminho dos arquivos nas diretivas include da seguinte forma Deletar coment
120. r 44 5 7 1 1 Criando e apagando tarefas A Tabela 2 mostra as duas opera es fundamentais que um desenvolvedor deve aprender para manipular tarefas criar e apagar tarefas Tabela 2 Opera es para criar e apagar tarefas LI e YAO 2003 opera o Cria uma tarefa Opera o Create Delete Apaga uma tarefa Segundo LI e YAO 2003 geralmente cria se uma tarefa usando uma ou duas opera es dependendo da chamada API do kernel Alguns kernels permitem ao desenvolvedor criar uma tarefa e posteriormente inici la Neste caso a tarefa criada e colocada num estado suspenso onde n o pode ser executada A tarefa s poder ser executada a partir do momento em que inicializada pelo desenvolvedor O estado suspenso similar ao estado bloqueado no sentido de que a tarefa n o est nem em execu o nem pronta para a execu o possuindo algumas diferen as Estas diferen as n o ser o abordadas aqui pois variam muito entre as dezenas de kernels existentes Na maioria dos casos os kernels criam e inicializam uma tarefa em uma nica opera o importante observar que inicializar uma tarefa n o faz com que esta seja executada imediatamente mas a coloca na lista de tarefas prontas 45 Muitas implementa es de kernel permitem que qualquer tarefa apague qualquer outra tarefa Durante este procedimento o kernel elimina a tarefa e libera a mem ria ocupada por ela apaga
121. r uma fun o ou servi o e SERVI OS O pC OS Il fornece uma variedade de objetos e servi os como caixas de correio filas de mensagens sem foros particionamento da mem ria fun es relacionadas ao tempo dentre outros e GERENCIAMENTO DE INTERRUP ES As interrup es podem suspender a execu o de uma tarefa e se uma tarefa de maior prioridade fica pronta para execu o a partir de uma interrup o ela 69 executada assim que a interrup o ou todas as interrup es que estejam aninhadas termine sua execu o At 255 interrup es podem ser aninhadas no uC OS II 6 2 Estados das tarefas e os servi os do uC OS II Os estados das tarefas do LC OS Il seguem a maquina de estado representada na Figura 26 OSMBoxPost OSMBoxPend OSQPend OSSemPost OSSemPend OSTaskResume OSTaskSuspend OSTimeDlyResume pelea OSTimeTick OSTimeDIyHMSM OSTaskCreate OSTaskCreateExt DORMANT OSIntExit OSTaskDel Figura 26 Estados das tarefas no uC OS Il LABROSSE 2002 Segundo LABROSSE 2002 uma tarefa no estado dormant corresponde a uma tarefa que se encontra na mem ria de programa RAM ou ROM mas n o est dispon vel para o uC OS Il Uma tarefa se torna dispon vel para o uC OS II atrav s das chamadas dos servi os do kernel OSTaskCreate ou OSTaskCreateExt Estes servi os s o simplesmente usados para criar uma tarefa ou seja dizer
122. racional de tempo real em um software sera feita atrav s de uma compara o entre um software que utilize um sistema operacional de tempo real RTOS e outro que nao utilize o RTOS Para isto foram desenvolvidos dois softwares diferentes em linguagem de programa o C para a seguinte aplica o contador crescente decrescente de 4 d gitos que incremente decremente a contagem a cada 10 Hz ou 100 ms O hardware a ser utilizado nesta aplica o ser a placa de desenvolvimento McLab2 presente no laborat rio de mecatr nica da Faculdade de Engenharia Mec nica da Unicamp Neste cap tulo ser o descrito os softwares utilizados para o desenvolvimento dos programas a placa de desenvolvimento McLab2 a descri o detalhada do contador a metodologia utilizada para se fazer a compara o entre os programas o programa do contador crescente decrescente sem o sistema operacional de tempo real e o programa do contador crescente decrescente com o sistema operacional de tempo real 7 1 Softwares utilizados Os softwares utilizados para o desenvolvimento dos programas com e sem o sistema operacional foram e Ambiente de desenvolvimento MPLAB IDE vers o 8 20a cujo fabricante a Microchip e Compilador MPLAB C18 C COMPILER vers o 3 30 acad mica cujo fabricante tamb m a Microchip 76 e Sistema Operacional de Tempo Real uC OSIl vers o 2 86 cujo fabricante a Micrium 7 2 Placa de desenvolvimento McLab2 A pl
123. re de royalties e N o possui custo nenhum em uso educacional e Fornecimento de todo o c digo fonte e C digo escrito em ANSI C limpo e padronizado o que facilita a adapta o deste sistema operacional para diversos tipos de processadores e Facilidade de acesso ao c digo fonte podendo ser feito o download na p gina do fabricante Micrium e Extensa documenta o possuindo livro did tico cujo nome se encontra em LABROSSE 2002 e Exist ncia de suporte t cnico e Atende aos requisitos de sistemas cr ticos em seguran a e Reconhecido por grandes empresas como NXP IAR Systems ARM dentre outras e Utilizado em centenas de produtos em todo o mundo tornando se um dos mais populares da atualidade 68 Toda a estrutura do kernel do uC OS Il bem como o uso de seus servi os e objetos encontra se descrita com detalhes em LABROSSE 2002 6 1 Caracter sticas do uC OS II e PREEMPTIVO O uC OS Il um kernel de tempo real totalmente preemptivo priorit rio sempre executando a tarefa de maior prioridade que est pronta para ser executada e MULTI TASKING O uC OS Il at a vers o 2 80 gerenciava at 64 tarefas sendo 8 tarefas reservadas para o sistema e 56 para o usu rio Na vers o 2 86 ele pode gerenciar at 255 tarefas e DETERMIN STICO O tempo de execu o de todas as fun es e servi os do uC OS II determin stico ou seja o desenvolvedor sabe quanto tempo o kernel vai demorar para executa
124. reate Teclado NULL amp TecladoStk 0 3 OSTaskCreate Contador NULL amp ContadorStk 0 1 void main void INTCONbits GIEH 0 Habilitando as interrup es do sistema OSInit Inicializando o RTOS OSTaskCreate Starttasks NULL amp StarttasksStk 0 0 Criando a tarefa que inicializar a aplica o OSStart Iniciando o RTOS e transferindo o controle da CPU para a aplica o BRR EER EERE eia EEE EERE Fun o escreve display LEDs num digito digito_bcd peer ee RRR RE HITTITE Descri o Escreve valor em um digito do display de LEDs 134 Entradas de dados num digito n mero do d gito em que escrever 0 1 2 3 H digito bcd n mero a ser escrito no display em BCD lt vari vel global LED Saidas de dados NENHUMA Sinais de Entrada NENHUM Sinais de Saida NENHUM Chamada por Fun o MagDisplayLEDs Chama NINGUEM OBSERVA ES Os d gitos s o selecionados pelos seus pinos correspondentes do PORTB RB4 digito menos significativo RB5 RB6 RB7 digito mais significativo l void escreve_display_LEDs char num_digito char digito_bcd LR ERE Be ER EE RR TABELA PARA OS DISPLAYS DE 7 SEGMENTOS RA RR RR RR ERE const char TABELA_7SEG 16 Ox3F 0h 0 0x06 H1h 1 0x5B H2h 2 0x4F 3h 3 0x66 HW 4h 4
125. rincipais unidades no desenvolvimento de sistemas embarcados de tempo real Os objetos mais comuns sao e Tarefas s o fun es independentes e concorrentes entre si que competem pelo tempo de execu o da CPU e Sem foros s o sinalizadores utilizados para sincroniza o ou exclus o m tua podendo ser incrementados ou decrementados por uma tarefa 26 e Filas de mensagens s o estruturas de dados do tipo buffer que podem ser usadas para sincroniza o exclus o m tua e troca de dados entre as tarefas Existem outros tipos de objetos do kernel para auxiliar na resolu o de problemas de tempo real como por exemplo caixas de correio pipes flags mutexes contadores e etc No entanto os tr s objetos b sicos aqui citados resolvem os problemas mais comuns que s o a concorr ncia a sincroniza o e a transfer ncia de dados entre as tarefas 5 6 1 Tarefas Uma tarefa conforme LI e YAO 2003 uma fun o independente do programa que pode concorrer com outras fun es tamb m independentes pelo tempo de execu o do processador Utilizando este conceito os desenvolvedores podem decompor seu aplicativo em m ltiplas tarefas para otimizar o tratamento das entradas e sa das do sistema atendendo assim seus requisitos de tempo Uma tarefa a unidade b sica de programa o que os sistemas operacionais controlam De acordo com GANSSLE 1998 o kernel cria a tarefa aloca um espa o de m
126. rogramming s 1998 Dispon vel em lt http Awww ganssle com articles realtime htm gt Acessado em 15 jun 2009 GUIA do usu rio Placa de Desenvolvimento MCLab2 S Mosaico Engenharia 2001 1 CD ROM LABROSSE Jean J uC OS II The Real Time Kernel Sao Francisco CMP BOOKS 2002 LACERDA W S Introdu o aos Sistemas Embarcados In Palestras de Wilian Soares Lacerda 2006 Lavras Dispon vel em lt http Avww dcc ufla br lacerda download palestras sis embarcados palestra siste mas embarcados ppt gt Acesso em 23 jun 2009 LAMIE William E Keeping your priorities straight Part 1 context switching s I 2009 Dispon vel em lt http Awww embedded com design testissue 212902706 gt Acessado em 23 jun 2009 LEROUX Paul N SCHAFFER Jeff Exactly When Do You Need Real Time s 2006 Disponivel em lt http www embedded com columns technicalinsights 193001454 gt Acessado em 29 jun 2009 127 LI Qing YAO Carolyn Real Time Concepts for Embedded Systems San Francisco CMP Books 2003 OSHANA Robert Real Time Operating Systems for DSP part 3 s 1 2007 Disponivel em lt http Awww dspdesignline com 199203413 jsessionid UVCSFO52U3GG4QSNDLOS KHOCJUNN2JVN gt Acessado em 24 jun 2009 STEWART David B Introduction to real time s 2001 Dispon vel em lt http www embedded com columns beginerscorner 9900353 gt Acessado em 15 jun 2009 128 AP NDICE
127. ros do aplicativo A Tabela 4 ilustra algumas destas opera es Tabela 4 Opera es para se obter informa es sobre as tarefas LI e YAO 2003 Descri o da opera o Get ID Obt m a ID da tarefa requisitante Get TCB Obt m o TCB da tarefa requisitante Obter a ID de uma tarefa em particular fornece mais informa es do que obter seu TCB Obter um TCB s fornece informa es moment neas de como est o contexto da tarefa e como este din mico estas informa es podem ser modificadas com o tempo 5 7 2 Servi os de gerenciamento dos sem foros As t picas opera es com sem foros fornecidas pelos kernels para os desenvolvedores utilizarem em seus aplicativos incluem e Criar e apagar sem foros e Adquirir e liberar sem foros e Limpar a lista de tarefas em espera de um sem foro e e Obter informa es sobre um sem foro 5 7 2 1 Criando e apagando sem foros 51 As opera es de criar e apagar sem foros s o listadas na Tabela 5 Tabela 5 Opera es para criar e apagar sem foros LI e YAO 2003 Descri o da opera o Cria um Opera o Create sem foro Apaga um sem foro Delete De acordo com LI e YAO 2003 para se criar um sem foro deve se especificar o estado inicial do sem foro seu valor inicial e a ordem de sua lista de tarefas em espera FIFO ou por prioridade A lista de tarefas em espera de um sem foro inicialmente vazia na sua cria o
128. rso compartilhado Figura 19 12 Neste cen rio a tarefa 1 reduziu virtualmente sua prioridade para a mesma prioridade da tarefa 3 porque teve que esperar um recurso que esta possu a A situa o se agravou ainda mais quando a tarefa 3 sofreu preemp o da tarefa 2 atrasando ainda mais a execu o da tarefa 1 Conforme LABROSSE 2002 uma maneira simples de se resolver este problema liberar o recurso compartilhado ao aumentar dinamicamente a prioridade da tarefa de menor prioridade colocando a como a tarefa de maior prioridade Dessa maneira ela executada e liberar o recurso para a tarefa original de maior prioridade e ent o sua prioridade reduzida para retornar sua prioridade original Al m dessas opera es o kernel pode impedir preemp es usando um par de chamadas usadas para habilitar e desabilitar preemp es no aplicativo Esta caracter stica pode ser til se uma tarefa est executando uma regi o cr tica de c digo n o podendo portanto sofrer preemp o de outras tarefas 5 7 1 3 Obtendo informa es sobre as tarefas Uma regi o cr tica de c digo um c digo que deve ser tratado indivisivelmente ou seja uma vez que o c digo iniciou sua execu o ele n o deve ser interrompido 50 Os kernels fornecem rotinas que permitem os desenvolvedores acessar as informa es das tarefas a partir de seus aplicativos Estas informa es s o importantes para monitoramento e corre o dos er
129. rsos de sistemas e fornece uma base consistente para desenvolver c digos para aplica es de tempo real Segundo GANSSLE et al 2008 um RTOS deve ter as seguintes caracter sticas para ser considerado como tal e Ser multitarefa e Ser preemptivo e Suportar prioridade de tarefas e Suporta mecanismos de sincroniza o de tarefas e Limitar as condi es de invers o de prioridade das tarefas e Ter seu comportamento conhecido para que o desenvolvedor do software consiga prever com precis o o desempenho do sistema Um RTOS pode ser composto apenas de um kernel que o n cleo supervisor do software fornecendo algoritmos de m nima l gica agendamento e gerenciamento de recursos Pode tamb m conter uma combina o de v rios m dulos incluindo kernel sistemas de arquivos protocolos de rede e componentes necess rios para uma aplica o em particular Uma ilustra o em alto n vel de um RTOS apresentada na Figura 5 16 e e mos Networking File Other Protocois System Components Protocol Stacks i e TCP IP C C Support 3 sows Kernel MERTES Real Time Operating System RTOS Dee Tame MICROPROCESSOR ETHERNET SERIAL PORT RAM ROM FLASH Rua pers JTAG a Kg TIMER auempseH Figura 5 Vis o em alto nivel de um RTOS LI e YAO 2003 O kernel de um RTOS geralmente cont m os seguintes componentes Figura 6 e Escalonador consiste de um conjunto de algoritmos que d
130. rvi o OSSemPost para confirmar o recebimento da 113 mensagem e executa a acao referente ao estado recebido se o estado for crescente incrementa a contagem se for decrescente decrementa a contagem se for parado n o faz nada ou se for zerado zera a contagem Ap s atualizar a contagem o NUMERO enviado para o processo MaqDisplayLEDs utilizando se da fun o auxiliar atualiza display Ent o a tarefa CONTADOR invoca o servi o de tempo OSTimeDly para parar sua execu o por 100 ms Esgotado o tempo a tarefa CONTADOR reinicia sua execu o Esta a tarefa de maior prioridade O processo contador tem como diagrama SDL o apresentado na Figura 47 Como no diagrama SDL do processo TECLADO neste diagrama tamb m est o inclusos os estados e sinais determinados pelo kernel 114 Process CONTADOR REG Sinal bn Tempo delay fim INCREMENTA Tareta DECREMENTA Bloqueada PARA ZERA Tarefa pronta para Re ser executada inicio Tarefa em Execu o Tarefa retorna ao estado presente Tarefa em da aplica o execu o Tarefa retorna ao CRESCENTE contador DECRESCENTE PARADO ZERADO ZERADO Sinal b1 Sinal b2 Sinal b3 Sl Semcontador Sinal_b4 Figura 47 Diagrama SDL do processo CONTADOR com o uso do RTOS 7 6 3 2 Caracter sticas da tarefa CONTADOR e Estados o PARADO o CRESCENTE o DECRESCENTE o ZERO o Tarefa em execu o estado determinado pelo kernel 115 o
131. s do uC OS Il LABROSSE 2002 Nos arquivos independentes do processador no qual o uC OS Il ser adaptado est o os c digos dos servi os dos objetos e das chamadas do kernel que permitem a ele gerenciar as tarefas da aplica o Nos arquivos de configura o do uC OS II 73 que s o espec ficos para cada aplica o o kernel permite ao programador selecionar e quantificar apenas os servi os e objetos que ele deseja utilizar Isto traz uma grande vantagem na medida em que se evita o desperd cio de mem ria do hardware que um recurso bem escasso em sistemas embarcados Os arquivos espec ficos do processador s o aqueles codificados para manipular seus registradores por exemplo numa troca de contexto entre tarefas e por isso diferem para cada hardware utilizado Estes s o os principais arquivos a serem modificados para adaptar o uC OS I em um microprocessador A adapta o de um kernel de tempo real em um microprocessador denominada de porte A portabilidade do uC OS II segundo LABROSSE 2002 relativamente f cil perante outros RTOSs pois ele foi feito para ser port vel sendo que a maioria de seu c digo escrito em ANSI C a linguagem C padr o No entanto existe a necessidade de se escrever alguns c digos espec ficos do processador em linguagem de montagem Assembly e para isto necess rio se ter bom conhecimento do hardware alvo e de suas instru es 6 4 A portabilidade do uC OS Il para o PIC18F
132. se 3 PORTBbits RB7 1 break digito_bcd digito bed amp OxOF Mascara 4 LSb PORTD TABELA_7SEG digito_bcd Mostra d gito 146 AP NDICE C Manual de portabilidade do Micrium pC OS II v2 86 para o Microchip PIC18F452 Nathan Brown codificou os principais arquivos do uC OS Il para port lo na fam lia PIC18F Estes arquivos com o c digo espec fico do microcontrolador PIC18F podem ser encontrados no endere o o http www sputnickonline com projects programs micro uCOS for PICIBffile s MPLAB C18V101 zip No entanto este porte v lido para a vers o 2 51 do Micrium uC OS II utilizando como compilador o Microchip MPLAB C18 compiler na sua vers o 2 09 24 at a 3 01 David Fischer a partir do porte de Nathan Brown fez este compat vel com as vers es 3 02 at a atual do Microchip MPLAB C18 compiler Este manual ir auxili lo a portar o uC OS II na sua vers o mais atual v2 86 utilizando o Microchip MPLAB C18 compiler na vers o 3 02 at a mais atual 3 30 Portanto deve se ter este compilador instalado no computador bem como o software MPLAB IDE A nova vers o v2 86 do Micrium uC OS Il pode ser baixada no endere o http Avww micrium com products rtos ucos ii download html e gratuita para fins acad micos preciso uma licen a do software para utiliz lo comercialmente 1 Portando o uC OS Il v2 86 para o Microchip PIC18F452 Para iniciarmos o porte do uC OS Il v2 86 para o PIC18F452 devem
133. seja a de maior prioridade ou ent o para o estado pronto at que a tarefa se torne a de maior prioridade e possa ser executada Os tipos mais b sicos de sem foros que um kernel geralmente apresenta s o o sem foro bin rio e o sem foro contador 5 6 2 1 0 sem foro bin rio Segundo LI e YAO 2003 um sem foro bin rio pode ter somente os valores 0 ou 1 Quando um sem foro bin rio possui o valor 0 o sem foro est vazio e indispon vel quando este valor 1 o sem foro bin rio considerado cheio e dispon vel Na cria o de um sem foro bin rio pode se inicializ lo para estar 36 dispon vel ou indispon vel 1 ou 0 respectivamente para o seu uso inicial O diagrama de estados dos sem foros bin rios mostrado na Figura 13 Acquire value 0 Initial Initial value 1 X value 0 Release value 1 Figura 13 Diagrama de estados de um sem foro bin rio LI e YAO 2003 Sem foros bin rios s o tratados como recursos globais o que significa que eles s o compartilhados entre todas as tarefas que necessitam deles Fazer de um sem foro um recurso global permite que qualquer tarefa o libere mesmo se a tarefa n o o adquiriu inicialmente 5 6 2 2 Sem foros contadores Um sem foro contador como o nome j diz possui um contador que permite que este tipo de sem foro possa ser adquirido e liberado v rias vezes Conforme LI e YAO 2003 quando um sem foro contador criado ele
134. sso TECLADO utilizados nos dois programas Contador com ene ae cipro sem RTOS 9 e ED sem Estados TE E E x FTarefa bloqueeds x 0 fo S E o a Saida de dados y Tod da atada a 0 SERRE TECLADO Sinal si Sinal_s2 EEE rempebempim x rss nace RR Sh ET a b2 Sinal_b1 Sinal_b2 Sinal b3 Sinal b4 Sinal b3 Sinal b4 a Tempo Delay inicio x Sinal_inic_Timout REQ semcontador x Totalde snas a fo 3 Para o desenvolvimento do processo CONTADOR foram necess rios 4 estados e 3 sinais no programa sem RTOS e 7 estados e 7 sinais foram utilizados para o programa com RTOS conforme mostra a Tabela 18 Destes 4 estados e 3 sinais foram efetivamente criados pelo programador sendo o restante criado e gerenciado pelo kernel 119 Tabela 18 N mero de estados e sinais do processo CONTADOR utilizados nos dois programas Contador Contador com RTOS Programador sem RTOS Kernel Programador Prado RD emo Descer x ese x possam x pese E ee Estados Mode esada 3s to CONTADOR Entradas de dados ee tz fp Saida de dados Soa i Sa Sinal_b1 Sinal_b2 eo E o Sinais de entrada Tempo Dei rm smecrcio MAIOR PRIO exec x S Too Semcontador x Y Snai de saida ETTA RE _ L y Total de sinais O processo MaqDisplayLEDs id ntico nos dois programas e possui 4 estados e 1 sinal conforme ilustra a
135. ta de tarefas em espera para tarefas destinatarias ordenadas por prioridade ou FIFO Uma fila de mensagens se torna cheia se sua lista de tarefas em espera para tarefas destinatarias estiver vazia ou a taxa com que as mensagens chegam a fila de mensagens maior do que a taxa com que as mensagens s o removidas da fila Somente quando a fila de mensagens est cheia inicia se o preenchimento da lista de tarefas em espera para tarefas remetentes Por outro lado o preenchimento da lista das tarefas em espera para tarefas destinat rias s iniciado quando a fila de mensagens est vazia Mensagens podem ser lidas das filas de mensagens de duas maneiras leitura destrutiva e leitura n o destrutiva Na leitura destrutiva quando uma tarefa recebe com sucesso uma mensagem da fila a tarefa remove permanentemente a mensagem do buffer de armazenamento da fila de mensagens Numa leitura n o destrutiva a tarefa destinat ria copia a mensagem da fila de mensagens sem remov la Poucas implementa es de kernel possuem leitura n o destrutiva 5 7 3 3 Obtendo informa es sobre as filas de mensagens Como as outras opera es de obten o de informa es de um objeto do kernel em particular estes tipos de chamadas servem para corre o dos erros do programa e monitoramento do mesmo A Tabela 11 lista as opera es t picas para este fim 59 Tabela 11 Opera es para obten o de informa es de uma fila de mensagens LI e
136. tem seu diagrama SDL representado na Figura 39 DIGITO O DIGITO 2 NUMERO NUMERO DIGITO O DIGITO 2 escreve escreve contagem contagem DIGITO 1 DIGITO 3 NUMERO NUMERO DIGITO 1 DIGITO 3 escreve escreve contagem contagem Figura 39 Diagrama SDL do processo MaqDisplayLEDS 7 5 4 2 Caracteristicas do processo MaqDisplayLEDs e Estados o DIGITO 3 o DIGITO 2 o DIGITO 1 99 o DIGITO 0 e Entradas de dados o Digito do NUMERO do estado presente vem do processo CONTADOR e Sa da de dados o NENHUMA e Sinais de Entrada o NENHUM e Sinais de Sa da o NENHUM 7 5 5 0 processo TIMER TECLADO 7 5 5 1 Descri o do processo TIMER TECLADO Esta m quina de estados realiza a temporiza o de 40 ms da elimina o do repique do teclado debounce Tem dois estados TIMER TECL PARADO e TIMER TECL CONTANDO Quando est no estado TIMER TECL PARADO a m quina aguarda o sinal Sinal Inic Timout para iniciar a temporiza o de 40ms Ao receber o sinal Sinal Inic Timout a vari vel que faz a contagem do tempo inicializada e a maquina muda seu estado para o estado TIMER TECL CONTANDO Neste estado o contador decrementado at zero Quando o contador atinge o valor zero emite o sinal de Sinal Timout Teclado para o processo do TECLADO voltando ao estado TIMER TECL PARADO O diagrama SDL do processo TIMER TECLADO representado na Figura 40 TIMER TECL PARADO Sinal Inic Timout Inicializa contador 40 ms T
137. texPost OSFlagPost OSQPostOpt OSQPostFront Uma tarefa em execu o sempre pode ser interrompida a menos que alguma tarefa ou o uC OS II tenha desabilitado as interrup es do hardware A tarefa entra ent o no estado execu o da ISR ISR running state Quando uma interrup o ocorre a execu o da tarefa suspensa e a ISR obt m o controle da CPU Uma ISR pode fazer uma ou mais tarefas mudarem seus estados para estados prontos atrav s da sinaliza o de eventos Por isso antes de retornar de uma interrup o o uC OS II verifica se a tarefa interrompida ainda a tarefa de maior prioridade Se a ISR fizer uma tarefa de maior prioridade pronta para execu o esta executada 72 imediatamente ap s o retorno da interrup o sen o a tarefa interrompida obt m novamente o controle da CPU 6 3 A estrutura de arquivos do uC OS II A estrutura de arquivos do uC OS Il e sua rela o com o hardware est o representadas na Figura 27 Software da aplica o c digo do programa uC OS Il Configura o do uC OS Il C digo independente do processador C digo espec fico da aplica o OS COREL OS FLAG C OS MBOX C OS MEM C OS_CFG H OS_MUTEX C INCLUDES H os Que OS SEM C OS TASK C OS TIME C Cos ff utos LH Porte do uC OS ll C digo espec fico do processador Os CPUH OS CPU A ASM os Cru CC Software Hardware Processador CPU Temporizador Timer Figura 27 Estrutura de arquivo
138. to round robin pode ser adicionado a um escalonamento preemptivo priorit rio para dividir as fatias de tempo da CPU igualmente entre as tarefas que possuem a mesma prioridade conforme representa o na Figura 9 HIGH Preemption Task Completion Task Cd Time Slice Priority oes Ea gt Time Figura 9 Escalonamento round robin LI e YAO 2003 25 Com a divis o do tempo em fatias iguais cada tarefa executa por este intervalo de tempo definido em um ciclo cont nuo o qual o round robin Um contador do tempo de execu o conta a fatia de tempo de cada tarefa sendo incrementado a cada tick de clock Quando a fatia de tempo de uma tarefa termina o contador zerado e a tarefa colocada no final do ciclo Tarefas de mesma prioridade medida que s o adicionadas na lista de tarefas prontas s o colocadas no final do ciclo com seus contadores de tempo de execu o inicializados com zero Se uma tarefa sofre preemp o de uma tarefa de maior prioridade em um ciclo round robin seu contador de tempo de execu o salvo e ent o restaurado quando a tarefa interrompida est novamente pronta para ser executada A Figura 9 ilustra essa id ia ao mostrar a tarefa 1 sofrendo preemp o da tarefa 4 de maior prioridade Quando a tarefa 4 executada por completo a tarefa 1 volta a ser executada do instante em que parou 5 6 Objetos do kernel Os objetos do kernel sao segundo LI e YAO 2003 as p
139. tr s motivos para o kernel tomar o controle da CPU da tarefa em execu o e executar a si mesmo e Responder a uma chamada de sistema e Realizar o escalonamento e os servi os de tempo e E lidar com as interrup es externas 5 5 Algoritmos de escalonamento O escalonador determina qual tarefa ser executada pela CPU de acordo com o algoritmo de escalonamento ou pol tica de escalonamento A maioria dos kernels de hoje possuem dois tipos de algoritmos o preemptivo prioritario e o round robin 5 5 1 Escalonamento preemptivo priorit rio Neste tipo de escalonamento a tarefa de maior prioridade entre todas as tarefas do sistema que estiverem prontas para execu o ser a tarefa que tomar imediatamente o controle da CPU A Figura 8 ilustra esta forma de escalonamento 23 HIGH Preemption rea Task Completion RR o E Ts Task Priority Task2 Task2 sa LOW a Time Figura 8 Escalonamento preemptivo priorit rio LI e YAO 2003 Segundo LI e YAO 2003 com um escalonamento preemptivo priorit rio cada tarefa tem sua prioridade e aquela de maior prioridade a primeira a ser executada Se uma tarefa com a prioridade mais alta fica pronta para ser executada o kernel salva imediatamente o contexto da tarefa em execu o no TCB da mesma e libera a CPU para a tarefa de mais alta prioridade ser executada Como mostra a Figura 8 a tarefa 1 sofre preemp o da tarefa 2 pois esta possui u
140. uma determinada dura o e Estado em execu o estado em que a tarefa est em execu o por ter a maior prioridade no momento medida que a aplica o est sendo executada cada tarefa muda se de um estado para outro de acordo com a l gica de uma simples m quina de estado finita FSM finite state machine A Figura 11 ilustra uma t pica FSM para os estados das tarefas com um breve coment rio sobre as transi es dos estados Tarefa inicializada e entra na maquina de estado Ready Tarefa desbloqueada mas n o a tarefa com a Tarefa n o a tarefa de maior prioridade maior prioridade Tarefa tem a maior prioridade Tarefa desbloqueada e a tarefa de maior Blocked prioridade Tarefa bloqueada pois n o tem o o recurso requisitado por ela Figura 11 Maquina de estado das tarefas LI e YAO 2003 O kernel deve manter os estados em que se encontram todas as tarefas de um sistema Este estado mantido devido aos TCBs Eles guardam as informa es necess rias para manter o estado da tarefa quando ela sofre uma preemp o e 30 permite que ela ap s ganhar o controle da CPU novamente continue sua execu o do ponto onde sofreu a preemp o Conforme as tarefas em execu o fazem chamadas de sistemas ao kernel para utilizar seus servi os o escalonador deve determinar qual tarefa precisa mudar de estado e ent o faz a troca do mesmo importante observar que uma mudan a
141. upt Flag bit 1 TMRO register has overflowed must be cleared in software 0 TMRO register did not overflow bit 1 INTOIF INTO External Interrupt Flag bit 1 The INTO external interrupt occurred must be cleared in software 0 The INTO external interrupt did not occur bit 0 RBIF RB Port Change Interrupt Flag bit 1 At least one of the RB7 RB4 pins changed state must be cleared in software 0 None of the RB7 RB4 pins have changed state Note A mismatch condition will continue to set this bit Reading PORTB will end the mismatch condition and allow the bit to be cleared Figura 31 Configura o dos bits do INTCON DATA 2006 A configuragao do TIMERO para que ele funcione como um temporizador de 8 bits deve seguir as etapas 1 Zerar o bit TOCS do registrador TOCON para selecionar o clock de Fclkprocessdor 4 2 Usar os bits TOPS2 TOPSO do registrador TOCON para selecionar o valor de pr escala 3 Zerar o bit PSA do registrador TOCON para selecionar o modo pr escala 4 Carregar o valor de temporiza o no registrador TMROL de acordo com a seguinte f rmula 84 Overflow time 4 x Tosc x Prescaler x 256 TMRO 1 onde Overflow time o tempo em us para ocorrer o overflow Tosc o per odo em us de oscila o do sinal de clock de entrada ou seja 1 Foiprocessaor Prescaler o valor da pr escala e TMRO o valor do byte a ser carregado no registrador TMROL No modo de 16 bits o valor a ser atribu do n
142. ver se o 5 6 2 necess rio para sincronizar as duas tarefas para que o processo CONTADOR receba corretamente a mensagem do processo TECLADO e 1 caixa de correio ver se o5 6 3 que conter a mensagem que informar ao processo CONTADOR o seu estado conforme o estado das teclas e Servi o de temporiza o OSTimeDly para a execu o das tarefas nos requisitos de tempo da aplica o e OSSemPend e OSSemPost para operar sobre o sem foro e OSMboxPend e OSMboxPost para operar sobre a caixa de correio 106 KERNEL TRATAMENTO DAS TAREFAS Tempo Delay inicio Sinal b1 Semcontador Sinal b2 REQ Semcontador Sinal b3 REQ Sinal bn Sinal b4 Sinal b1 Tempo Delay fim Sinal b2 Semcontador Sinal h3 MAIOR PRIO EXEC Sinal b4 CONTADOR CRESCENTE DECRESCENTE Sinal 31 Sinal 2 Sinal 53 Sinal s4 AMBIENTE EXTERNO Figura 48 Ilustra o da intera o entre o contador o kernel e o ambiente externo Os sinais trocados pelos sistemas da Figura 43 possuem os seguintes significados e Tempo Delay inicio sinal enviado pelas tarefas ao kernel para requisitar a sua suspens o por um tempo determinado ou seja para que o kernel mude os estados das tarefas do estado em execu o para o estado bloqueado pela quantidade de tempo requisitada por elas No caso do uC OS Il este sinal pertencente ao servi o OSTimeDly e Tempo Delay fim sinal enviado pelo kerne
143. verhead do sistema e aumentou a precis o do contador As caracter sticas deste processo s o as mesmas que o da se o 7 5 4 e n o ser o repetidas aqui 8 RESULTADOS 8 1 Quantifica o das m quinas de estado estados e sinais dos programas A Tabela 16 mostra as m quinas de estado necess rias para o desenvolvimento do programa contador crescente decrescente nos dois casos abordados utilizando se um sistema operacional de tempo real RTOS e sem o uso deste Para o programa desenvolvido com o uso do RTOS foram necess rias 3 m quinas de estado enquanto que para o programa desenvolvido sem o RTOS foram necess rias 5 m quinas de estado Tabela 16 N mero de m quinas de estado utilizadas nos dois programas Contador com Contador sem RTOS RTOS TECADO TECIADO EA CONTADOR CONTADOR EE estado Conforme informa a Tabela 17 para o processo TECLADO foram necess rios 2 estados e 4 sinais para o desenvolvimento do programa sem RTOS Com a utiliza o do RTOS o programador n o precisou criar nenhum estado e precisou de 3 sinais para desenvolver o programa 1 a menos do que o programa sem RTOS Os demais estados totalizados em 3 estados e sinais totalizados em 4 sinais necess rios para o funcionamento correto da m quina de estado TECLADO com RTOS foram criados e gerenciados pelo kernel a partir dos servi os utilizados pelo programador 118 Tabela 17 N mero de sinais e estados do proce
144. xecut la durante seu pr prio fluxo de execu o As chamadas de sistema fornecem uma interface entre os processos e o sistema operacional 14 da CPU de qualquer outra tarefa de menor prioridade que esteja inclusive em execu o Mais ainda ela pode ininterruptamente ser executada pela CPU at o seu fim ou at que sofra preemp o de outra tarefa de maior prioridade Esta pol tica conhecida como escalonamento preemptivo baseado em prioridade aqui chamado de escalonamento preemptivo priorit rio permite seguramente que as tarefas de maior prioridade alcancem seus limites de tempo n o importando quantas tarefas estejam competindo pela CPU Conforme LI e YAO 2003 hoje GPOSs rodam predominantemente em sistemas como computadores pessoais workstation e mainframes Em alguns casos GPOSs rodam em sistemas embarcados que possuem mem ria ampla e requisitos de tempo real que n o trazem problemas caso n o sejam atendidos GPOSs geralmente requerem muita memoria e portanto n o s o apropriados para sistemas embarcados que possuem mem ria limitada e requisitos de alto desempenho RTOSs por outro lado atendem estes requisitos sendo confi veis compactos e possuindo bom desempenho em sistemas embarcados de tempo real 5 SISTEMAS OPERACIONAIS DE TEMPO REAL RTOS Um sistema operacional de tempo real RTOS de acordo com LI e YAO 2003 um programa que agenda as execu es de suas tarefas de forma temporal gerencia os recu

Download Pdf Manuals

image

Related Search

Related Contents

BLANC CRISTAL    ADS Tech USBX-2000 USB Turbo 2.0 PCI  取扱説明書 - 4.21 MB      

Copyright © All rights reserved.
Failed to retrieve file