ESCOLA SUPERIOR ABERTA DO BRASIL -ESAB CURSO DE PÓS-GRADUAÇÃO LATO SENSU EM ENGENHARIA DE SISTEMAS LUIZ ANTONIO VARGAS PINTO SISTEMA DE TEMPO REAL EM AMBIENTE DE MICROCONTROLADORES VILA VELHA (ES) 2013

June 5, 2017 | Autor: L. Vargas Pinto | Categoria: Industrial Automation
Share Embed


Descrição do Produto

ESCOLA SUPERIOR ABERTA DO BRASIL - ESAB CURSO DE PÓS-GRADUAÇÃO LATO SENSU EM ENGENHARIA DE SISTEMAS

LUIZ ANTONIO VARGAS PINTO

SISTEMA DE TEMPO REAL EM AMBIENTE DE MICROCONTROLADORES

VILA VELHA (ES) 2013

LUIZ ANTONIO VARGAS PINTO

SISTEMA DE TEMPO REAL EM AMBIENTE DE MICROCONTROLADORES

Monografia apresentada ao Curso de Pós-Graduação

em

Engenharia

de

Sistemas da Escola Superior Aberta do Brasil como requisito para obtenção do título de Especialista em Engenharia de Sistemas,

sob

orientação

Janaina Costa Binda

da

Profª.

LUIZ ANTONIO VARGAS PINTO

SISTEMA DE TEMPO REAL EM AMBIENTE DE MICROCONTROLADORES Monografia aprovada em 02 de Junho de 2014

Banca Examinadora

________________________________________________________________

________________________________________________________________

________________________________________________________________

VILA VELHA – ES 2013

DEDICATÓRIA A minha esposa pela paciência em todos os momentos que me abstive de meus deveres para com a família durante os estudos e àqueles que direta ou indiretamente contribuíram para a realização deste trabalho.

AGRADECIMENTO

A Deus em primeiro lugar, a minha família pela paciência e a todos os professores da ESAB que me apoiaram e esclareceram dúvidas com paciência. Também agradeço aqueles heróis anônimos que liberam o uso de software a todos aqueles que queiram aprender. Um agradecimento ao Prof. Caribe Zampirolli de Souza e a profª Janaina Costa Binda pela paciência, apoio e o voto de confiança.

"Algo que aprendi em uma longa vida: toda nossa ciência, medida contra a realidade, é primitiva e infantil - e ainda assim, é a coisa mais preciosa que temos". Albert Einstein

RESUMO

O presente trabalho visa desenvolver um sistema RTC - Real Timer Clock em equipamentos de controle de processos com microcontroladores da família ATMEL (AT89S8253) .

E para isto pretende-se estudar um processo industrial para

compreender como um sistema de tempo real deve se adequar a essa realidade; Estudar um tempo de latência seguro, uma vez que o sistema operacional deve comportar com margem segura os tempos das grandezas envolvidas; Desenvolver o protótipo de um Sistema Operacional de Tempo Real para atender o processo e o controle local do dispositivo e avaliar seu desempenho.

Como resultado deste

processo, espera-se melhorar o uso dos recursos do microcontrolador e a forma como programadores interagem com a realidade de processos.

Palavras-chave: microcontrolador. sistema operacional. tempo-real

SUMÁRIO

1.

INTRODUÇÃO......................................................................................... 8

2.

HISTÓRICO ............................................................................................. 9

3.

MICROCONTROLADORES .................................................................. 11

4.

O PROCESSO INDUSTRIAL ................................................................ 12

5.

SISTEMAS DE TEMPO REAL .............................................................. 15

6.

ESTRUTURA DO SISTEMA DE TEMPO REAL ................................... 16 6.1.

BLOCO DE CONTEXTO DAS TAREFAS ................................... 16

6.2.

FUNCIONAMENTO DINÂMICO DO SISTEMA DE TEMPO REAL ....................................................................... 18

6.3.

O NÚCLEO DO SISTEMA DE TEMPO REAL – NTR ................. 19

6.4

ESTRUTURA DE SOFTWARE DO NTR..................................... 26

7.

CONSIDERAÇÕES FINAIS................................................................... 30

8.

REFERÊNCIAS ..................................................................................... 31

9.

APÊNDICES .......................................................................................... 32

8

1. INTRODUÇÃO Ambientes de microcontroladores são ricos em processamento e ao mesmo tempo limitados em espaço de memória. Isto sugere que sua aplicação deveria se limitar apenas a pequenos projetos de automação.

Entretanto, não menos usual é a

necessidade de aplicações em automação de processos.

A questão mais

importante deve ser se existe aplicação para os microcontroladores

para esta

necessidade. Para isto deve ser possível a implementação de algoritmos PID é o caminho a ser trilhado. Para que este objetivo possa ser atingido é necessário operar em Tempo-Real, e as limitações são: pouca memória de programa e pouca memória RAM. Isto torna evidente que a limitação própria do dispositivo impede implantação de algoritmos sofisticados, mas não impede uma forma discreta de processamento. Na verdade, mais do que apenas isto, o resultado depende muito mais do aprofundamento de estudos em controle do que na limitação do microcontrolador. Mas, isto também está fora do escopo deste trabalho.

Se de alguma forma não for possível chegar ao extremo do controle, ao menos pode-se direcionar inicialmente o estudo para uma proposta de operação em Tempo–Real.

A rápida evolução dos sistemas computacionais fornecendo recursos praticamente infinitos – com destaque para memórias que a cada geração tem maior capacidade e menor tamanho; processadores fotônicos, quânticos, etc.. – permite programação cada vez mais confortável ao programador, mas nem tudo é assim. Em ambientes industriais, a organização e simplicidade são imprescindíveis. Nesse ambiente o espaço de memória é extremamente limitado e os microcontroladores foram feitos para automação distribuída ou localizada. E aqui os procedimentos computacionais pouco sentiram do tempo.

