Na fase de debugging procede-se à análise dos problemas encontrados na execução do código ou quando do teste do programa. A utilização deste tipo de programas permite que o tempo de desenvolvimento do projeto seja consideravelmente reduzido. As principais ferramentas de debugging disponíveis são os simuladores, os monitores e os emuladores. Todas estas ferramentas permitem o recurso a duas técnicas muito utilizadas no debugging de programas designadas de program trace e breakpoints. A técnica de program trace permite a execução de uma instrução de cada vez, sendo possível analisar os dados passo a passo. Esta técnica tem a desvantagem de ser bastante lenta. Os breakpoints permitem a execução de uma seqüência de instruções até ao aparecimento de um breakpoint. O breakpoint pára a execução do programa permitindo a análise do conteúdo dos registradores relevantes. A combinação destas duas técnicas permite detectar de modo mais
ápido eventual de erros no projeto. r
16.2.1- Simuladores
Os simuladores são programas que correm normalmente num PC e simulam a operação do microcontrolador, permitindo a análise da execução do programa. Os simuladores permitem a visualização do conteúdo dos registradores mais importantes da arquitetura e o conteúdo das posições de memória de dados interna. Estes programas são indicados para o teste das partes do programa relacionadas com cálculos e condições de salto. Por outro lado os simuladores não são indicados quando é necessário testar o funcionamento de blocos de
hardware como os temporizadores, portas E/S ou porta série, pois esses blocos
interagem com sinais externos que, quando muito, podem ser simulados por
software não tendo em conta as especificações temporais a eles associadas. Pelas
razões enunciadas os simuladores não são indicados para o teste de situações de E/S nem de interrupções. Nestes programas o código a testar não é executado a uma velocidade igual à do sistema real. Os simuladores são as ferramentas de
debugging menos dispendiosas, mas são também as mais limitadas.
16.2.2- Monitores
Os programas monitores utilizam o sistema alvo como ferramenta de debugging, associado ao PC que é utilizado para a visualização do processo. A ligação entre o sistema alvo e o PC é normalmente feita através de uma porta série, dedicada a esta função. O programa monitor é carregado no sistema alvo e permite a carga, a execução e a monitorização do programa a testar. Esta técnica utiliza alguns dos recursos do sistema alvo. O modo como os monitores funcionam implica que o espaço de memória de dados e o espaço de memória de código sejam sobrepostos para permitir que o monitor escreva na memória de código quando é feita a carga do programa a testar para o sistema alvo. Por outro lado o código a testar não fica colocado no endereço de start-up (0000H), o que pode levar à necessidade de alterar o programa a testar de modo a adaptar-se às circunstâncias de teste, o que não vai corresponder à situação de execução normal do programa final.
Como vantagens os programas monitores apresentam a característica de promover a análise do sistema enquanto o programa é executado à velocidade real e o fato de ser possível testar todo o tipo de situações uma vez que o teste é feito no sistema alvo permitindo a interação com o hardware circundante. Em termos de custo os monitores são mais dispendiosos do que os simuladores, mas menos dispendiosos do que os emuladores.
Colégio Técnico de Campinas – Cotuca – Disciplina - TDM II
16.2.3- Emuladores
Um emulador é um bloco de hardware que é colocado no sistema alvo e permite a execução e monitorização da operação do programa a testar. Estes sistemas permitem o desenvolvimento de código com capacidade de debugging que corre no
hardware do sistema alvo. Para o teste é utilizado o ambiente real do sistema
alvo. Esta ferramenta não utiliza as capacidades do sistema alvo podendo o programa a testar ser executado normalmente. O programa é executado à velocidade normal. Os emuladores utilizam as capacidades de E/S do sistema real podendo testar todo o tipo de situações. Não é necessário proceder a alterações do código para efeito de teste. Existem vários tipos de emuladores no mercado. A única desvantagem da utilização destes sistemas prende-se com o seu custo que é extremamente elevado.
17- Desenvolvimentos de programas em assembly
Genericamente no projeto de software recomenda-se uma abordagem top-down em que o desenvolvimento se faz por fases, começando pela compreensão do problema, seguida da divisão do projeto em blocos distintos, depois o projeto de cada bloco, subdividindo-o em diferentes níveis, tendo sempre em conta que se devem adiar os detalhes para níveis mais baixos do desenvolvimento e que é necessário assegurar a correção de cada nível.
O processo de desenvolvimento de software em assembly apresenta as suas particularidades sendo recomendadas as seguintes fases: concepção, codificação e teste. Na fase de concepção efetua-se o estudo do problema e elabora-se a proposta de solução modular, tendo em conta que o módulo ideal executa uma única função. Na fase de codificação procede-se à escrita do código em assembly. A fase de teste inicia-se com o teste de cada módulo individualmente e depois do teste do sistema global.
Em todas as fases é particularmente importante a documentação do projeto de modo a que o trabalho desenvolvido possa ser facilmente analisado.
Como método para o desenvolvimento dos programas propõe-se a utilização da técnica de programação estruturada segundo a qual qualquer programa pode ser descrito recorrendo a três estruturas base: seqüência, decisão e repetição. Essas estruturas básicas pode ser representadas em pseudo-código do modo seguinte: Seqüência: BEGIN: ... ... END Decisão: IF (condição) THEN ... ELSE ... Repetição: WHILE (condição) DO ... ou DO ... WHILE (condição)
Colégio Técnico de Campinas – Cotuca – Disciplina - TDM II
Estas estruturas podem ser utilizadas para descrever o algoritmo do programa ou módulo antes da sua codificação em assembly. Do mesmo modo podem utilizar-se fluxogramas com o mesmo objetivo. Os fluxogramas apresentam a vantagem de ser uma técnica gráfica que permite a rápida apreensão do fluxo do programa. Na figura 46 são apresentados os símbolos correspondentes às estruturas base propostas, que se utilizam na construção de um fluxograma.
Figura 46- Símbolos usados na construção de fluxogramas. Para finalizar apresenta-se um exemplo de aplicação.
1- Escreva um programa que calcule 1+2+3+...+N, em que N=20, e guarde o resultado no endereço 40H. O fluxograma do programa a desenvolver encontra-se representado na figura 47. Como se pode ver na figura o fluxo do programa e as operações a efetuar são facilmente perceptíveis.
Colégio Técnico de Campinas – Cotuca – Disciplina - TDM II
Codificação do programa:
N EQU 20 ; limite de contagem
i SET R0 ; utilizar R0 como contador i MOV i,#0 ; inicializar i
CLR A ; inicializar sum repetir:
INC i ADD A,i
CJNE i,#N,repetir ; saltar se i não for igual a N
MOV 40H,A ; guardar soma em memória
END
Bibliografia
[1] MCS51 Microcontroller Family User’s Guide, Intel, 1994.
[2] Using the MCS-51 Microcontroller, Han-Way Huang, Oxford University Press, 2000.
[3] Design with Microcontrollers, John B. Peatman, McGraw-Hill, 1988. [4] C and the 8051, Thomas W. Schultz, Prentice Hall, 1998.