AL-2005_PROCESSADOR.pdf

download AL-2005_PROCESSADOR.pdf

of 124

Transcript of AL-2005_PROCESSADOR.pdf

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    1/124

    Manual de UtilizaoAL-2005/RTMP

    Rev. E 05/2006Cd. Doc.: MU207006

    altus

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    2/124

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    3/124

    Condies Gerais de Fornecimento

    i

    Nenhuma parte deste documento pode ser copiada ou reproduzida sem o consentimento prvio e porescrito da Altus Sistemas de Informtica S.A., que se reserva o direito de efetuar alteraes semprvio comunicado.

    Conforme o Cdigo de Defesa do Consumidor vigente no Brasil, informamos a seguir, aos clientesque utilizam nossos produtos, aspectos relacionados com a segurana de pessoas e instalaes.

    Os equipamentos de automao industrial fabricados pela Altus so robustos e confiveis devido aorgido controle de qualidade a que so submetidos. No entanto, equipamentos eletrnicos de controleindustrial (controladores programveis, comandos numricos, etc.) podem causar danos s mquinasou processos por eles controlados em caso de defeito em suas partes e peas ou de erros deprogramao ou instalao, podendo inclusive colocar em risco vidas humanas.

    O usurio deve analisar as possveis conseqncias destes defeitos e providenciar instalaesadicionais externas de segurana que, em caso de necessidade, sirvam para preservar a segurana dosistema, principalmente nos casos da instalao inicial e de testes.

    imprescindvel a leitura completa dos manuais e/ou caractersticas tcnicas do produto antes dainstalao ou utilizao do mesmo.

    A Altus garante os seus equipamentos conforme descrito nas Condies Gerais de Fornecimento,anexada s propostas comerciais.

    A Altus garante que seus equipamentos funcionam de acordo com as descries contidasexplicitamente em seus manuais e/ou caractersticas tcnicas, no garantindo a satisfao de algumtipo particular de aplicao dos equipamentos.

    A Altus desconsiderar qualquer outra garantia, direta ou implcita, principalmente quando se tratarde fornecimento de terceiros.

    Pedidos de informaes adicionais sobre o fornecimento e/ou caractersticas dos equipamentos eservios Altus devem ser feitos por escrito. A Altus no se responsabiliza por informaes fornecidassobre seus equipamentos sem registro formal.

    DIREITOS AUTORAIS

    Srie Ponto, MasterTool, Quark, ALNET e WebPLC so marcas registradas da Altus Sistemas deInformtica S.A.

    IBM marca registrada da International Business Machines Corporation.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    4/124

    Sumrio

    ii

    Sumrio

    1. INTRODUO........................................................................................................................................... 6

    O Real-Time Multitasking Processor ......................................................................................................... 6Aplicaes do Processador Multitarefa AL-2005....................................................................................... 6Documentos Relacionados a este Manual................................................................................................... 7Inspeo Visual............................................................................................................................................ 7Suporte Tcnico........................................................................................................................................... 7Mensagens de Advertncia Utilizadas neste Manual ................................................................................. 8

    2. DESCRIO TCNICA.......................................................................................................................... 10

    Descrio do Painel ................................................................................................................................... 10Caractersticas Tcnicas............................................................................................................................ 11

    Caractersticas Gerais.......................................................................................................................... 11Arquitetura do Processador Multitarefa AL-2005................................................................................... 12Caractersticas do Equipamento............................................................................................................... 12Dimenses Fsicas...................................................................................................................................... 12Dados para Compra.................................................................................................................................. 13

    Itens Integrantes .................................................................................................................................. 13Cdigo do Produto .............................................................................................................................. 13Produtos Relacionados ........................................................................................................................ 13

    3. CONFIGURAO ................................................................................................................................... 14

    Ambiente de Desenvolvimento de Aplicaes para o AL-2005................................................................ 15

    F-2005.016 - Funo de Comunicao CP com o AL-2005 ...................................................................... 15O Carregador de Aplicativos AL-3860..................................................................................................... 16

    Boto Selecionar ................................................................................................................................. 17Boto Enviar ....................................................................................................................................... 17Boto Cancelar.................................................................................................................................... 17Boto Programao............................................................................................................................. 17Boto Execuo .................................................................................................................................. 18Boto Apagar ...................................................................................................................................... 18Boto Diretrio ................................................................................................................................... 18Boto Porta Serial ............................................................................................................................... 18Boto Sobre ........................................................................................................................................ 19Boto Fechar....................................................................................................................................... 19

    4. SISTEMA OPERACIONAL .................................................................................................................... 20

    Escalonador de Tarefas ....................................................................................................................... 20Supervisor de Interrupes .................................................................................................................. 26Temporizaes .................................................................................................................................... 26Mensagens .......................................................................................................................................... 28Gerenciadores ..................................................................................................................................... 30Entrada/Sada...................................................................................................................................... 36Relgio e Sincronismo ........................................................................................................................ 38Outros Servios................................................................................................................................... 38

    5. PROGRAMAO.................................................................................................................................... 40

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    5/124

    Sumrio

    iii

    Funes da Biblioteca de Suporte............................................................................................................. 41AddBlockUseCount ............................................................................................................................ 41AddBottomList ................................................................................................................................... 41AddBufferUseCount............................................................................................................................ 42AddTopList......................................................................................................................................... 42BeginInterrupt..................................................................................................................................... 42ChangeInterruptHandler ...................................................................................................................... 43

    ChangeTaskPriority............................................................................................................................. 43CreateBufferPool ................................................................................................................................ 43CreateResource ................................................................................................................................... 44CreateSemaphore ................................................................................................................................ 44CreateTask.......................................................................................................................................... 45CreateTimer........................................................................................................................................ 45DeleteBufferPool ................................................................................................................................ 46DeleteResource ................................................................................................................................... 46DeleteSemaphore ................................................................................................................................ 47DeleteTask.......................................................................................................................................... 47DeleteTimer........................................................................................................................................ 48Disable................................................................................................................................................ 48EmuInit............................................................................................................................................... 48Enable49EndInterrupt........................................................................................................................................ 49EndTask.............................................................................................................................................. 49EscreveLeds........................................................................................................................................ 49FillBlock............................................................................................................................................. 50FreeBlock ........................................................................................................................................... 50FreeBuffer........................................................................................................................................... 51FreeEventGroup.................................................................................................................................. 51GenerateInterrupt ................................................................................................................................ 52GetBlock............................................................................................................................................. 52

    GetBlockSize ...................................................................................................................................... 53GetBlockUsingHandle......................................................................................................................... 53GetBottomList .................................................................................................................................... 54GetBuffer ............................................................................................................................................ 54GetBufferSize ..................................................................................................................................... 54GetEventGroup ................................................................................................................................... 55GetHandle........................................................................................................................................... 55GetIDCoproc....................................................................................................................................... 56GetMailboxMessage............................................................................................................................ 56GetNumTab ........................................................................................................................................ 57GetTamTab......................................................................................................................................... 57GetTaskDescriptor .............................................................................................................................. 57

    GetTaskID .......................................................................................................................................... 58GetTaskStatus ..................................................................................................................................... 58GetTime.............................................................................................................................................. 58GetTopList.......................................................................................................................................... 59HookPLC............................................................................................................................................ 59InByte60InWord ............................................................................................................................................... 60KillTask.............................................................................................................................................. 60LocateTask ......................................................................................................................................... 61Offset 61OutByte .............................................................................................................................................. 62OutWord............................................................................................................................................. 62

    ReadOp............................................................................................................................................... 62ReadOpSwap ...................................................................................................................................... 63

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    6/124

    Sumrio

    iv

    ReadPLC ............................................................................................................................................ 65ReadTab ............................................................................................................................................. 67ReadTabs ............................................................................................................................................ 68ReadTabSwap..................................................................................................................................... 69ReadTimer .......................................................................................................................................... 70ReleaseNestedResource....................................................................................................................... 71ReleaseResource ................................................................................................................................. 71

    ReserveResource................................................................................................................................. 72ResetBufferPool.................................................................................................................................. 72ResetBufferPools ................................................................................................................................ 73ResetList............................................................................................................................................. 73ResetPendingWake ............................................................................................................................. 74ResetTaskWake................................................................................................................................... 74RXBlock............................................................................................................................................. 74RXByte............................................................................................................................................... 75Segment.............................................................................................................................................. 76SendMessage ...................................................................................................................................... 77SendMessageWait ............................................................................................................................... 77SerialConfig........................................................................................................................................ 78Descrio............................................................................................................................................ 78SetInterrupt......................................................................................................................................... 79SetOffset ............................................................................................................................................. 80SetSegment ......................................................................................................................................... 80SetTime .............................................................................................................................................. 80SignalEvent......................................................................................................................................... 81SignalSemaphore ................................................................................................................................ 81StartStopTimer.................................................................................................................................... 82StartTask............................................................................................................................................. 82StopTask............................................................................................................................................. 82TimeConvert....................................................................................................................................... 83

    TXBlock ............................................................................................................................................. 83TXByte ............................................................................................................................................... 84Wait 85WaitEvent........................................................................................................................................... 85WaitSemaphore................................................................................................................................... 86WaitTime............................................................................................................................................ 86WakeCallingTask................................................................................................................................ 87WakeTask........................................................................................................................................... 87WriteOp.............................................................................................................................................. 88WriteOpSwap ..................................................................................................................................... 89WritePLC............................................................................................................................................ 91WriteTab............................................................................................................................................. 92

    WriteTabs ........................................................................................................................................... 93WriteTabSwap.................................................................................................................................... 94Sintaxe................................................................................................................................................ 95

    6. DESENVOLVENDO UMA APLICAO PARA O AL-2005................................................................ 97

    Instalao do Ambiente de Desenvolvimento........................................................................................... 97Diretrio INCLUDE............................................................................................................................ 97Diretrio LIB ...................................................................................................................................... 97Diretrio UTIL.................................................................................................................................... 97Diretrio AL3860................................................................................................................................ 97Diretrio SUPORTE ........................................................................................................................... 97

    Diretrio TD2005................................................................................................................................ 98Diretrio DOCS.................................................................................................................................. 98

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    7/124

    Sumrio

    v

    Diretrios DEMOCOM e DEMOCALC.............................................................................................. 98Utilizando os Programas DEMO............................................................................................................ 101Descrio do Programa DEMOCOM..................................................................................................... 106Descrio do Programa DEMOCALC ................................................................................................... 107Compilando os Programas DEMOCOM e DEMOCALC.................................................................... 108Depurao dos Programas DEMO......................................................................................................... 109

    Verso para Depurao ..................................................................................................................... 109

    Verso para Carga em Flash EPROM................................................................................................ 113

    7. INSTALAO........................................................................................................................................ 115

    Instalao Mecnica e Eltrica ............................................................................................................... 115Conexes Gerais ............................................................................................................................... 116Interfaces Seriais............................................................................................................................... 116Instalao dos Mdulos Seriais.......................................................................................................... 117

    Instalao do CD..................................................................................................................................... 117

    8. MANUTENO ..................................................................................................................................... 118

    Diagnsticos............................................................................................................................................. 118Teste das Interfaces Seriais..................................................................................................................... 118Identificando Problemas ......................................................................................................................... 119Manuteno Preventiva .......................................................................................................................... 119

    9. GLOSSRIO .......................................................................................................................................... 120

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    8/124

    1. Descrio Tcnica

    6

    1. Introduo

    O Real-Time Multitasking Processor

    O Real-Time Multitasking Processor AL-2005 um processador de comunicao e de algoritmosque opera em conjunto com as UCPs AL-2003 ou AL-2004.

    O Processador Multitarefa AL-2005 pode executar tarefas diversas tais como comunicao comoutros equipamentos utilizando protocolos quaisquer e programas aplicativos escritos em linguagemde alto nvel (linguagem "C").

    Os aplicativos do processador multitarefa so desenvolvidos utilizando-se uma biblioteca de funesprpria do AL-2005.

    O processador multitarefa AL-2005 possui sistema operacional multitarefa de tempo real preemptivoque permite a execuo de vrios mdulos de programa simultaneamente, acessando a memriaimagem da UCP de forma concorrente.

    O AL-2005 permite que sejam acoplados at dois mdulos seriais. Cada um destes mdulosimplementa um padro fsico de comunicao diferente (AL-2405/485I para o padro RS-485,AL-2405/232 para o padro RS-232C).

    Sob o ponto de vista do programa aplicativo no CP, toda a comunicao entre o processadorMultitarefa AL-2005 e a UCP realizada por meio de uma memria de operandos compartilhada.Deve-se utilizar no programa do CP uma ou mais chamadas a uma funo de comunicao com oProcessador Multitarefa AL-2005 (mdulo F-2005.016). Este mdulo funo permite que o AL-2005obtenha acesso a memria imagem dos operandos do CP, podendo realizar a leitura ou escrita dosoperandos do CP.

    Atravs da conexo de um microcomputador padro IBM-PC ao Processador Multitarefa AL-2005

    pode-se realizar carga e depurao de programas aplicativos. Para tanto deve-se utilizar o carregadorAL-3860, fornecido no CD que acompanha o produto, e o canal serial dedicado para carga deprograma no Processador Multitarefa AL-2005.

    Aplicaes do Processador Multitarefa AL-2005

    O Processador Multitarefa AL-2005/RTMP pode ser utilizado para realizar tarefas de altacomplexidade liberando o processador principal do CP para realizar suas tarefas convencionais, taiscomo varredura e acionamento, permitindo uma distribuio mais equilibrada da carga deprocessamento entre os dois processadores.

    O processador AL-2005 suporta a escrita de aplicaes seqenciais tradicionais ou aplicaes

    multitarefa. Esta ltima permite um maior aproveitamento do tempo do processador, uma vez quequalquer tarefa que no necessita da UCP em um determinado momento, pode liber-la para outratarefa ou aplicao.

    Este manual inclui a descrio do ambiente de desenvolvimento para aplicaes no AL-2005, bemcomo fornece uma referncia A-Z das funes da biblioteca do sistema.

    O programa executivo do AL-2005, tambm chamado de BIOS, um sistema operacional multitarefade tempo real preemptivo, que suporta a execuo simultnea de vrios programas aplicativos. Paratanto, torna disponvel ao projetista de aplicaes, uma biblioteca de funes.

    Atravs do suporte desta biblioteca de funes possvel:

    desenvolver aplicativos multitarefa utilizando funes de criao de tarefas, espera de eventos,

    espera de recursos, semforos, identificao de tarefas etc.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    9/124

    1. Descrio Tcnica

    7

    utilizar aritmtica de ponto flutuante.

    realizar alocao dinmica de memria.

    acessar os operandos do CP, atravs de funes de escrita e leitura a operandos simples e tabelas.

    acessar as placas seriais conjugadas ao hardware do AL-2005, nos padro RS-485 ou RS-232C.

    Documentos Relacionados a este Manual

    Para obter informaes adicionais sobre o processador AL-2005 podem ser consultados outrosdocumentos (manuais e caractersticas tcnicas) alm deste. Estes documentos encontram-sedisponveis em sua ltima reviso emwww.altus.com.br.

    Cada produto possui um documento denominado Caracterstica Tcnica (CT), onde encontram-se ascaractersticas do produto em questo. Adicionalmente o produto pode possuir Manuais de Utilizao(o cdigo do manuais so citados na CT).

    Aconselha-se os seguintes documentos como fonte de informao adicional:

    Manual de Utilizao do AL-2003.

    Manual de Utilizao do AL-2004. Manual de Programao do MT4100.

    Inspeo Visual

    Antes de proceder instalao, recomendvel fazer uma inspeo visual cuidadosa dosequipamentos, verificando se no h danos causados pelo transporte. Verifique se todos oscomponentes de seu pedido esto em perfeito estado. Em caso de defeitos, informe a companhiatransportadora e o representante ou distribuidor Altus mais prximo.

    CUIDADO:Antes de retirar os mdulos da embalagem, importante descarregar eventuais potenciaisestticos acumulados no corpo. Para isso, toque (com as mos nuas) em uma superfciemetlica aterrada qualquer antes de manipular os mdulos. Tal procedimento garante que osnveis de eletricidade esttica suportados pelo mdulo no sero ultrapassados.

    importante registrar o nmero de srie de cada equipamento recebido, bem como as revises desoftware, caso existentes. Essas informaes sero necessrias caso se necessite contatar o SuporteTcnico da Altus.

    Suporte Tcnico

    Para entrar em contato com o Suporte Tcnico da Altus em So Leopoldo, RS, ligue para +55-51-

    3589-9500. Para conhecer os centros de Suporte Tcnico da Altus existentes em outras localidades,consulte nosso site (www.altus.com.br) ou envie um email [email protected].

    Se o equipamento j estiver instalado, tenha em mos as seguintes informaes ao solicitarassistncia:

    os modelos dos equipamentos utilizados e a configurao do sistema instalado o nmero de srie da UCP a reviso do equipamento e a verso do software executivo, constantes na etiqueta afixada na

    lateral do produto informaes sobre o modo de operao da UCP, obtidas atravs do programador MasterTool o contedo do programa aplicativo (mdulos), obtido atravs do programador MasterTool a verso do programador utilizado

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    10/124

    1. Descrio Tcnica

    8

    Mensagens de Advertncia Utilizadas neste Manual

    Neste manual, as mensagens de advertncia apresentaro os seguintes formatos e significados:

    PERIGO:Relatam causas potenciais, que se no observadas,levama danos integridade fsica e sade,

    patrimnio, meio ambiente e perda da produo.

    CUIDADO:Relatam detalhes de configurao, aplicao e instalao que devemser seguidos para evitarcondies que possam levar a falha do sistema e suas consequncias relacionadas.

    ATENO:Indicam detalhes importantes de configurao, aplicao ou instalao para obteno da mximaperformance operacional do sistema.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    11/124

    1. Descrio Tcnica

    9

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    12/124

    2. Descrio Tcnica

    10

    2. Descrio Tcnica

    Este captulo apresenta as caractersticas tcnicas do produto AL-2005, abordando as partesintegrantes do sistema, sua arquitetura, caractersticas gerais e eltricas.

    Descrio do Painel

    A figura 2-1 mostra o painel do produto AL-2005.

    Figura 2-1: Painel do Processador AL-2005

    Canais decomunicao(A e B)

    Placa Interface deComunicao

    Canal auxiliar

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    13/124

    2. Descrio Tcnica

    11

    Caractersticas Tcnicas

    Caractersticas Gerais

    AL-2005

    Tipo de mdulo Real Time Multitasking Processor

    Processador 80C186 20 MHz 16 bits

    Memria RAM 256 Kb (64 Kb ocupados pela BIOS)

    Memria Flash paraaplicativos

    256 Kb (64 Kb ocupados pela BIOS)

    Carga de programasaplicativos no processador

    Via canal serial atravs do carregador AL-3860

    Sistema operacional Multitarefa preemptivo

    Linguagem de Programaodos aplicativos

    Linguagem "C"

    Comunicao com o CP Atravs de mdulo F chamado por meio de uma instruo CHF

    Acesso aos operandos do CP Via memria imagem

    Barramentos de dadosinternos

    16 bits

    Velocidade canal serial Com apenas um canal serial : 38400 bauds

    Com dois canais: 19200 bauds

    Tempo mximo paradesligamento do sinal de RTS

    Com uma placa AL-2405: 150uS

    Com duas placas AL-2405: 950uS

    Nmero mximo de tarefas emcada AL-2005

    8

    Taxa de transferncia dedados com memria imagemda UCP

    Melhor que 1 Mbyte/s

    Portas Seriais COM1 e COM2 RS232C ou RS-485 conforme interface de comunicaoAL-2405

    Consumo 850 mA @ 5 Vccconsiderar consumo de placas adicionais conectadas aoProcessador AL-2005

    Nvel de severidade dedescargas eletrostticas (ESD)

    Conforme a norma IEC 1131 nvel 3

    Imunidade a rudo eltrico tipoonda oscilatria

    Conforme norma IEC1131, nvel de severidade A e IEEEC37.90.1 (SWC)

    Proteo contra choqueeltrico

    Conforme norma IEC-536 (1976), classe I, quando instalado embastidor

    Peso Sem embalagem: 500 gCom embalagem: 700 g

    Umidade relativa do ar 5 a 95% sem condensao

    Indicao de estado 4 LEDs indicadores de estadoTemperatura mxima deoperao

    60oC

    Temperatura de armazenagem -25 a 70 C

    Tabela 2-1 Caractersticas Tcnicas Gerais

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    14/124

    2. Descrio Tcnica

    12

    Arquitetura do Processador Multitarefa AL-2005

    Um sistema de tempo real se caracteriza pela necessidade de responder adequadamente a eventosocorridos assincronamente no tempo. Um sistema multitarefa um conjunto de atividades ou tarefasque podem ser realizados sem interferncia em outros processos. Um sistema com vrias tarefas que

    devem ser executadas simultaneamente e com um tempo de execuo crtico chamado de "real-timemultitasking system".

    O processador AL-2005 implementa um sistema operacional multitarefa, o que facilita a soluo desistemas de tempo real. O sistema operacional do AL-2005 utiliza um mtodo de "time-slice"(mtodo de tempo compartilhado) para a execuo de aplicativos independentes uns dos outros.

    Cada aplicativo pode possuir um conjunto de tarefas. O chaveamento de tarefas segue o mtodopreemptivo (prioridade de tarefa). Portanto o sistema operacional do processador AL-2005 seguedois mtodos:

    Time-slice: tempo compartilhado para cada aplicao residente no AL-2005. Preemptivo: para cada tarefa de um determinado aplicativo deve-se atribuir uma prioridade de

    execuo. As tarefas podem ser interrompidas por uma de maior prioridade.

    A arquitetura do processador AL-2005 baseada no microprocessador de 16 bits Intel 80C186, quepossui elevada integrao de recursos de hardware e especialmente indicado para aplicaesindustriais. O cdigo das instrues deste microprocessador compatvel com o dos demaismicroprocessadores da Intel utilizados nos computadores IBM PC (80386, 80486, etc.).

    Caractersticas do Equipamento

    Dimenses Fsicas

    Dimenses em milmetros.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    15/124

    2. Descrio Tcnica

    13

    Dados para Compra

    Itens Integrantes

    A embalagem do produto contm um

    Mdulo AL-2005/RTMP: processador AL-2005/RTMP (Real Time Multitasking Processor) CD Card com os seguintes itens:

    o Mdulo funo de interface UCP/AL-2005: F-2005.016.o Carregador AL-3860.o Biblioteca de Funes.o Programas Exemplos: DEMOS.o Manual de Utilizao.o Tutorial.

    Cdigo do Produto

    O seguinte cdigo deve ser usado para compra do produto:

    Cdigo Denominao

    AL-2005 Real Time Multitask Processor

    Produtos Relacionados

    Os seguintes produtos devem ser adquiridos separadamente quando necessrio:

    Cdigo Denominao

    AL-2405/485I Mdulo serial RS-485 isoladoAL-2405/232 Mdulo serial RS-232C

    AL-1340 Cabo DB25 P2 Estreo

    AL-1327 ou AL-1715 Cabo DB9-RJ45 PC/AL-2005

    AL-2302 Cabo DB9 macho para rede RS-485

    MT4100 Programador MasterTool

    ATENO:Para o desenvolvimento de programas aplicativos para o processador AL-2005 obrigatria autilizao do compilador Borland C++ verso 3.1, nos modelos de memria LARGE ou SMALL.

    Alm do compilador, necessrio tambm o utilitrio de relocao LOCATE da Paradigm, verso4.0.

    ATENO:Para aquisio deste compilador, deve ser adquirida a verso 5.02 ou posterior do produto BorlandCCompiler junto aos representantes da Borland e requisitada cpia do compilador Borland C ++ 3.1.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    16/124

    3. Configurao

    14

    3. Configurao

    O Processador Multitarefa AL-2005 um mdulo que opera em conjunto com a UCP AL-2003 ouAL-2004. Desta forma, o Processador Multitarefa AL-2005 deve ser declarado como um mdulo no

    barramento da UCP.Esta declarao feita atravs do programador MasterTool. A figura a seguir mostra a tela dedeclarao dos mdulos no barramento da UCP:

    Figura 3-1 Tela de Configurao do Barramento no Programador MasterTool

    Alm da declarao do AL-2005 no barramento, necessrio a utilizao de um mdulo funo F-2005.016 - no programa aplicativo do CP. Este mdulo responsvel pela comunicao entre oprocessador e a UCP.

    O processador AL-2005 baseado em microprocessador 80186 da Intel, permitindo que programasaplicativos sejam desenvolvidos utilizando compiladores para microcomputador padro IBM PC, que

    geram cdigo compatvel com o do processador.No entanto, por questes de implementao de seu programa executivo, o desenvolvimento deprogramas aplicativos para o AL-2005 est limitado utilizao do compilador Borland C++ verso3.1.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    17/124

    3. Configurao

    15

    Ambiente de Desenvolvimento de Aplicaes para o AL-2005

    O desenvolvimento de aplicaes pelo usurio para o AL-2005 deve ser feito a partir de uma dasaplicaes exemplos, identificadas pelo arquivo de projeto DEMO.PRJ, fornecidas com o produtoAL-2005.

    Uma caracterstica importante fornecida pela BIOS do AL-2005 a capacidade de depuraosimblica remota, o que permite o uso do Turbo Debbuger da Borland para a depurao deprogramas aplicativos.

    As aplicaes desenvolvidas podem ser verificadas tomando como exemplo a aplicao exemplodepurvel identificada pelo arquivo de projeto DEMOTD.PRJ.

    Para que o processador AL-2005 obtenha acesso memria imagem do CP (memria de operandos) necessria a chamada da funo de comunicao F-2005.016 no programa do CP.

    O programa aplicativo responsvel por atuar na janela de tempo disponibilizada pela F-2005.016deve ser desenvolvido e carregado no processador AL-2005. A carga de aplicativos no processadorAL-2005 efetuada pelo usurio pela interface serial RS-232C de um computador PC compatvel,com o uso do programa carregador AL-3860.

    F-2005.016 - Funo de Comunicao CP com o AL-2005

    A comunicao entre o processador AL-2005 e a UCP efetuada atravs de uma rea de memriacompartilhada por ambos, qual cada um dos mdulos tem acesso de forma exclusiva. A iniciativada comunicao sempre comandada pela chamada do mdulo de funo F-2005.016 dentro doprograma aplicativo do CP, fazendo com que, a partir deste instante, o processador AL-2005disponha de uma janela de tempo de at 3200 s para acessar as reas de comunicao com o CP.

    O mdulo de funo F-2005.016 implementa a comunicao entre a UCP e o processador AL-2005. tambm usado para transferir informaes de configurao do CP para os programas aplicativos doAL-2005, atravs de tabelas de memria. Estas informaes de configurao podem, por exemplo,estabelecer um mapeamento, ou seja, relaes, entre operandos do CP e variveis/parmetros de

    algum dispositivo externo, conectado atravs dos canais seriais do processador AL-2005.

    As entradas da instruo de chamada da F-2005.016 so:

    habilita:quando acionada, a funo est habilitada a executar, abrindo uma janela de tempo paraacesso do processador AL-2005 s reas de comunicao com o CP ou possibilitando atransferncia de informaes de configurao.

    configura:quando acionada, novas informaes de configurao so transferidas do CP para oprocessador AL-2005. A entradaconfigura, aps ativada, deve ser desligada quando a sada deerroestiver no estado desligado.

    reset: quando acionada, faz com que se perca a configurao corrente. A entradareset, apsativada, deve ser desligada quando a sada deerroestiver no estado desligado.

    2005

    OPER1

    OPER2

    016

    OPER3

    OPER4

    habilita

    configura

    reset

    cpia habilita

    erro

    CHF

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    18/124

    3. Configurao

    16

    As sadas da instruo de chamada da F-2005.016 so:

    cpia habilita: uma cpia da entradahabilita. erro: esta sada energizada quando a comunicao entre o CP e o processador AL-2005 no se

    realiza a contento: ou porque o processador AL-2005 no aproveita a janela de tempo concedidapelo CP, ou porque os operandos da funo foram mal especificados quanto a seus tipos ouendereos.

    As clulas da instruo CHF utilizada para a chamada da F-2005.016 so programadas do seguintemodo:

    OPER1:nmero de parmetros passados para a funo emOPER3: deve ser obrigatoriamenteuma constante memria com o valor 3 (KM+00003).

    OPER2:nmero de parmetros passados emOPER4: KM+00000, j queOPER4no utilizado.

    OPER3:parmetros passados para a funo, declarados atravs de uma janela visualizada noprogramador de CPs MasterTool quando a instruo CHF editada; o nmero de parmetroseditveis especificado emOPER1, sendo fixado em 3 para este mdulo:RXXXX: endereo da placa AL-2005 no barramento do CP . Consulte documentao do bastidor

    em uso para definio de endereos vlidos para mdulos inteligentes. OPER4:no utilizado

    O Carregador de Aplicativos AL-3860

    O carregador AL-3860 permite a carga de aplicativos para o processador AL-2005, bem como aexecuo de operaes de manuteno, tais como leitura de aplicativos j carregados e remoo dosmesmos.

    Para a execuo do carregador AL-3860, primeiramente, necessrio conectar-se o cabo AL-1327 naporta de comunicao serial desejada e ligar o AL-2005. O AL-2005 indicar que no existeaplicao carregada, utilizando-o pela primeira vez. Aps, necessrio selecionar a porta decomunicao desejada, pressionando-se o botoPorta Serial. Finalmente, executar o programa

    AL-3860 no diretrio corrente.A tela de apresentao do carregador AL-3860 mostrada na figura a seguir:

    Figura 3-2 Carregador AL-3860

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    19/124

    3. Configurao

    17

    ATENO:Para executar as operaes no AL-2005, o mesmo deve encontrar-se, obrigatoriamente, no estadoprogramao.

    A rea branca destinada a mostrar informaes sobre as aplicaes carregadas no AL-2005, bemcomo mensagens orientativas, auxiliando a utilizao do software.

    As seguintes operaes esto disponveis no AL-3860 atravs de botes de comando:

    Boto Selecionar

    Este comando permite a seleo de arquivos de programas aplicativos executveis (*.EXE) do disco,para posterior envio ao AL-2005. Nenhum outro tipo de arquivo pode ser selecionado por esta opo.Ao selecionar um arquivo o carregador AL-3860 exibe o seu nome na barra de ttulo, conformemostrado na figura a seguir:

    Figura 3-3 Seleo de Arquivo para Carga

    Boto Enviar

    Esta opo envia o programa aplicativo para a memria do processador AL-2005. Antes da efetivatransmisso do arquivo o AL-3860 verifica se o programa aplicativo selecionado um arquivoexecutvel no AL-2005 e se existe espao de memria de cdigo e de dados para a carga.

    Boto Cancelar

    Esta opo cancela a transmisso da aplicao para o AL-2005.

    Boto Programao

    Este comando passa o processador para o estado programao. no estado programao que sopermitidas as operaes de leitura de diretrio do processador AL-2005, excluso de aplicativos damemria e envio de programas aplicativos.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    20/124

    3. Configurao

    18

    Boto Execuo

    Este comando passa o AL-2005 para o estado execuo. Ao receber este comando, o processadorverifica se existe algum aplicativo carregado em sua memria. Caso haja algum aplicativo namemria, a BIOS dispara a sua execuo. Caso contrrio, o processador entra em estado de erro deprograma.

    Boto Apagar

    Esta opo apaga todos os aplicativos residentes na memria do processador AL-2005.

    ATENO:O processo de apagamento dos programas aplicativos residentes na memria do processadorAL-2005 um processo irreversvel.

    Boto Diretrio

    Exibe o diretrio de aplicativos carregados na memria Flash do processador AL-2005. Para cada

    aplicativo carregado no processador exibido o nmero da aplicao, bem como o nmero de bytesutilizados para cdigo (na memria Flash) e o nmero de bytes utilizados para dados (na memriaRAM). A figura a seguir apresenta uma tela exemplo de um diretrio.

    Figura 3-4 Tela do diretrio

    Boto Porta Serial

    Esta opo permite selecionar o canal serial do microcomputador que ser utilizado na comunicaocom o processador AL-2005. A figura a seguir mostra a janela de seleo do canal.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    21/124

    3. Configurao

    19

    Figura 3-3 Seleo do Canal Serial

    Boto Sobre

    Esta opo mostra a verso do AL-3860.

    Boto Fechar

    Permite finalizar a execuo do carregador AL-3860.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    22/124

    4. Sistema Operacional

    20

    4. Sistema Operacional

    Um sistema de tempo real caracterizado pela necessidade de uma resposta rpida a eventos queocorrem assincronamente no tempo. Um sistema multitarefa aquele no qual vrias atividades ou

    processos devem ser realizados simultaneamente sem interferncia entre si.Um sistema no qual vrias atividades devam operar simultaneamente em tempos crticos chamadode sistema multitarefa em tempo real.

    O sistema operacional do processador AL-2005 fornece uma soluo simples para a complexidade demltiplas tarefas sendo executadas em tempo real, supervisionando a execuo ordenada desteconjunto de tarefas.

    Uma tarefa nada mais do que um mdulo de programa. Um programa aplicativo composto poruma ou mais tarefas, onde cada tarefa pode resolver um problema especfico e fornecer umadeterminada capacidade funcional ao programa.

    Este captulo apresenta o sistema operacional do processador AL-2005, descrevendo como devem ser

    criadas e se relacionam entre si as diferentes tarefas carregadas.

    Escalonador de Tarefas

    O escalonador de tarefas procura em uma lista de tarefas disponveis aquela com a maior prioridade eem condies de execuo. A prioridade da execuo das tarefas determinada pelo projetista dasmesmas, exceto no caso dos prprios programas aplicativos que possuem um valor de prioridade pr-definido. Se no houver nenhuma tarefa pronta para ser executada, o sistema operacional, com asinterrupes habilitadas, aguarda que algum evento externo gere uma interrupo.

    O sistema operacional inicia a execuo de uma tarefa pelo endereo de incio da mesma, tambm

    definido pelo projetista. A tarefa executada como se fosse o nico programa no sistema.Assim que inicia sua execuo, a tarefa parece operar sem interrupes. As interrupes queporventura possam ocorrer so tratadas pelo sistema operacional de uma forma transparente para atarefa. Ao entrar em execuo, a tarefa inibe a execuo de qualquer outra tarefa com prioridademenor do que a sua, permanecendo neste estado at que decida renunciar ao controle, mesmo quetemporariamente, atravs da chamada de uma funo do sistema operacional.

    A tarefa termina ao retornar para o escalonador do sistema operacional que volta a procurar aprxima tarefa de maior prioridade pronta a executar, dando-lhe o controle do processador.

    O sistema operacional oferece um conjunto de servios que podem ser invocados pela tarefa atravsde chamadas de funes, que constituem a chamada biblioteca de suporte do sistema. Uma tarefa

    pode, por exemplo, enviar uma mensagem para outra tarefa, aguardar por um evento ou por umintervalo de tempo. Se a tarefa desejar aguardar um evento, o servio correspondente do sistemaoperacional suspender a tarefa e requisitar ao escalonador a execuo da prxima tarefa com maiorprioridade pronta a executar.

    O sistema operacional atua como chaveador de contextos, supervisionando a execuo ordenada dastarefas. Emprega um algoritmo de escalonamento preemptivo e comandado por prioridade queassegura que a tarefa de maior prioridade que esteja pronta para executar um trabalho til sempre tero controle do processador. O sistema far o chaveamento de tarefas se receber uma requisio datarefa em execuo para realizar uma operao que invoca uma tarefa de maior prioridade. A tarefaem execuo pode, por exemplo, requisitar ao sistema operacional o disparo de uma tarefa de maiorprioridade atravs do envio de uma mensagem para a mesma.

    Os servios do sistema operacional diretamente relacionados com o controle de tarefas so osseguintes:

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    23/124

    4. Sistema Operacional

    21

    Controle ChangeTaskPriority Altera a prioridade de uma tarefade tarefas CreateTask Cria uma nova tarefa

    DeleteTask Remove uma tarefa do sistema operacionalEndTask Termina a execuo da tarefa correnteGetTaskDescriptor Obtm o ponteiro para o descritor de uma tarefaGetTaskID Obtm o identificador da tarefa corrente

    GetTaskStatus Obtm o estado de uma tarefaKillTask Mata uma tarefaLocateTask Localiza uma tarefa atravs de seu nomeResetPendingWake Reseta uma requisio pendente para acordar a tarefa correnteResetTaskWake Reseta uma requisio pendente para acordar uma tarefaStartTask Dispara a execuo de uma tarefaStopTask Para (termina) a execuo de uma tarefaWait Aguarda incondicionalmente at ser acordadaWaitTime Aguarda um intervalo de tempo (delay)WakeCallingTask Acorda a tarefa que enviou uma mensagem para a tarefa correnteWakeTask Acorda uma tarefa no estado de espera

    Criao de uma TarefaAs tarefas podem ser pr-definidas, como no caso de um programa aplicativo carregado noprocessador AL-2005, ou podem ser criadas dinamicamente por outras tarefas durante sua execuo.

    O sistema operacional AMX do AL-2005 suporta no mximo 10 tarefas simultneas, sendo quedestas, 2 tarefas so reservadas para a prpria BIOS do AL-2005: a primeira tarefa a prpriaaplicao (main) da BIOS, e a segunda tarefa a de comunicao com o carregador AL-3860. Asoutras 8 tarefas esto disponveis para serem utilizadas pelas aplicaes a serem carregadas noAL-2005.

    Cada aplicao carregada no AL-2005 considerada tambm como uma nova tarefa.

    Exemplo: se forem carregadas duas aplicaes no AL-2005, e onde cada uma delas ainda crie maisduas tarefas (CreateTask), teremos 8 tarefas executando, das 10 disponveis:

    tarefa 1: BIOS. tarefa 2: tarefa criada pela main da BIOS (int de comunicao). tarefa 3: main da primeira aplicao carregada. tarefa 4: main da segunda aplicao carregada. tarefa 5: tarefa 1/2 criada pela main da primeira aplicao carregada. tarefa 6: tarefa 2/2 criada pela main da primeira aplicao carregada. tarefa 7: tarefa 1/2 criada pela main da segunda aplicao carregada. tarefa 8: tarefa 2/2 criada pela main da segunda aplicao carregada. tarefa 9: disponvel. tarefa 10: disponvel.

    A criao dinmica de uma tarefa requer a inicializao de uma estrutura de dados de descrio datarefa, que contm informaes relevantes para que o sistema operacional controle a execuo damesma.

    Esta estrutura encontra-se definida no arquivo AL2005.H da seguinte forma:

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    24/124

    4. Sistema Operacional

    22

    typedef struct

    {

    void far (far *TaskProcedure) ();

    char Tag1;

    char Tag2;

    char Tag3;char Tag4;

    unsigned int far *lpnStack;

    unsigned int nStackSize;

    unsigned int nTaskAttributes;unsigned int nPriority;

    unsigned int nTimeSlice;

    int nMail0Size;

    int nMail1Size;

    int nMail2Size;

    int nMail3Size;

    } TASKDESCR;

    onde:

    TaskProcedure um ponteiro para a funo que ser chamada pelo sistema operacional quando atarefa for disparada.

    ATENO:Toda funo usada para disparar uma nova tarefa deve ser declarada como HUGE. O motivo disto garantir que o registrador de segmento de dados (DS) da tarefa seja preservado quando houverchaveamento de tarefas.

    Tag1 a Tag4so quatro bytes usados para definir um tag nico, isto , um nome, para cada tarefa;normalmente utilizam-se quatro caracteres ASCII como tag da tarefa. A funo LocateTaskpode serusada para encontrar o identificador de uma tarefa atravs de seu tag.

    lpnStack o endereo da pilha da tarefa. Para cada tarefa deve ser alocada uma rea em RAM para asua pilha. Deve ser passado o endereo do fim da pilha. A partir da verso 2.24 da BIOS, esteendereo passou a ser ajustado automaticamente para permitir que a tarefa execute clculos em pontoflutuante sem afetar outras reas.

    nStackSize o tamanho da pilha da tarefa em bytes. Deve ser um nmero par de bytes. O tamanho da

    pilha de cada tarefa dependente da aplicao. Deve ter no mnimo 64 palavras (128 bytes) parapermitir com que a tarefa receba mensagens e seja interrompida e suspensa por tarefas de maiorprioridade. Alm disto, deve-se alocar espao suficiente para satisfazer as necessidades particularesde cada tarefa.

    nTaskAttributesdeve ser sempre zero.

    nPriority a prioridade de execuo da tarefa. A prioridade das tarefas varia de 1 (maior) a 127(menor). Mais de uma tarefa podem ter a mesma prioridade.

    ntimeSlicedeve ser sempre zero.

    nMail0SizeanMail3Sizedefinem o nmero mximo de envelopes de mensagens que podem estar emcada uma das quatro caixas postais que uma tarefa pode possuir. A caixa postal 0 a de maior

    prioridade e a 3 a de menor prioridade.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    25/124

    4. Sistema Operacional

    23

    Um exemplo de definio do descritor de uma tarefa aparece a seguir:

    #define PRIOR_TASK 64 /* Prioridade da tarefa */

    #define TAMANHO_PILHA 1200 /* Tamanho da pilha, mltiplo de 16 */unsigned int Pilha [TAMANHO_PILHA]; /* Pilha da tarefa */ void huge TrataAlnetI (void); /* Tarefa */

    static TASKDESCR DescrAlnetI = { /* Descrio da estrutura */TrataAlnetI, /* Ponto de entrada */ 'A', 'L', 'N', 'I', /* Nome da tarefa (4 caractere) */ Pilha + TAMANHO_PILHA, /* Ponteiro para o fim da pilha */

    TAMANHO_PILHA * sizeof (int), /* Tamanho da pilha em bytes */0, /* Atributos da tarefa */

    PRIOR_TASK /* Prioridade da tarefa */ 0, /* Tempo (sempre zero) */

    0, 0, 0, 0 /* Tamanho das caixas postais */ };

    Quando uma tarefa criada dinamicamente, o sistema operacional retorna o identificador da tarefa

    criada para o criador. responsabilidade da aplicao manter este identificador, de modo a poderreferir-se tarefa criada subseqentemente.

    Estados de uma TarefaUma tarefa sempre se encontrar em um dos seguintes estados:

    Inativa: o estado da tarefa quando a mesma criada. Neste estado a tarefa no possui nenhumarequisio pendente a ser atendida.

    Pronta: uma tarefa encontra-se no estado de pronta quando tiver alguma requisio pendente aatender ou estiver pronta a retomar sua execuo aps ter sido interrompida ou estar aguardando.

    Em execuo: a tarefa est sendo executada pelo processador. S possvel uma nica tarefaencontrar-se neste estado a cada instante.

    Em espera: a tarefa encontra-se bloqueada, aguardando a ocorrncia de algum evento.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    26/124

    4. Sistema Operacional

    24

    Incio de uma TarefaOs programas aplicativos carregados no processador AL-2005 so tarefas pr-definidas. Logo que osistema operacional iniciado, na energizao do processador, a memria de usurio varrida embusca de programas aplicativos. Quando um programa aplicativo encontrado, o sistema operacionalcria uma tarefa para este aplicativo e em seguida utiliza a funo StartTaskpara disparar suaexecuo.

    Quando o programa aplicativo inicia sua execuo, o mesmo pode criar novas tarefas atravs dafunoCreateTask, como explicado na seo anterior.

    Qualquer tarefa em execuo pode requisitar a execuo de outra tarefa do sistema, utilizando umaentre trs funes:

    StartTaskdispara a execuo da outra tarefa sem passar nenhuma mensagem

    SendMessageenvia uma mensagem para a outra tarefa

    SendMessageWaitenvia uma mensagem para a outra tarefa e aguarda que a mesma seja recebida eprocessada

    Tarefas que no recebem mensagens e que so portanto iniciadas chamando-se StartTask, devem serescritas como uma funo sem parmetros formais.

    Por exemplo, uma tarefa que se encerra imediatamente seria:

    void far task1 (void){

    }

    StartTaskSendMessage

    tarefa encerradaou interrompida

    no h tarefa emexecuo commaior prioridade

    tarefa encerrada

    ou interrompidaWaitWaitTimeSendMessageWaitWaitSemaphoreWaitEventReserveResource

    evento deinteresse outimeout

    Inativa

    Pronta

    Em execuo

    Em espera

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    27/124

    4. Sistema Operacional

    25

    Tarefas que devem receber uma mensagem (disparadas por SendMessageou SendMessageWait) soescritas como funes que recebem parmetros. Por exemplo, uma funo que recebe um inteirocomo mensagem e ento encerra apareceria como:

    void far task2 (int message){}

    As chamadas das funesSendMessageeSendMessageWaitpassam como parmetro uma mensagemque movida para um envelope. Este envelope inserido ento na caixa postal da tarefa destino, nonvel de prioridade indicado pela chamada.

    Uma tarefa que executa uma chamada funoSendMessageWaitsuspende a si mesma (entra emestado de espera) at que a tarefa sendo chamada receba a mensagem e responda chamada.

    PrioridadeAs prioridades das tarefas so usadas pelo escalonador do sistema operacional para determinar atarefa a ser executada. A qualquer instante sempre estar em execuo a tarefa com a maiorprioridade que estiver capacitada a executar.

    As prioridades das tarefas vo de 1 (maior) a 127 (menor). A prioridade dos programas aplicativoscarregados no processador AL-2005 pr-definida em 64. A prioridade das tarefas criadasdinamicamente definida na sua criao, atravs do camponPrioritydo descritor da tarefaTASKDESCR.

    Se mais de uma tarefa possuir a mesma prioridade, o sistema operacional ir atribuir prioridadesrelativas s diferentes tarefas, de acordo com a ordem cronolgica com que foram criadas, com aprimeira tarefa criada tendo a maior prioridade.

    Uma tarefa pode alterar sua prioridade ou a prioridade de qualquer outra tarefa atravs da funoChangeTaskPriority, mas esta prtica no recomendada.

    Execuo de uma TarefaO sistema operacional dispara uma tarefa fazendo uma chamada FAR para o endereo da funoespecificada no descritor da tarefa quando a mesma criada, no campoTaskProcedure. A tarefasomente ser iniciada se no houver nenhuma outra tarefa de maior prioridade em condies de serexecutada. Portanto uma tarefa somente entra em execuo se todas as outras tarefas de maiorprioridade estiverem inativas ou suspensas por algum motivo.

    Quando uma tarefa inicia sua execuo, tem completo controle sobre o processador. O sistema deinterrupes deve permanecer habilitado a fim de permitir o atendimento das interrupes. Se a tarefanecessitar desabilitar as interrupes por algum motivo, recomenda-se que isto seja feito no menorperodo de tempo possvel a fim de no degradar o tempo de resposta das interrupes.

    Uma tarefa pode executar sem se preocupar com o fato de que ocorrero interrupes e que asmesmas sero atendidas. Se tarefas de maior prioridade ficarem prontas para execuo, a tarefa sersuspensa temporariamente pelo sistema operacional. Quando a tarefa de maior prioridade forsuspensa ou encerrar, o sistema operacional permitir que a tarefa interrompida retome sua execuoa partir do ponto em que foi interrompida.

    Sincronizao de Tarefas e EventosO sistema operacional suporta trs poderosos mecanismos para a sincronizao de eventos. Ogerenciador de semforos fornece semforos contadores com capacidade de enfileiramento e timeout.O gerenciador de eventos pode sincronizar vrios eventos com mais de uma tarefa, oferecendo amelhor soluo para a coordenao de eventos complexos. O sistema operacional oferece uma outraforma simples de sincronizao de tarefas/eventos.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    28/124

    4. Sistema Operacional

    26

    Uma tarefa pode aguardar incondicionalmente por um evento, chamando Wait. Este evento pode serdependente de uma tarefa ou de tempo. A tarefa que est aguardando pelo evento permanecesuspensa incondicionalmente at que outra tarefa execute uma chamada aWakeTask, requisitando aosistema operacional que acorde a tarefa suspensa. O parWait/WakeTask usado para sincronizaesde eventos simples.

    O sistema operacional tambm suporta sincronizao com timeout automtico. Uma tarefa pode

    chamarWaitTime, especificando um intervalo de tempo mximo que deseja aguardar pela ocorrnciade um evento. Se nenhuma outra tarefa executarWakeTaskneste nterim, o sistema operacionalautomaticamente acordar a tarefa ao expirar o intervalo. O sistema operacional passa para a tarefauma indicao da ocorrncia ou no do timeout.

    Uma tarefa tambm pode ser sincronizada a uma outra tarefa atravs da passagem de mensagens.Uma tarefa envia uma mensagem para outra tarefa atravs deSendMessageWait, que fora seu estadode espera. Quando a tarefa destino recebe a mensagem, pode executarWakeCallingTaska fim deacordar a tarefa que lhe enviou a mensagem. Esta tarefa, por sua vez, retomar sua execuo sabendoque sua mensagem j foi recebida pela tarefa destino. Se a tarefa destino no executarWakeCallingTask, o sistema operacional acordar automaticamente a tarefa geradora da mensagemassim que a tarefa destino encerrar.

    Supervisor de Interrupes

    As tarefas executam com o sistema de interrupes do processador habilitado, o que permite aosistema responder a eventos em tempo real.

    Quando ocorre uma interrupo (como de um canal serial, por exemplo), o processador desabilita osistema de interrupes e salva o endereo de retorno e seus flags correntes na pilha da tarefainterrompida, desviando para uma rotina de atendimento da interrupo.

    Em geral, a rotina de atendimento da interrupo salva os registradores que necessita utilizar, atendea interrupo, restaura os registradores, habilita as interrupes e retorna ao programa que estava emexecuo no ponto em que o mesmo foi interrompido.

    O supervisor de interrupes do sistema operacional simplifica a construo de rotinas deatendimento de interrupo...

    Os seguintes servios oferecidos pelo sistema operacional esto associados ao tratamento deinterrupes:

    Tratamentode

    BeginInterrupt Inicia o atendimento de uma interrupo

    interrupes ChangeInterruptHandler Troca a rotina de atendimento de uma dadainterrupo

    EndInterrupt Termina o atendimento de uma interrupoGenerateInterrupt Gera uma interrupo n de software nSetInterrupt Instala um ponteiro de interrupo

    Temporizaes

    Os sistemas de tempo real so caracterizados pela necessidade de fornecer um controle preciso sobretemporizaes. O relgio de hardware do processador AL-2005 fornece a fonte bsica detemporizaes; o sistema operacional fornece o controle sobre seu uso.

    A unidade de tempo do sistema operacional o chamado tick do sistema, que um intervalo detempo fixo derivado do relgio de hardware.

    ATENO:O tick do sistema vale 10 ms.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    29/124

    4. Sistema Operacional

    27

    Uma tarefa pode suspender a si prpria por um intervalo de tempo especfico ( WaitTime). Podetambm aguardar por um evento que deve ocorrer dentro de um intervalo de tempo determinado. Seo evento no ocorrer neste intervalo, a tarefa retoma sua execuo com uma indicao de timeout.

    Uma outra facilidade fornecida pelo sistema operacional, associada a controle de intervalos detempo, so os temporizadores utilizados pelas aplicaes. Uma vez criado, um temporizador pode serdisparado, verificado e parado por qualquer tarefa.

    Os seguintes servios oferecidos pelo sistema operacional esto associados a temporizadores:

    Gerenciamento CreateTimer Cria um temporizadorde StartStopTimer Dispara/para um temporizadortemporizadores TimeConvert Converte milisegundos em ticks do sistema

    ReadTimer L o valor corrente de um temporizadorDeleteTimer Remove um temporizador

    Um temporizador deve ser criado por uma tarefa antes de poder ser utilizado ( CreateTimer). Osistema operacional retorna um identificador do temporizador para a tarefa chamadora, que deve

    guard-lo para futuras referncias. Trs parmetros devem ser especificados na criao de umtemporizador: seu perodo, um ponteiro para uma funo de temporizao, a ser executada quandoesgotar o intervalo de tempo com o qual inicializado no seu disparo, e um parmetro opcional de 32bits, dependente da aplicao.

    O perodo do temporizador, especificado em ticks do sistema, determina se o mesmo peridico ouno. Se o perodo for zero, o temporizador funciona uma nica vez, cada vez que for disparado ,permanecendo inativo at ser novamente disparado. Se o perodo for diferente de zero, otemporizador peridico.

    Sempre que esgota o intervalo de tempo programado em um temporizador, o sistema operacionalexecuta a funo de temporizao associada ao mesmo na sua criao. Esta funo recebe comoparmetros o identificador do temporizador e o parmetro de 32 bits pr-definido na criao do

    temporizador.Quando o temporizador criado, o sistema operacional o coloca em um estado inativo,permanecendo neste estado at ser disparado por uma tarefa (StartStopTimer), que escreve seu valorinicial em ticks do sistema. Por convenincia, a funoTimeConvertpode ser usada para converterum intervalo especificado em milisegundos para o nmero correspondente de ticks do sistema.

    Os temporizadores so contadores decrementais. O sistema operacional decrementa contadores ativos(no zero) at que cheguem a zero. Quando um temporizador encerra sua contagem, o sistema chamaa funo de temporizao associada. Temporizadores no peridicos permanecem inativos a menosque sejam novamente disparados pela funo de temporizao. Temporizadores peridicos soautomaticamente disparados pelo sistema operacional com seus valores pr-definidos assim que afuno de temporizao encerrar sua execuo.

    Quando no houver mais necessidade de um temporizador, o mesmo pode ser removido(DeleteTimer).

    Os seguintes servios podem ser chamados pela funo de temporizao:

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    30/124

    4. Sistema Operacional

    28

    StartTask Dispara a execuo de uma tarefaWakeTask Acorda uma tarefa no estado de esperaSendMessage Dispara uma tarefa pelo envio de uma mensagem

    CreateTimer Cria um temporizadorDeleteTimer Remove um temporizador

    ReadTimer L o valor corrente de um temporizadorStartStopTimer Dispara/para um temporizadorTimeConvert Converte milisegundos em ticks do sistema

    GetBuffer Obtm um buffer de um pool especficoFreeBuffer Libera um buffer

    SignalEvent Sinaliza um ou mais eventos em um grupoSignalSemaphore Sinaliza um semforo

    AddBottomList Acrescenta ao final da listaAddTopList Acrescenta no incio da lista

    GetBottomList Remove do final da listaGetTopList Remove do incio da listaResetList Inicializa uma lista circular

    Mensagens

    As mensagens so usadas para a comunicao entre tarefas cooperantes. Uma tarefa em execuopode requisitar a execuo de uma outra tarefa mediante o envio de uma mensagem. Usualmente aao executada pela tarefa destino variar de acordo com o contedo da mensagem.

    O sistema operacional tem a capacidade de enfileirar requisies para execuo de tarefas,permitindo com que mensagens associadas s requisies sejam empilhadas em caixas postais deuma forma controlada. Isto libera a tarefa requisitora a continuar com seu prprio processamento.

    Alternativamente, a tarefa requisitora pode suspender a si mesma at que a tarefa chamada tenhaexecutado em resposta requisio.

    A tarefa requisitora pode enfileirar mensagens em at quatro nveis de prioridade. A tarefa destinopode portanto receber mensagens de um nmero qualquer de chamadores com as mensagens jordenadas por prioridade pelo sistema operacional.

    O projetista de uma aplicao descreve a necessidade exata de caixas postais de cada tarefa para osistema operacional atravs da estrutura de descrio da tarefa. Para cada tarefa possvel especificarquais dos quatro nveis de prioridade so suportados, caso qualquer um deles for necessrio. Almdisto especifica-se tambm o nmero de mensagens possvel em cada uma destas caixas postais.

    O gerenciamento de caixas postais fornece o seguinte conjunto de servios:

    Gerenciamento GetMailboxMessage Obtm a mensagem de maior prioridadede caixas SendMessage Inicia uma tarefa pelo envio de uma mensagempostais SendMessageWait Inicia uma tarefa pelo envio de uma mensagem

    aguardando at que a tarefa receba a mensagem

    Uma tarefa pode enviar uma mensagem para uma outra tarefa usando as funes SendMessageouSendMessageWait.

    Uma mensagem contm no mximo 12 bytes, totalmente dependentes da aplicao.

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    31/124

    4. Sistema Operacional

    29

    Exemplo:

    char c;

    int i;int iarray[6];char carray[12];

    struct msg { char m1;char m2;int m3;

    long m4;} msga;

    As seguintes chamadas enviaro as mensagens especificadas para a tarefa cujo identificador taskid,com uma prioridadepriority:

    SendMessage (taskid, priority, &c); /* Envia c */

    SendMessage (taskid, priority, &i); /* Envia i */ SendMessage (taskid, priority, iarray); /* Envia iarray */SendMessage (taskid, priority, carray); /* Envia carray */SendMessage (taskid, priority, &msga); /* Envia msga */

    O chamador especifica a prioridade prioritycom a qual a mensagem deve ser enviada. O nvel daprioridade (0 - maior, 1, 2 ou 3 - menor) determina a caixa postal na qual a tarefa chamada receber amensagem. O chamador identifica tambm a tarefa sendo chamada, especificando o seu identificadortaskid.

    O chamador pode suspender sua execuo at que a tarefa chamada tenha sido executada em resposta requisio usandoSendMessageWait, ao invs deSendMessage.

    O sistema operacional usa envelopes de mensagens para a passagem de mensagens. O sistema obtmum ponteiro para um envelope livre, move os parmetros da mensagem para o envelope e insere oponteiro na caixa postal da tarefa destino, no nvel de prioridade especificado. Portanto, logo aps oretorno da chamada deSendMessage, os parmetros da mensagem j encontram-se livres parareutilizao.

    Ao receber a mensagem, a tarefa destino disparada em seu endereo inicial pelo sistemaoperacional. A mensagem de 12 bytes retirada do envelope, copiada para a pilha da tarefa e oenvelope automaticamente liberado. Os parmetros da mensagem recebida pela tarefa destinoencontram-se exatamente na mesma ordem com a qual foram enviados.

    Uma tarefa que recebe uma grande variedade de mensagens deve declarar uma unio a fim de se

    referir a diferentes tipos de mensagens:

    union rmsg { char c;int i;int iarray[6];

    char carray[12];struct msg msga;

    };

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    32/124

    4. Sistema Operacional

    30

    A tarefa pode ser escrita como:

    void huge taskn (char c) /* declarao de parmetro fantasma */{

    union rmsg *pmsg;

    pmsg = (union rmsg *)&c; /* ponteiro para a mensagem recebida */::

    A mensagem recebida pode aqui ser acessada, usando o ponteiro pmsg.:

    }

    Neste exemplo, a tarefa que recebe mensagens no tem uma forma bvia de determinar como amensagem deve ser interpretada, isto , se apenas um caracter ou a estrutura pmsg->msgainteira.Esta questo normalmente resolvida com a incluso de um cdigo de operao no incio de cadamensagem.

    Gerenciadores

    O sistema operacional fornece um conjunto de gerenciadores para simplificar a sincronizao deeventos, manipulao de recursos e alocao de memria.

    RecursosO gerenciador derecursospermite o acesso controlado a recursos definidos pelo usurio (como umaregio de memria, por exemplo), isto , torna possvel o compartilhamento de recursos entre tarefasque executam concorrentemente. Utiliza um semforo binrio para limitar o acesso a cada recurso auma nica tarefa de cada vez. A posse e a liberao de um recurso governada por chamadas ao

    gerenciador de recursos. O gerenciador de recursos oferece a caracterstica nica de identificar atarefa proprietria de cada recurso, que a nica que tem permisso para liber-lo.

    O gerenciador de recursos difere do gerenciador de semforos de duas formas. No existeenfileiramento de prioridades. As tarefas esperam um recurso na base de que a primeira a requisitar a primeira a ser atendida (first come, first served). No existe timeout. Uma tarefa aguardarincondicionalmente at que o recurso esteja disponvel para seu uso privativo.

    Alm disto, diferentemente dos semforos, a posse de um recurso est amarrada a uma tarefaespecfica. Apenas a tarefa que dona de um recurso pode sinalizar sua liberao. No possvel quemais de uma tarefa compartilhe a posse de um recurso em particular

    O gerenciador de recursos oferece o seguinte conjunto de servios:

    Gerenciamento CreateResource Cria um recursode recursos ReserveResource Reserva um recurso

    ReleaseNestedResource Libera um recurso (aninhado)ReleaseResource Libera um recurso (incondicionalmente)DeleteResource Remove um recurso

    Um recurso deve ser criado por uma tarefa antes que possa ser utilizado (CreateResource). Cadarecurso controlado pelo gerenciador de recursos tem um limite mximo, definido pelo usurio, donmero de tarefas que podem aguardar por ele.

    Uma tarefa requisita a posse de um recurso atravs da reserva do recurso (ReserveResource). Se orecurso estiver disponvel, a tarefa tem assegurado imediatamente a posse do recurso. Se o recurso

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    33/124

    4. Sistema Operacional

    31

    no estiver disponvel, a tarefa colocada no final de uma lista de tarefas que esto aguardando poraquele recurso. Uma tarefa que j possui um recurso pode reserv-lo novamente, resultando em umareserva aninhada.

    Quando a tarefa que correntemente possui o recurso liber-lo, o recurso ser dado tarefa que estiverh mais tempo aguardando por ele. A tarefa que possui o recurso deve liber-lo uma vez para cadareserva aninhada que tenha realizado (ReleaseNestedResource) ou o recurso pode ser

    incondicionalmente liberado (ReleaseResource).Se um recurso no necessita mais ser compartilhado, uma tarefa pode remov-lo (DeleteResource).

    SemforosO gerenciador desemforosfornece semforos contadores de uso geral com enfileiramento deprioridades e timeout, que fornecem facilidades de sincronizao entre tarefas executadasconcorrentemente.

    Em um ambiente multitarefa, freqentemente necessrio que uma tarefa ganhe acesso mutuamenteexclusivo a recursos crticos. O recurso pode ser uma regio de cdigo ou uma funo no-reentrante(e portanto no compartilhvel). Um semforo pode ser usado para assegurar o acesso mutuamenteexclusivo das tarefas a recursos crticos. Um semforo tambm pode ser usado para controlar aalocao de recursos escassos.

    E. W. Dijkstra introduziu duas operaes primitivas para controlar o acesso exclusivo a recursoscrticos. As primitivas abstratas, chamadas de operadores P e V, operam sobre uma varivel chamadasemforo. Muitas variaes destes operadores P e V foram implementadas deste sua introduoinicial. O gerenciador de semforos fornece uma variao conhecida como semforo contador aoqual acrescentado o enfileiramento de prioridades e timeout automtico.

    O gerenciador de semforos fornece o seguinte conjunto de servios:

    Gerenciamento CreateSemaphore Cria um semforode semforos WaitSemaphore Aguarda por um semforo (timeout opcional)

    SignalSemaphore Sinaliza um semforoDeleteSemaphore Remove um semforo

    Um nmero qualquer de semforos definidos pelo usurio podem ser criados (CreateSemaphore). Aoser criado, deve-se especificar sua contagem inicial e o nmero mximo de tarefas que podemaguardar por ele. Quando usado para excluso mtua, o valor inicial do semforo deve ser 1. Se osemforo for inicializado com um valor n, pode ser usado para controlar o acesso anrecursos de umdeterminado tipo. Se o tamanho mximo da fila de espera pelo semforo for igual a zero, no serpermitido a nenhuma tarefa aguardar pelo semforo se o recurso controlado por ele j estiver sendoutilizado.

    Uma tarefa que deseja ganhar o controle de um semforo ou utilizar um dos recursos gerenciados porele requisita ao gerenciador de semforos a concesso do mesmo (WaitSemaphore). Deve especificara prioridade com que deseja aguardar, caso o semforo no esteja imediatamente disponvel. A tarefaser inserida em uma fila de espera pelo semforo na prioridade especificada. Desta forma, tarefasque necessitam de maior prioridade no acesso a um recurso podem preemptar tarefas com prioridadede espera menor. A tarefa pode opcionalmente especificar o intervalo de tempo mximo, ou timeout,de espera, limitando desta forma o tempo que tem para aguardar pela liberao do semforo para seuuso. Uma tarefa somente entrar em espera pelo semforo caso a fila de espera do mesmo no seencontre cheia no momento da requisio.

    Quando a tarefa encerra com sua utilizao do recurso, sinaliza sua liberao (SignalSemaphore). Ogerenciador de semforos libera o recurso e verifica a fila de espera, sempre garantindo o acesso aosemforo tarefa que estiver no topo da fila. Se esta tarefa for de maior prioridade do que a tarefaque est liberando o recurso, ocorrer um chaveamento de tarefas, dando tarefa de maior prioridade

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    34/124

    4. Sistema Operacional

    32

    uma oportunidade imediata de utilizar o recurso. Caso a tarefa para a qual se concede o recurso for demenor prioridade do que a tarefa que o est liberando, a nova proprietria ter de aguardar at que atarefa correntemente em execuo renuncie ao controle do processador.

    Se expirar o intervalo de timeout especificado pela tarefa, enquanto a mesma estiver aguardando porum semforo, o gerenciador de semforos remove-a da fila do semforo e permite com que elaretome sua execuo com uma indicao de timeout.

    Quando no se necessitar mais de um semforo, o mesmo pode ser removido (DeleteSemaphore).

    EventosO gerenciador deeventosfornece um mtodo conveniente para sincronizar uma ou mais tarefas aeventos detectados por outras tarefas. Uma tarefa pode requisitar ao gerenciador de eventos quesuspenda sua operao at que um entre um conjunto de eventos ocorra. Alternativamente a tarefapode pedir para esperar at que um conjunto completo de eventos ocorra. Opcionalmente a tarefapode especificar um intervalo de timeout limitando o tempo que ficar aguardando pelo evento. Maisde uma tarefa podem estar aguardando por um evento ou conjunto de eventos.

    Quando uma tarefa detecta a ocorrncia de um evento, sinaliza o evento atravs de uma chamada aogerenciador de eventos. O gerenciador de eventos verifica se o evento resultou em uma combinaode eventos para a qual uma ou mais tarefas esto aguardando. Se isto ocorrer, as tarefas queestiverem aguardando so liberadas para retomar sua execuo.

    O gerenciador de eventos fornece o seguinte conjunto de servios:

    Gerenciamento GetEventGroup Obtm o uso de um grupo de eventosde eventos WaitEvent Aguarda evento(s) em um grupo (timeout opcional)

    SignalEvent Sinaliza um ou mais eventos em um grupoFreeEventGroup Libera um grupo de eventos

    Cada grupo de eventos inclui 16 flags de evento. Cada evento de um grupo representado por umflag booleano que constitui o estado do evento. Os 16 flags booleanos de evento so representadosem uma palavra de 16 bits. Recomenda-se que os estados booleanos 0 e 1 sejam usados comoindicadores de falso e verdadeiro, respectivamente. O estado zero representa portanto a ausncia doevento. O estado um indica que o evento ocorreu.

    Antes de poder ser utilizado, um grupo de eventos deve ser adquirido por uma tarefa(GetEventGroup). O gerenciador de eventos aloca um grupo de eventos e retorna um identificador dogrupo para a tarefa chamadora, que deve guard-lo para futuras referncias. Ao adquirir um grupo deeventos, a tarefa deve especificar o valor inicial que cada um dos 16 eventos de um grupo devemassumir. A atribuio de eventos especficos a cada um dos flags de um grupo de eventos fica acritrio do projetista.

    Uma vez adquirido, um grupo de eventos pode ser usado para sincronizar tarefas a qualquer um dos16 eventos que representa. Uma tarefa pode aguardar por um evento ( WaitEvent), opcionalmenteespecificando um intervalo de tempo mximo no qual permanecer aguardando pelo evento. Sedesejar aguardar por mais de um evento, todos estes eventos devem estar contidos em um mesmogrupo.

    Ao aguardar por eventos, a tarefa deve especificar o identificador do grupo de eventos desejado, umamscara de 16 bits que identifica os eventos de interesse e um valor de 16 bits indicando o estado deinteresse para cada um dos eventos selecionados. Especifica tambm um entre dois critrios a seremusados na deteco de eventos. A tarefa pode aguardar que qualquer um dos eventos selecionados nogrupo atinja o estado especificado ou, alternativamente, que todos os eventos selecionados sejamiguais aos respectivos estados especificados.

    Quando uma tarefa gera uma mudana de estado em um evento, sinaliza o evento (SignalEvent),especificando o identificador do grupo que contm o evento desejado. Mais de um evento podem ser

  • 7/25/2019 AL-2005_PROCESSADOR.pdf

    35/124

    4. Sistema Operacional

    33

    sinalizados de uma nica vez. Para tanto deve-se especificar uma mscara de 16 bits identificando oseventos particulares do grupo e um valor de 16 bits especificando o novo estado de cada um doseventos selecionados.

    Sempre que um evento sinalizado, o gerenciador de eventos determina se alguma tarefa estaguardando por eventos daquele grupo. Em caso afirmativo, verifica se o novo estado dos 16 flags deevento est de acordo com o critrio de deteco desejado pela tarefa. Se isto ocorrer, a tarefa

    acordada pelo gerenciador de eventos. Se no houver nenhuma outra tarefa de maior prioridade emexecuo, esta tarefa retomar imediatamente sua execuo, com uma indicao de que acombinao de eventos que estava aguardando ocorreu.

    Se no houver mais necessidade de um grupo de eventos, o mesmo pode ser removido(FreeEventGroup).

    BuffersO gerenciador debuffersfornece acesso rpido e eficiente a mltiplos conjuntos (pools) de buffers,onde cada buffer representa um bloco de tamanho fixo de memria. Esta forma de gerenciamento dememria vem ao encontro de aplicaes em tempo real nas quais a disponibilidade de reas dememria deve ser previsvel e nas quais no se pode tolerar fragmentao de memria.

    O gerenciador de buffers fornece o seguinte conjunto de servios:

    Gerenciamento AddBufferUseCount Incrementa contador de uso de um bufferde buffers CreateBufferPool Cria um pool de buffers

    DeleteBufferPool Remove um pool de buffersFreeBuffer Libera um bufferGetBuffer Obtm um buffer de um pool especficoGetBufferSize Obtm o tamanho de um bufferResetBufferPool Inicializa um pool de buffers especficoResetBufferPools Inicializa todos os pools de buffers pr-definidos

    Um pool de buffers consiste de um nmero qualquer de buffers de tamanho uniforme. Qualquertamanho par de buffer, maior do que dois bytes e menor do que o limite de 64K de um segmento dememria permitido. Todos os buffers em um pool devem residir no mesmo segmento de memria.

    Um pool de buffers deve ser criado por uma tarefa (CreateBufferPool) antes de poder ser utilizado. Ogerenciador de buffers retorna um identificador do pool para a tarefa chamadora, que deve guard-lopara futuras referncias. Ao criar um pool de buffers deve-se especificar trs parmetros: o nmerode buffers no pool, o tamanho de cada buffer e um ponteiro para a rea de memria RAM ondeficaro localizados todos os buffers do pool. Esta rea de memria subdividida pelo gerenciador debuffers no nmero de buffers requisitado.

    Todos os buffers no pool so encadeados atravs de uma lista de buffers livres e cada buffer tem

    associado a si um contador de uso, inicializado com zero para mostrar que no est sendo utilizado.Estas duas informaes so mantidas internamente ao gerenciador de buffers.

    Depois que um pool foi criado, pode-se obter um buffer do pool ( GetBuffer). O gerenciador debuffers retira um buffer da lista de buffers livres, incrementa o contador de uso associado ao buffer eretorna um ponteiro para o primeiro byte do buffer. Pode-se ento armazenar e recuperar dados destebuffer conforme o desejado.

    Quando no se necessita mais de um buffer, o mesmo pode ser liberado ( FreeBuffer). O buffer a serliberado identificado pelo ponteiro para seu primeiro byte, o mesmo que foi recebido quando obuffer foi adquirido. O gerenciador de buffers decrementa o contador de uso e se a contagem chegara zero, o buffer novamente encadeado lista de buffers livres do pool ao qual pertence.

    Uma vez adquirido um buffer, possvel incrementar seu contador de utiliza