Ajustar os novos programadores em um ambiente

limitado é o desafio. Aqui o gerenciamento de recursos é muito importante.

9

Além disso, os processos industriais solicitam atendimento em tempo real o que gera

uma

ampla

necessidade

de

comunicação

serial

para

distribuir

microcontroladores em todo o processo com atuação localizada.

Os estudos demonstram que tarefas sequenciais típicas dos sistemas operacionais em time sharing – introduzidas pela Control Data Corporation (SCOPE OS) nos anos 60, para processamento em batch e que posteriormente desenvolveu o MACE OS para time sharing – não são adequadas em processos que se comportam de forma aleatória em suas solicitações de atendimento.

O objetivo deste trabalho é desenvolver um estudo e um protótipo de Sistema Operacional em tempo Real para ser utilizado em equipamentos gerenciados por microcontroladores tornando-o apto a atender mais de um único processo ou ao menos, pelo fato de gerenciar recursos, desenvolver uma nova forma de programar que possibilite aos programadores uma forma mais rígida e organizada de processamento.

Para tal será feito um estudo sobre as partes que envolvem o processo tais como o históricos de microprocessadores, microcontroladores, sistemas operacionais em tempo real, controle e respostas de processos e estudo dos tempos e seus efeitos sobre o comportamento do núcleo de tempo real.

2. TEORIA 2.1.

HISTÓRICO

Desde a invenção do computador nos anos 40 pela equipe do Dr. John Von Neumman, o ENIAC1, muito se discute sobre como e qual a melhor maneira de programa-lo (VALLE). Ou melhor ainda, sobre como este terá controle sobre os seus periféricos.

1

O ENIAC Electronic Numerical Integrator And Computer implementou a primeira versão de programa armazenado oposto àquele configurado externamente com fios

10

Rapidamente se percebeu que o núcleo do computador era extremamente mais rápido do que se considerava, em particular quando o assunto era comparar com os seres humanos em suas tarefas cotidianas.

Muito embora programa-lo fosse uma tarefa muito demorada, ou seja, sua programação e ainda que esta fosse extremamente complexa, os resultados surpreendiam. E o que mais chamou a atenção era que, além da dificuldade de programação, só era possível executar um único programa de cada vez, de forma e que o tempo ocioso do próprio processo de utilização tornava-o caro e de pouco proveito.

Entre 1955 e 1965 foi apresentado o processamento em lote (BATCH) que nada mais era além de uma sequencia de programas a serem executados, ou seja, um de cada vez, de início ao fim. Mas ainda havia lacunas de tempo sem utilização.

Em 1961 o MIT – Massachussets Institute of Technology apresentou o sistema "Compatible Time-Sharing System (CTSS)" que consistia em um computador que era acessado por múltiplos usuários por meio de vários terminais. Isto dividia o tempo em pacotes (quotas) iguais para todos os processos que eram executados nos computadores da época, o que de certa forma permitia executar mais de um programa "ao mesmo tempo" reduzindo a ociosidade do computador (MCCARTHY).

Nesta mesma época, em meados de 1958, estudos revelaram que o método de interrupção poderia evoluir muito, tanto a ponto de influir em novas gerações de computadores. Considerando que o microprocessador 4004 da Intel© lançado em 1971 não trazia embutido nenhuma proposta de tratamento de interrupção pode-se considerar que tais processos eram muito mais complexos em datas anteriores a 1971(INTEL CORPORATION). Em Abril de 1974 o microprocessador 8080 da Intel©foi lançado rodando a 2 MHz e incorporava tratamento de interrupção. Isto sugere pelo menos, que computadores construídos após esta data e que incorporaram tratamento de interrupção foram alavancados tornando sistemas operacionais muito mais eficientes e compactos

11

que os existentes. Não é escopo desta monografia um estudo detalhado sobre os modelos de computadores que utilizaram estes conceitos em seu sistema operacional. Muito embora a IBM© - International Business Machines apelidada "Big Blue" por adotar o azul como sua cor corporativa oficial, tenha dominado o mercado de computadores durante muito tempo antes mesmo do advento do transistor,

o

mercado de computadores sofreu fortes mudanças tais como o nascimento de uma nova família de computadores conhecidos como "home computers" com a Apple© Computers Inc lançando seu Apple Computer usando o microcontrolador 6502 da Motorola©.

O sistema Operacional CP/M Control Program for Microcomputers criado originalmente para microcomputadores da Intel 8080/85 por Gary Kildall da Digital Research©, Inc. e confinado a single-tasking em processadores de 8-bit com, não mais de 64 Kbytes de memória emplacou com o microprocessador Z-80 da Zilog©, empresa criada basicamente por dissidentes da Intel, e tomou grande parte dos sistemas operacionais de microcomputadores do mercado e introduziu de forma marcante um dos sistemas operacionais mais famosos da época dos processadores de 8-bit (GUIMARÃES).

Muito embora tenha apresentado versões posteriores onde adicionou variantes para multiusuários e migrado para processadores de 16-bit não sobreviveu a investida do recente MS-DOS© que foi apresentado pela Microsoft© Corporation – uma nova empresa no mercado cujos fundadores eram Paul Allen e William Henry Gates III, o Bill Gates. Desde então, os sistemas operacionais tem prosperado. E geraram raízes que se espalharam em todos sistemas processados. Computadores são o exemplo perfeito da sequência desses eventos.

12

2.2.

MICROCONTROLADORES

Lançado em 1977, o 8051 da Intel©é um chip denominado "computador em um só chip". Enquanto o mercado de computadores seguia seu rumo ao que temos nos dias atuais, tornou-se imprescindível definir a diferença entre microprocessadores e microcontroladores.

Microprocessadores seguem um estrutura básica conhecida como "Von Neumann" e por essa razão tem alta capacidade de processamento. São pequenos, velozes, processam grande quantidade de informação (áudio e vídeo) entre outras, razão pela qual se prestam a computadores. Por suas características construtivas, toda a memória e periféricos são externos a CPU, sendo esta basicamente uma ULA – Unidade Lógica e Aritmética.

Microcontroladores por sua vez seguem a estrutura "Harvard". Por esta razão são pequenos, não tão velozes – e nem há porque, conforme será exposto adiante – e processam quantidades limitadas de informação. E por sua característica construtiva, toda a memória e periféricos são internos ao chip, o lhe atribuiu o título "computador em um só chip".

Por exemplo, ele tem RAM, FlashROM,

Timer/Counter, tratamento de Interrupção, comunicação serial (UART) entre outros recursos. E em razão destas diferenças a estrutura do microcontrolador é tratada como MPU diferentemente aos microprocessadores denominados CPU, e por isso mesmo, daqui em diante as referências aos microcontroladores será assinaladas como MCU – Microcontroller Central Unit.

Existem inúmeras aplicações que não necessitam de tanto processamento e/ou velocidade, e que requerem o menor espaço possível.

Para estes, em muitas

aplicações foram empregados microprocessadores 8085 da Intel© e o Z-80 da Zilog©. Entretanto, dadas as características apresentadas, os microcontroladores se prestam melhor a estas aplicações - basicamente pelo espaço físico e recursos pelo fato destes estarem dentro do chip. E desde então tem crescido sem parar a taxa de utilização de microcontroladores, haja vista que os mesmos já estão presentes em eletrodomésticos, veículos, aeronaves e equipamentos de controle industrial como CLPs – Controladores Lógicos Programáveis.

13

3. O PROCESSO INDUSTRIAL Define-se um processo industrial, como uma série de implementações físicas que envolvem, armazenamento, acionamento, interconexão entre dispositivos sólidos como tanques e silos cuja finalidade reside em obter algum produto final na atuação controlada destes elementos. Por exemplo, pode-se citar controle de pressão e temperatura em tubulação de combustível (DORF).

Sob a ação de controle e perturbações, um processo responde em escala de tempo da forma apresentada na figura 1:

Figura 1: Resposta de processo no tempo Fonte: www.mspc.eng.br A letra grega ζ expressa o fator de amortecimento de um dado sistema. As curvas exibidas na figura 1 nos mostra como um processo se comporta dependendo do tipo de amortecimento.

Como não é do escopo desta monografia, o estudo de sistemas ditos de 1º e 2º grau não serão tratados de forma sucinta, porém com a ressalva quanto a observação dos efeitos do tempo de ação do processo e da reação diante de eventos externos ao mesmo.

14

Resta ainda lembrar que o dito fator de amortecimento ζ é utilizado na análise de sistemas de 2ª ordem, portanto, dada a sua complexidade, e no nosso caso, por razões de tempo, será feita uma tentativa de exposição do sistema apenas sob a ação de variações restritas a sistemas de 1ª ordem (cujas características são mais simples) que pode-se considerar como aquelas que tem ζ = 1 tal como pode ser visto na curva em vermelho pois esses processos tem resposta muito lenta a eventos externos (BENTO).

De uma forma geral, os processos normalmente tem a resposta a alterações representadas na figura 2.

Figura 2: Resposta de processos a alterações Fonte: Bento (1993) Nota: Adaptado pelo autor

15

com as seguintes considerações (FIGINI): (Td) tempo de atraso: tempo necessário para a resposta alcançar pela primeira vez 50% do valor final; (Ts) tempo de subida : tempo necessário para a resposta passar de 10 a 90% do seu valor final;

(Tp) instante do pico: tempo necessário para a resposta alcançar pela primeira vez o pico de sobresinal; (SS) sobre-sinal: é o máximo percentual que a resposta alcança em relação ao sinal final; (Ta) tempo de acomodação: tempo necessário para o sinal de resposta acomodar-se no seu valor final. (eRP) Erro de regime permanente: é o resíduo que permanece entre o valor desejado e o valor obtido;

16

4. SISTEMAS DE TEMPO REAL Como ponto de partida deve-se estudar algumas definições dos significados de Tempo Real.

Tecnicamente são estabelecidas duas classes de Tempo Real:

Classe A e Classe B (MAGALHÃES).

Classe A: Refere-se a processos on-line, casos que interagem geralmente pessoas a um sistema computadorizado. É típico em compra de passagens em terminais (MAGALHÃES). Classe B: Aparecem em processos industriais.

Aqui os procedimentos devem

atender eventos externos ao sistema computadorizado e devem respeitar prioridade e tem tempo definido para resposta, não aceitando a quebra destes

critérios

sob

pena

de

graves

desastres

e/ou

acidentes

(MAGALHÃES).

Nos sistema classe A, o tempo pode ser tratado de forma variada posto que o mesmo é tolerante a este fato, o que normalmente não é aceitável nos sistemas de classe B; e é justamente aqui que se pretende construir o sistema.

Muito embora algumas literaturas ainda divirjam um pouco quanto a definição de Tempo Real para a classe A, este é um fato que não é escopo deste trabalho. Para Magalhães (1986, p.1), "[...] o objetivo final é um processo... traduzida pelo gerenciamento de interrupções, e associado ao gerenciamento dessas interrupções, existe prioridade, significando que a tarefa mais importante necessita ser servida dentro da restrição de tempo associada" (MAGALHÃES, 1986, p.1).

Para sua completa funcionalidade, ao invés de simplesmente ter os códigos de um programa, tem-se os programas alocados em memória de programa (flashrom) dentro de uma cápsula de códigos conhecida como Tarefa a qual está melhor apresentada na figura 3.

Um núcleo gerencia as tarefas que utilizarão a MPU alternando o endereço de sua alocação e alterando o conteúdo dos registros em uso fazendo com que a MPU

17

"pense" que ainda está executando os mesmos códigos abstraindo do real significado destes códigos. Possivelmente haverá um consumo maior de memória de programa, o que estimulou o uso de microcontroladores mais poderosos, pelo menos com DIP 40 (Dual In-Line Package) e que possuam mais memória.

A família de MCUs da Intel foi adotado por possuir stack dinâmica adequada a este tipo de procedimento. Em particular, o MCU AT89S8253 da Atmel© que possui além deste quesito de stack pointer, uma memória de programa com 12KB de FlashRom, 256 bytes de RAM e ainda 2KB de EEPROM

5. ESTRUTURA DO SISTEMA DE TEMPO REAL 5.1.

BLOCO DE CONTEXTO DAS TAREFAS

O básico de uma estrutura de tempo real poderia ser estabelecido definindo o que se chama de Tarefa. Tarefas são os micro-programas que atuarão no microcontrolador, e, para se ter controle sobre cada tarefa que está ocupando o microcontrolador, estas devem ter sua estrutura definida para o contexto do núcleo de tempo real como um Bloco de Contexto da Tarefa ou simplesmente BCT mostrado na figura 3.

Figura 3: Bloco de Contexto da Tarefa Fonte: Elaboração própria (2013)

18

ID – Trata-se do identificador da tarefa.

E é necessário apenas um byte que

identifica cada tarefa em uso – cada qual tem a sua ID.

Código – É de tamanho variado e corresponde verdadeiramente ao código de um micro-programa que utilizará a MPU.

Dados – São os bytes em RAM interna pertencentes a Tarefa em questão.

O

número de bytes também é de tamanho variável dependendo da Tarefa.

Bloco de Contexto – É de tamanho fixo e trata-se de uma cópia dos registros que a Tarefa estaria usando no momento em que a mesma foi suspensa para que possa retornar exatamente ao que estava procedendo no instante da paralização

O conjunto destes elementos denomina-se de Bloco de Contexto da Tarefa e cada tarefa possui seu BCT distribuídos conforme exemplo exposto na figura 4. Esta seria uma visão geral da distribuição das tarefas (Task), que evidentemente serão o menor possível. Cada uma delas é um programa com todas as suas partes.

Figura 4: Distribuição das tarefas em memória Fonte: Elaboração própria (2013)

19

Uma vez que o corpo de cada Tarefa está delineado, agora pode-se expor uma visão geral do processo como um todo de acordo com a figura 5

Figura 5: Visão geral do Processo Fonte: Elaboração própria (2013)

5.2. FUNCIONAMENTO DINÂMICO DO SISTEMA DE TEMPO REAL Um RTC – Real Timer Clock, envia um pulso de clock ao sistema de interrupção do microcontrolador fixando desta forma o tempo para tratar as tarefas. Pode-se ainda observar que entre um sinal de clock e o próximo, existe o tempo para decidir quem vai atuar no uso da MPU.

Durante todo o tempo, o RTC envia um sinal que gera uma interrupção no microcontrolador. A cada ciclo T ocorre uma interrupção e, uma tarefa especial ativada a cada ciclo T, agora denominada de NTR – Núcleo de Tempo Real, determina qual tarefa deve utilizar o microcontrolador e por quanto tempo (quantos ciclos T) para otimizar o processo de escala das tarefas.

Na figura 6 pode-se observar que a Tarefa 2 ocupou a MPU por dois ciclos consecutivos.

20

Isto também leva a uma importante observação: em cada ciclo T duas Tarefas ocuparão a MPU: a NTR e a Tarefa n que será escalada. E isto se repete a cada Ciclo T.

Figura 6: Ocupação das tarefas em ciclos de tempo Fonte: Elaboração própria (2013)

5.2.1. O PROCESSO DE ESCALONAMENTO "Um dos mais antigos, justo, e portanto muito usado é chamado round robin" (TANENBAUM, 1992, p.45). Neste tipo de escalonador a tarefa aciona a seguinte e cada tarefa tem uma quantidade de tempo denominada quantum.

Isto se adequa

ao sistema proposto pois o espaço é limitado e cada TASK tem o código de "quem ocupará o microcontrolador na sequência". Por esta razão o NTR proposto não funciona com o método preemptivo. No caso preemptivo, durante o processo de interrupção o núcleo determina qual TASK ocupará o processador no próximo ciclo de interrupção, assim, ao sair do NTR ele já estabeleceu por prioridade a TASK que ocupará o processador no próximo ciclo de interrupção. Da mesma forma, a TASK que vai ocupar o microcontrolador já foi definida no ciclo passado de interrupção. No caso do NTR desta monografia a tarefa em execução aciona a próxima tarefa que ocupará o processador. Muito embora seja um sistema de máximo aproveitamento do processador, trata-se de um sistema de tempo real mais antigo. Mesmo assim é extremamente funcional no caso de pouca memória, que é este caso.

21

5.3. O NÚCLEO DO SISTEMA DE TEMPO REAL – NTR Cada Tarefa carrega em si algumas essências as quais complementam o conceito de Tempo Real.

Eis um problema que merece um tratamento especial. Dar quota simétrica de tempo as tarefas não é prática incomum; sistemas de Time Sharing utilizam o conceitos de quotas de tempo padrão. O maior inconveniente é que algumas tarefas tem associadas a si uma nova característica que distingue esses processos de todos os anteriores – a prioridade (TANENBAUM).

Tome-se por exemplo, tarefas simples em um sistema de computador, tais como a impressão de um arquivo e uma outra que faz download de um arquivo da Internet.

É evidente que a tarefa de impressão é mais lenta dadas suas características mecânicas em contrapartida a tarefa de download, que envolve a Internet e troca de protocolos serial de alta velocidade. Uma interrupção acidental destes protocolos pode levar a falha de comunicação (Time out). Por sua vez, se a impressora para de receber caracteres, a mesma para de imprimir. Mas, se ambas tem quotas iguais e alternadas de tempo pode-se fazer com que ambas funcionem satisfatoriamente.

Mas, e se o tempo decorrido da Internet for muito maior ? Ou seja, o tempo para fazer download é muito menor que o tempo de imprimir um único caractere. Em outras palavras, pode-se atuar pelo menos três vezes na tarefa de download para cada uma vez na tarefa de impressão sem monopolizar o download e sem perder o performance da impressão, tudo pelo simples fato da impressora ser muito mais lenta que o processo de download. O Sistema Operacional do computador sabe disso e prioriza o download.

A questão "priorizar" deve ser incorporada a tarefa NTR para que a mesma possa definir "quem" deve utilizar a MPU neste ciclo T e já programar a próxima tarefa sem perder a performance geral e sem que nenhuma tarefa possa monopolizar a MPU; daí a importância da implementação da tarefa NTR.

22

O ponto mais crítico do debate se dá em torno do fato da estrutura de Stack Pointer da família Intel ter se mantido inalterada desde suas primeiras implementações.

Conforme será analisado adiante, este fato é de suma importância na implementação de um sistema de Tempo Real (software sobretudo) pois a pilha é um meio indispensável no tratamento das tarefas.

Estruturas de Stack rígidas

limitam essa implementação.

Como o processo industrial também passa a fazer parte do sistema, e embora isto não implique que o processo define as características do NTR, este deve atender a um processo industrial e não apenas a tarefas de software.

Como a proposta é envolver o MPU em um controle industrial, é preciso analisar alguns princípios que envolvem o processo industrial para não incorrer em algum, cujo tempo de atendimento seja inferior ao tempo de tratamento da interrupção, o que acarretaria a perda do ponto de atendimento ao mesmo conforme visto na figura 7. Observe que a solicitação de atendimento ocorreu em um momento em que o sistema estava em tratamento de interrupção do NTR.

Figura 7: Perda do ponto de atendimento Fonte: Elaboração própria (2013)

23

O conceito de tempo torna-se importante nesse ambiente pois proporciona uma completa compreensão dos próprios limites do sistema operacional. Em tese haverá uma interrupção a casa 1 mS. Tendo em conta que o clock interno é de 1 MHz, o processador por ser da família RISC, tem instruções poderosas de apenas 1 ciclo – em sua grande maioria – o que significa que este é capaz de processar 1.000.000 de instruções por segundo ou ainda, que ele consome 1x10-6 segundos em cada instrução (1 µS).

Isto implica em que o maior problemas estaria em processos cujos tempos de resposta sejam muito inferiores a, pelo menos, 100 µS pois o NTR também processa a cada 100 mS e tem códigos, o que significa que ele consome algum tempo entre cada 1 mS (tempo de interrupção do RTC) . Dessa forma, processos com resposta muito rápida poderia comprometer a atuação do núcleo. E mais, por se tratar de um sistema de tempo real classe B não é aceitável apenas ignorar a solicitação de atendimento (pedido de interrupção visto na figura 7) devendo "memorizar" este evento para poder retomar seu tratamento.

Seguindo essa linha de raciocínio pode-se propor um Sistema Operacional em Tempo Real respeitando particularmente o tempo de resposta a eventos externos ao processo.

Desde o princípio, os microcontroladores são detentores de vários níveis de interrupção conforme pode-se ver no datasheet do AT89S8253 da ATMEL© (p. 2) que estão em destaque na figura 8 em vermelho os pinos 1,12,13,14 e 15 que atendem a:

1....... Timer 2 12..... Interrupção Externa 0 13..... Interrupção Externa 1 14..... Timer 0 15..... Timer 1 E ainda existem as interrupções internas que podem ser geradas pelos Timers 0, 1 e 2 e ainda a interrupção de comunicação serial da UART.

24

Figura 8: Pinagem do ATMEL AT89S8253 Fonte: ATMEL (2012) Nota: Adaptado pelo autor De acordo com o datasheet do AT89S8253 da ATMEL© (p. 37) a área de programação está locada entre 0000h e 2FFFh e corresponde a 12K códigos de programa gravados em flashrom até 10.000 vezes (p. 1).

Respeitando também o vetor de interrupção existente no endereço 0000h da forma da tabela 1. Interrupt Source System Reset External Interrupt 0 Timer 0 Overflow External Interrupt 1 Timer 1 Overflow Serial Port

Vector RST or POR IE0 TF0 IE1 TF1 RI or TI or SPIF

Address 0000H 0003H 000BH 0013H 001BH 0023H

Tabela 1: Vetor de interrupção Fonte: Elaboração própria (2013)

Com base nisto pode-se pensar em uma proposta da forma apresentada na figura 9.

25

Vetor de interrupção

Tarefas de tamanho fixo mas que diferem entre si no tamanho

Núcleo de tempo Real

Figura 9: Visão geral do sistema operacional Fonte: Elaboração própria (2013)

26

E então pode-se estabelecer o BCT da forma da figura 10: 1 byte de 00 a FFh que identifica a tarefa RAM e registros utilizados pela tarefa – Tamanho variado 4 bytes obrigatórios que garantem a imagem da tarefa

Figura 10: BCT detalhado Fonte: Elaboração própria (2013)

Devido a flexibilidade do Stack Pointer ficou mais simples a construção do NTR evitando o controle sobre o registro Program Counter.

5.4. ESTRUTURA DE SOFTWARE DO NTR A seguir pode-se ver os fluxogramas relativos ao NTR. A figura 11 representa as ações do NTR no momento da interrupção.

27

Figura 11: Fluxograma NTR ao entrar em Interrupção Fonte: Elaboração própria (2013)

Aqui vale ressaltar que conforme o escalonador round robin, as próprias TASKs acionam a TASK seguinte (tome como exemplo, logo acima, o bloco Tasks ← 4) A seguir, na figura 12, o retorno ao processador com a habilitação das interrupções.

28

Figura 12: Fluxograma NTR ao sair da interrupção Fonte: Elaboração própria (2013)

5.5. PROPOSTA PARA HARDWARE DE TESTE Para o desenvolvimento dos testes de hardware sugere-se o uso do simulador PROTEUS pela sua característica de permitir simulação de programas em microcontroladores e o esquema proposto para os testes está na figura 13.

29

Figura 13: Proposta de circuito para ensaio Fonte: Elaboração própria (2013)

Conforme pode-se observar, este circuito oferece como recurso um display de 7 segmentos, 7 LEDs, 4 botões e 1 motor DC, suficiente para diversas tarefas sob controle.

O gerador de RTC, será implementado por um circuito com o CI LM555 – um timer da NATIONAL, configurado para gerar um sinal quadrado de 1 KHz para uma interrupção com 1 mS de acordo com a figura 14.

30

Figura 14: Circuito para geração de 1 mS Fonte: 555 etcetera versão 1.4

Muito embora o simulador não ofereça uma performance absolutamente precisa, agiliza muito a análise de testes simples, e futuramente poderá ser implementado no kit do AT89S8253 publicado em www.vargasp.com o qual pode ser visto na foto da figura 15.

Figura 15: Placa real para ensaio com AT89S8253 Fonte: Elaboração própria (2013)

31

Partindo de uma proposta de execução de TASKs em condições aparentemente simultâneas (TEMPO-REAL) as tarefas sugeridas seriam acionadas em sequência com quantum (TANENBAUM, 1992, p.45) de 1 mS. Durante o processamento, as tarefas serão acionadas sequencialmente e ciclicamente conforme a figura 16.

Figura 16: Interrelacionamento de TASKs Fonte: Elaboração própria (2014)

As tarefas propostas para o teste serão: a) Contador regressivo de 9 a 0 e repete a sequência (ID 02); b) Um led percorre a fileira de 8 leds da direita para a esquerda e repete este ciclo (ID 00); c) Um motor DC aceita comandos dos botões 1,2 e 3 na seguinte sequência: a. 1 para o motor; b. 2 gira o motor no sentido anti-horário; c. 3 gira o motor no sentido horário (ID 01) d) Um timer gera tempos de 0.5 S (ID 03) para atender as tarefas a) e b).

32

Cada TASK trás em seus códigos finais o código da próxima TASK que irá utilizar a MPU após retornar da interrupção round robin (TANENBAUM). A troca de contexto é efetuada a cada 1 mS pela TASK NTR. Isto implica em que cada TASK utiliza um quantum e é substituída pelo NTR pela TASK seguinte que o núcleo identificada pelo código existente na tarefa interrompida.

6. CONSIDERAÇÕES FINAIS O NTR proposto teve um excelente desempenho nas simulações com o software PROTEUS (1989-2009) de propriedade da Labcenter Electronics Release 7.7 SP2 (Build 9089) with Advanced Simulation, que mostrou, ao menos visualmente o funcionamento "simultâneo" das TASKs. Desde o início a proposta era desenvolver um sistema RTC - Real Timer Clock em equipamentos de controle de processos com microcontroladores e foi possível atender esta proposta.

Resta ainda proceder ao estudo de um processo industrial para compreender como um sistema de tempo real funcionaria neste universo e ainda como proceder para se adequar a essa realidade.

De forma similar, o estudo do tempo de latência seguro, mesmo superficialmente permitirá compreender a possibilidade de criar uma margem segura para o sistema operacional responder em Tempo Real as grandezas envolvidas no processo real.

Para desenvolver o protótipo de um Sistema Operacional de Tempo Real para atender um processo e o controle local dos dispositivos envolvidos, e ainda avaliar seu desempenho frente as intolerâncias de ruídos, erros de timming – que normalmente ocorre em transições de processos com rápida variação – é uma tarefa desafiadora e estimuladora.

Neste ensaio ainda não foi possível estabelecer o

tratamento de um processo de controle real, mas devido a estabilidade apresentada pode-se supor que um processo simples pode ser atendido com segurança pelo sistema proposto. O uso de dispositivos simples como o controle do motor e as tarefas visuais demonstra a capacidade do Sistema.

33

O ponto mais desafiador é o compartilhamento do timer pois há uma perda de tempo entre as trocas de tarefas. Mas considerando-se que existem quatro tarefas ativas, a perda de tempo será de 3 mS até retornar a tarefa de timer interrompida. Esta lacuna será o "calcanhar de aquiles" do sistema. Processos que precisem de atendimento com precisão superior a este delay não serão suportados. Há ainda a possibilidade de expandir os limites do Sistemas Operacional reduzindo o tempo do RTC (menor que 1 mS), mas esta hipótese ainda não foi testada.

Além de tudo isso, como uma nova geração de programadores está em franco desenvolvimento, apenas ter a esperança de oferecer uma nova tecnologia de programação – um ambiente controlado que libera os recursos (Sistema Operacional) – já é suficiente para a premissa original.

No apêndice está anexado o software fonte desenvolvido em Assembly para o 8051 o qual foi escrito com o Editor Jen's File Editor

version 3.84 (software free),

compilado com o compilador ASEN51 version 1.3 (software free) e testado com o The 8051 machine version 1.0 Beta 3 (software free)

34

7. REFERÊNCIAS FIGINI, G. Eletrônica Industrial 1.Ed. SÃO PAULO: HEMUS 1990 MAGALHÃES, M.F. Software para tempo real 1.Ed. CAMPINAS: EDITORA DA UNICAMP 1986 DORF, R.C. Sistemas de Controle Modernos 11.Ed. RIO DE JANEIRO: LTC 2009 BENTO,C.R.Sistemas de Controle:Teoria e projetos 1.Ed. SÃO PAULO: ÉRICA,1989 TANENBAUM, A.S. Sistemas Operacionais Modernos RIO DE JANEIRO: PRENTICE- HALL DO BRASIL, 1992 GUIMARÃES, M. P. Introdução aos Sistemas Operacionais – ISO, Técnico em Informática com habilitação em programação e desenvolvimento de sistemas, Salto, 2010 VALLE, J. C. O primeiro computador eletrônico do mundo . 2010. Disponível em: http://www.museudocomputador.com.br/historia_eniac.html Acesso em Agosto de 2013 MCCARTHY, J. Stanford University - Reminiscences on the history of time sharing. 1983. Disponível em: http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html INTEL CORPORATION. The Story of the Intel® 4004. 2013. Disponível em: http://www.intel.com/content/www/us/en/history/museum-story-of-intel4004.html ATMEL CORPORATION. Datasheet do AT89S8253 da ATMEL©. Disponível em: http://www.atmel.com/products/microcontrollers/8051architecture/default.aspx ?tab=documents WIKIPEDIA – THE FREE ENCYCLOPEDIA - History of operating systems. 2013 Disponível em : http://en.wikipedia.org/wiki/History_of_operating_systems

35

8. APÊNDICE Programa fonte: ;------------------------------------------------------; Programa: NTR.asm ; Data : 23/11/2013 ; Autor : Prof. Vargas ; A descrição detalhada está na rotina NTR ; O Timer0 tem uso livre e duas tarefas o utilizam: ID00 ; e ID02 e portanto tem tratamento diferenciado. ; Os SPs são respectivamente: ; ID00 ..... 20h ; ID01 ..... 27h ; ID02 ..... 2Ah ; E as localizações das Task são: ; ID00 ..... 026h (Leds) ; ID01 ..... 040h (Motor) ; ID02 ..... 071h (7 Seg) ; ID03 ..... 0A9h (Timer05S) ;------------------------------------------------------; Definição das variáveis e dos BCTs do NTR ; ;BCT_00 B0_ID equ 50h B0_01 equ 51h B0_02 equ 52h B0_03 equ 53h B0_A equ 55h B0_PSW equ 56h B0_SP equ 57h B0_TCON equ 58h ;BCT_01 B1_ID B1_01 B1_02 B1_03 B1_A B1_PSW B1_SP

equ equ equ equ equ equ equ

59h 5Ah 5Bh 5Ch 5Eh 5Fh 60h

;BCT_02 B2_ID B2_01 B2_02 B2_03 B2_A B2_PSW B2_SP B2_TCON

equ equ equ equ equ equ equ equ

61h 62h 63h 64h 66h 67h 68h 69h

Tasks Aux_00 Aux_01 Aux_Acc Aux_PSW

equ equ equ equ equ

6Ah 6Bh 6Ch 6Dh 6Eh

;Lista de ;Auxiliar ;Auxiliar ;Auxiliar ;Auxiliar

Tasks para o para o para o para o

NTR NTR Acc PSW

36

control prior tipoin

equ equ equ

81h 01h 01h

;hab. int 0 ;prioridade alta de int0 ;ativo em transição

;============ ; START ;============ org 000 ljmp Start org ljmp

003h NTR

;Núcleo de Tempo Real

Start: mov Tasks,#00000001b ;Tarefa ativa mov IE,#control mov IP,#prior mov TCON,#tipoin ;+++++++++++++++++++++++++ ; Inicialização das Tasks ;+++++++++++++++++++++++++ ; ID01 ..... 040h (Motor) ; SP ..... 27h mov 27h,#40h mov 28h,#00h mov B1_SP,#28h

ID0

; ID02 ..... 071h (7 Seg) ; SP ..... 2Ah mov 2Ah,#71h mov 2Bh,#00h mov B2_SP,#2Bh ; ID03 ..... 0A9h

(Timer05S)

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Rotina : Task1.asm (ID 00) ; Descrição: ; Esta rotina faz parte de um teste de NTR. Ela se; quencia uma linha de LEDs acoplados ao PORT P2 ; Registros utilizados: ; R0, Acc, SP para Timer0 ; ; Subrotinas utilizadas: ; time05S ; ; Além disso, SP necessita de apenas 4 bytes para ; funcionar corretamente nesta rotina. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ org 026h ID00: mov SP,#20h ;endereço próprio de STACK again: mov P2,#00 ;Apg os LEDs mov R0,#09 ;Topo da contagem setb P2.0 ;acende o primeiro laco: lcall time05S

37

djnz ljmp prox: mov rl mov ljmp

R0,prox again A,P2 A P2,A laco

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Rotina : Task2.asm (ID 01) ; Descrição: ; Esta rotina faz parte de um teste de NTR. Gerencia ; o motor (On-OFF) pelo Botão P1.2 ; Registros utilizados: ; Nenhum. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ org 040h ID01: mov SP,#27h ;endereço próprio de STACK clr P3.6 ;00-00.0000 paralisa motor clr P3.7 ;00-00.0000 paralisa motor outra: jnb P1.3,hora ;Botão Horário ? jnb P1.2,anti ;Botão Anti-Horário ? jb P1.1,outra ;de novo stop: jnb P1.1,$ ;aguarda soltar o botão clr P3.6 clr P3.7 ;Liga anti-horário ljmp outra anti: jnb P1.2,$ ;aguarda soltar o botão setb P3.6 clr P3.7 ;Liga anti-horário ljmp outra hora: jnb P1.3,$ ;aguarda soltar o botão clr P3.6 setb P3.7 ;Liga anti-horário ljmp outra ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Rotina : Task3.asm (ID 02) ; Descrição: ; Esta rotina faz parte de um teste de NTR. ; É um contador decrescente de 9 a 0 que decodifica ; em um display de 7 segmentos, na forma: ; tos letra por letra temporizando. ; a P0.0 = a ; --P0.1 = b ; f | g | b P0.2 = c ; --P0.3 = d ; e | | c P0.4 = e ; --P0.5 = f ; d P0.6 = g ; Cada segmento acende com n¡vel "0" ; ; 0gfe dcba

38

; 9 = 0001 0000 ... 0x10 ; 8 = 0000 0000 ... 0x00 ; 7 = 0111 1000 ... 0x78 ; 6 = 0000 0010 ... 0x02 ; 5 = 0001 0010 ... 0x12 ; 4 = 0001 1001 ... 0x19 ; 3 = 0011 0000 ... 0x30 ; 2 = 0010 0100 ... 0x24 ; 1 = 0111 1001 ... 0x79 ; 0 = 0100 0000 ... 0x40 ;-----------------------; Registros utilizados: ; Nenhum. ; ; Subrotinas utilizadas: ; time05S ; ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ org 071h ID02: mov SP,#2Ah ;endereço próprio de STACK mov P3,#00 ;00-00.0000 paralisa motor mov 30h,#10h ;Grava em RAM com inicio em 030h mov 31h,#00h mov 32h,#78h mov 33h,#02h mov 34h,#12h mov 35h,#19h mov 36h,#30h mov 37h,#24h mov 38h,#79h mov 39h,#40h princ: mov R0,#30h ;aponta para o primeiro proxi: mov P0,@R0 ;envia para o display call time05S inc R0 cjne R0,#3Ah,proxi ljmp princ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Sub-rotina time05S.asm (ID 03) ; Autor: Prof. Vargas ; Data:19/07/03 17:05:08 ; A rotina a seguir é timer de 0,5 S, e obtemos isto ; calculando 20 ms/(6/11.0592 MHz) = 36864. ; Fazendo 65535 - 36864 = 28671 ou 0x6FFF. ; Executando 25 x esse valor teremos ~ 0,5 S ; ; Registros utilizados: ; Acc, TH0, TL0 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ org 0A9h time05S: mov Aux_00,Acc ;Libera Acc mov Acc,#25 ;contador de 25 setb PT0 ;prioridade 1

39

mov carga: mov mov setb jnb clr clr djnz mov ret

TMOD,#01

;Timer 0 em modo1 16bit

TH0,#06Fh TL0,#0FFh TR0 TF0,$ TR0 TF0 Acc,carga Acc,Aux_00

;liga contador 1 ;aguarda overflow ;desliga o Timer0 ;Limpa flag

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=; Programa : NTR.asm ; Data : 27/11/2013 ; Descrição: ; Este é o Núcleo de Tempo Real que gerencia os pro; cessos em execução. Sua estrutura é discutida em ; detalhes no documento RealTime.doc apresentado como ; TCC na Escolas Superior Aberta do Brasil ESAB, no ; curso de Pós-Graduação em Engenharia de Sistemas sob ; orientação do Professor Caribe Zampirolli de Souza ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=NTR: clr EA mov Aux_Acc,Acc ;Preserva Acc mov Aux_PSW,PSW ;Preserva PSW mov Acc,Tasks jb Acc.0,BCT00 ;é ID 00 .. Serial LED jb Acc.1,BCT01 ;é ID 01 .. MOTOR jb Acc.2,BCT02 ;é ID 02 .. 7Seg ;------------------------------------------; A partir daqui estarão implantados os BCTs ;------------------------------------------BCT00: mov Acc,Aux_Acc ;Por questão de ordem recupera Acc mov PSW,Aux_PSW ;Por questão de ordem recupera PSW mov B0_PSW,PSW mov B0_A,Acc mov B0_SP,SP mov B0_01,R0 mov B0_02,TL0 mov B0_03,TH0 mov B0_TCON,TCON mov Tasks,#02 ;Aponta próxima tarefa ljmp restore BCT01: mov Acc,Aux_Acc ;Por ordem recupera Acc mov PSW,Aux_PSW ;Por ordem recupera PSW mov B1_PSW,PSW mov B1_SP,SP mov B1_03,R0 mov Tasks,#04 ;Aponta próxima tarefa ljmp restore BCT02: mov Acc,Aux_Acc ;Por ordem recupera Acc mov PSW,Aux_PSW ;Por ordem recupera PSW

org

0C9h

40

mov mov mov mov mov mov mov mov

B2_PSW,PSW B2_A,Acc B2_SP,SP B2_01,R0 B2_02,TL0 B2_03,TH0 B2_TCON,TCON Tasks,#01 ;Aponta próxima tarefa

restore: mov jb jb jb

Acc,Tasks Acc.0,Rec00 Acc.1,Rec01 Acc.2,Rec02

Rec00: mov mov mov mov mov mov mov mov ljmp

Acc,B0_PSW PSW,Acc Acc,B0_A SP,B0_SP R0,B0_01 TL0,B0_02 TH0,B0_03 TCON,B0_TCON fim

Rec01: mov mov mov mov ljmp

Acc,B1_PSW PSW,Acc SP,B1_SP R0,B1_01 fim

Rec02: mov mov mov mov mov mov mov mov

Acc,B2_PSW PSW,Acc Acc,B2_A SP,B2_SP R0,B2_01 TL0,B2_02 TH0,B2_03 TCON,B2_TCON

;é ID 00 .. Serial LED ;é ID 01 .. MOTOR ;é ID 02 .. 7Seg

fim: setb setb reti end

TCON.0 EA

;Mantém estrutura de interrupção

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.